|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.waveset.util.XmlObjectFactory
A class that provides factory methods to create Object instances from XML and serialize objects to XML. This includes the maintenance of a global registry element and class handlers that can be dynamically extended.
The class is declared abstract as it is not intended to be instantiated, all methods are static.
Field Summary | |
static java.lang.String |
CLASS_ATTRIBUTE
The name of the attribute we recognize as the instantiation class override if it isn't the element name. |
static java.lang.String |
code_id
|
static java.lang.String |
DEFAULT_PACKAGE
The default package name we'll use to locate implementation classes for element tag names. |
static java.lang.String |
OLD_CLASS_ATTRIBUTE
Attribute.CLASS ("class") was the original CLASS_ATTRIBUTE. |
static java.lang.String |
REF_ADDR_TYPE
|
static java.lang.String |
WRAPPER_ELEMENT
The standard wrapper element we put around objects so we don't have to know the element name to build the surrounding XML. |
Constructor Summary | |
XmlObjectFactory()
|
Method Summary | |
static java.lang.Object |
clone(java.lang.Object src)
Clone an XmlObject. |
static java.lang.Object |
create(org.w3c.dom.Element element)
Build a Object from a DOM Element. |
static java.lang.Object |
create(java.lang.String xml)
Build an Object from an XML string. |
static java.lang.Object |
create(java.lang.String xml,
boolean validate)
Build an Object from an XML string. |
static java.util.List |
createList(org.w3c.dom.Element element)
Build a list of objects. |
static java.lang.Object |
createWrappered(org.w3c.dom.Element element)
Build a Object from a DOM Element. |
static void |
dump(java.lang.Object obj)
|
static void |
dumpFile(java.lang.Object obj,
java.lang.String file)
Serialize any XmlObject to a file. |
java.lang.Object |
getObjectInstance(java.lang.Object obj,
javax.naming.Name name,
javax.naming.Context nameCtx,
java.util.Hashtable environment)
|
java.lang.Object |
getObjectInstance(java.lang.Object obj,
javax.naming.Name name,
javax.naming.Context nameCtx,
java.util.Hashtable environment,
javax.naming.directory.Attributes attrs)
|
static javax.naming.Reference |
getReference(java.lang.Object o)
|
static boolean |
isXmlObject(java.lang.String name)
Test to see if a name would be a valid XmlObject element name. |
protected static void |
println(java.lang.Object o)
Ubiquitous macro. |
static void |
register(java.lang.String elementName,
java.lang.String className)
Register an element-to-class mapping. |
static void |
register(XmlObjectHandler handler)
Register a handler object. |
static java.lang.String |
toXml(java.lang.Object obj)
Serialize an arbitrary object into an XML string. |
static void |
toXml(java.lang.StringBuffer b,
int indent,
java.lang.Object obj)
Serialize an arbitrary object into an XML buffer. |
static void |
toXml(java.lang.StringBuffer b,
int indent,
java.lang.String wrapper,
java.lang.Object obj)
Serialize an arbitrary object into an XML buffer, wrapped by another element. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final java.lang.String code_id
public static final java.lang.String DEFAULT_PACKAGE
This is a bit kludgey, since its a package we're not in, but I want to keep the class down in util so we can use it here. To make this more general we could get the deafult package from a properties file or the environment.
public static final java.lang.String WRAPPER_ELEMENT
public static final java.lang.String CLASS_ATTRIBUTE
public static final java.lang.String OLD_CLASS_ATTRIBUTE
public static final java.lang.String REF_ADDR_TYPE
Constructor Detail |
public XmlObjectFactory()
Method Detail |
public static java.lang.Object create(java.lang.String xml) throws WavesetException
WavesetException
public static java.lang.Object create(java.lang.String xml, boolean validate) throws WavesetException
Validation against the DTD can be controlled with the
validate
argument. Normally this is off for performance,
but in some contexts you may want it on.
WavesetException
public static java.lang.Object create(org.w3c.dom.Element element) throws WavesetException
WavesetException
public static java.lang.Object createWrappered(org.w3c.dom.Element element) throws WavesetException
WavesetException
public static java.util.List createList(org.w3c.dom.Element element) throws WavesetException
WavesetException
public static java.lang.Object clone(java.lang.Object src) throws WavesetException
WavesetException
public static boolean isXmlObject(java.lang.String name)
public static void toXml(java.lang.StringBuffer b, int indent, java.lang.Object obj)
The object is usually an XmlObject, but we also handle arbitrary objects, provided there is an XmlObjectHandler registered for this class.
public static void toXml(java.lang.StringBuffer b, int indent, java.lang.String wrapper, java.lang.Object obj)
public static java.lang.String toXml(java.lang.Object obj)
public static void dumpFile(java.lang.Object obj, java.lang.String file)
public static void dump(java.lang.Object obj)
public static void register(java.lang.String elementName, java.lang.String className)
It would be nice if we could pass the Class here, but I'm not sure "this" is accessible from static initializers, experiment...
Have to avoid throwing here, since we're going to be called from static initializers which I don't think can throw?
Registrations of this form go only in the _constructors map, we don't need a _serializers entry since the object is normally an XmlObject, and we can get the serializer through that interface.
public static void register(XmlObjectHandler handler)
Use this if you want to support construction and serialization of things that aren't XmlObjects, or need more control.
public java.lang.Object getObjectInstance(java.lang.Object obj, javax.naming.Name name, javax.naming.Context nameCtx, java.util.Hashtable environment) throws java.lang.Exception
getObjectInstance
in interface javax.naming.spi.ObjectFactory
Required in order to implement
JNDI ObjectFactory
.
java.lang.Exception
public java.lang.Object getObjectInstance(java.lang.Object obj, javax.naming.Name name, javax.naming.Context nameCtx, java.util.Hashtable environment, javax.naming.directory.Attributes attrs) throws java.lang.Exception
getObjectInstance
in interface javax.naming.spi.DirObjectFactory
Required in order to implement
JNDI DirObjectFactory
.
java.lang.Exception
public static javax.naming.Reference getReference(java.lang.Object o) throws javax.naming.NamingException
Reference
to an object
if XmlObjectFactory
can serialize and deserialize it;
otherwise null
.
A Reference
can be bound into any JNDI Service Provider.
javax.naming.NamingException
protected static void println(java.lang.Object o)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |