|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.tangosol.io.pof.ConfigurablePofContext
public class ConfigurablePofContext
This class implements the PofContext
interface using information
provided in a configuration file (or in a passed XML configuration).
<pof-config> <user-type-list> .. <user-type> <type-id>53</type-id> <class-name>com.mycompany.data.Trade</class-name> <serializer> <class-name>com.tangosol.io.pof.PortableObjectSerializer</class-name> <init-params> <init-param> <param-type>int</param-type> <param-value>{type-id}</param-value> </init-param> </init-params> </serializer> </user-type> <user-type> <type-id>54</type-id> <class-name>com.mycompany.data.Position</class-name> </user-type> .. <include>file:/my-pof-config.xml</include> .. </user-type-list> <allow-interfaces>false</allow-interfaces> <allow-subclasses>false</allow-subclasses> </pof-config>For each user type, a user-type element must exist inside the user-type-list element. The user-type-list element contains up to three elements, in the following order:
PortableObjectSerializer
implementation is used.setConfig
method is
invoked, and it is passed the parameter XML information, transposed as
described by transformInitParams
, and
as described in the pof-config.dtd file.
Finally, if the PofSerializer implements the ClassLoaderAware interface and
a ClassLoader has been specified, then the
setContextClassLoader
method
is invoked with the reference to the specified ClassLoader.
Conceptually, the identity of a ConfigurablePofContext is a combination of
a configuration locator and a ClassLoader. The ClassLoader is used to
resolve and load the configuration details whose location is specified by
the configuration locator, and to load all of the classes specified by the
configuration. To achieve acceptable performance, and to limit the
redundant use of resources, the ConfigurablePofContext maintains a
WeakHashMap keyed by ClassLoader, whose corresponding values are each a
WeakHashMap keyed by configuration locator, whose corresponding values
contain the data necessary to efficiently perform the operations prescribed
by the PofContext interface.
Note: The configuration for the default
constructor
can be specified using the
tangosol.pof.config
system property.
Nested Class Summary | |
---|---|
protected static class |
ConfigurablePofContext.PofConfig
The information related to the configuration of a particular PofContext for a specific URI and ClassLoader. |
Field Summary | |
---|---|
static String |
DEFAULT_RESOURCE
The name of the application resource that contains the default set of wire-format-to-object bindings. |
static String |
PROPERTY_CONFIG
The name of the system property ("tangosol.pof.config") that can be used to override the location of the default POF configuration file. |
Constructor Summary | |
---|---|
ConfigurablePofContext()
Default constructor. |
|
ConfigurablePofContext(String sLocator)
Create a ConfigurablePofContext that will load configuration information from the specified locator. |
|
ConfigurablePofContext(XmlElement xml)
Create a ConfigurablePofContext that will use the passed configuration information. |
Method Summary | |
---|---|
protected void |
checkNotInitialized()
Verify that the ConfigurablePofContext has not already been initialized. |
protected ConfigurablePofContext.PofConfig |
createPofConfig()
Create a PofConfig object based on a configuration that was either provided as XML, or can be loaded from the specified (or default) URI using the provided ClassLoader. |
Object |
deserialize(ReadBuffer.BufferInput in)
Deserialize an object from a ReadBuffer by reading its state using the specified BufferInput object. |
protected void |
ensureInitialized()
Fully initialize the ConfigurablePofContext if it has not already been initialized. |
Class |
getClass(int nTypeId)
Determine the class associated with the given user type identifier. |
String |
getClassName(int nTypeId)
Determine the name of the class associated with the given user type identifier. |
XmlElement |
getConfig()
Determine the current configuration of the object. |
protected String |
getConfigLocation()
Obtain the location of the configuration that the ConfigurablePofContext used to configure itself. |
ClassLoader |
getContextClassLoader()
Retrieve the context ClassLoader for this object. |
protected ConfigurablePofContext.PofConfig |
getPofConfig()
Obtain the PofConfig that represents the initialized state of the ConfigurablePofContext. |
PofSerializer |
getPofSerializer(int nTypeId)
Return a PofSerializer that can be used to serialize and deserialize an object of the specified user type to and from a POF stream. |
int |
getUserTypeIdentifier(Class clz)
Determine the user type identifier associated with the given class. |
int |
getUserTypeIdentifier(Object o)
Determine the user type identifier associated with the given object. |
int |
getUserTypeIdentifier(String sClass)
Determine the user type identifier associated with the given class name. |
protected int |
getUserTypeIdentifierInternal(Class clz)
Determine the user type identifier associated with the given class. |
protected int |
getUserTypeIdentifierInternal(String sClass)
Determine the user type identifier associated with the given class name. |
protected void |
initialize()
Bind the ConfigurablePofContext to a ClassLoader, resolving all class names, etc. |
protected boolean |
isInitialized()
Determine if the ConfigurablePofContext has completed its initialization. |
protected boolean |
isInterfaceAllowed()
Determine if the ConfigurablePofContext supports the configuration of user types by specifying an interface (instead of a class) for the Java type. |
protected boolean |
isSubclassAllowed()
Determine if the ConfigurablePofContext supports the serialization of an object that is an instance of a sub-class of a configured type, but not actually an instance of a class of a configured type. |
boolean |
isUserType(Class clz)
Determine if the given class is a user type known to this PofContext. |
boolean |
isUserType(Object o)
Determine if the given object is of a user type known to this PofContext. |
boolean |
isUserType(String sClass)
Determine if the class with the given name is a user type known to this PofContext. |
protected Class |
loadClass(String sClass)
Find the specified class, return a Java Class object for it. |
protected URL |
loadResource(String sURI)
Find the specified resource, returning a URL for it. |
protected RuntimeException |
report(String sURI,
int nTypeId,
String sClass,
Throwable e,
String sText)
Assemble and throw an informative exception based on the passed details. |
void |
serialize(WriteBuffer.BufferOutput out,
Object o)
Serialize an object to a WriteBuffer by writing its state using the specified BufferOutput object. |
void |
setConfig(XmlElement xml)
Specify the configuration for the object. |
void |
setContextClassLoader(ClassLoader loader)
Specify the context ClassLoader for this object. |
Field Detail |
---|
public static final String PROPERTY_CONFIG
public static final String DEFAULT_RESOURCE
tangosol.pof.config
system property.
Constructor Detail |
---|
public ConfigurablePofContext()
DEFAULT_RESOURCE
.
public ConfigurablePofContext(String sLocator)
sLocator
- the locator that specifies the location of the
PofContext configuration file; the locator is either
a valid path or a URLpublic ConfigurablePofContext(XmlElement xml)
xml
- an XmlElement containing information in the format of a
configuration file used by ConfigurablePofContextMethod Detail |
---|
public XmlElement getConfig()
Note that the configuration will not be available unless the
ConfigurablePofContext was constructed with the configuration, the
configuration was specified using the XmlConfigurable
interface, or the ConfigurablePofContext has fully initialized itself
(which does not occur until a ClassLoader is provided, or an attempt is
made through the ConfigurablePofContext to serialize or deserialize a
POF object, whichever comes first.)
getConfig
in interface XmlConfigurable
public void setConfig(XmlElement xml)
Note that the configuration cannot be set after the ConfigurablePofContext is fully initialized.
setConfig
in interface XmlConfigurable
xml
- the XML configuration for the object
IllegalStateException
- if the ConfigurablePofContext is already
fully initializedpublic ClassLoader getContextClassLoader()
getContextClassLoader
in interface ClassLoaderAware
Thread.getContextClassLoader()
public void setContextClassLoader(ClassLoader loader)
Note that the ConfigurablePofContext will fully initialize when it is provided a ClassLoader.
setContextClassLoader
in interface ClassLoaderAware
loader
- the context ClassLoader for this object
IllegalStateException
- if the ConfigurablePofContext is already
fully initializedpublic void serialize(WriteBuffer.BufferOutput out, Object o) throws IOException
serialize
in interface Serializer
out
- the BufferOutput with which to write the object's stateo
- the object to serialize
IOException
- if an I/O error occurspublic Object deserialize(ReadBuffer.BufferInput in) throws IOException
deserialize
in interface Serializer
in
- the BufferInput with which to read the object's state
IOException
- if an I/O error occurspublic PofSerializer getPofSerializer(int nTypeId)
getPofSerializer
in interface PofContext
nTypeId
- the type identifier of the user type that can be
serialized and deserialized using the returned
PofSerializer; must be non-negative
public int getUserTypeIdentifier(Object o)
getUserTypeIdentifier
in interface PofContext
o
- an instance of a user type; must not be null
public int getUserTypeIdentifier(Class clz)
getUserTypeIdentifier
in interface PofContext
clz
- a user type class; must not be null
public int getUserTypeIdentifier(String sClass)
getUserTypeIdentifier
in interface PofContext
sClass
- the name of a user type class; must not be null
public String getClassName(int nTypeId)
getClassName
in interface PofContext
nTypeId
- the user type identifier; must be non-negative
public Class getClass(int nTypeId)
getClass
in interface PofContext
nTypeId
- the user type identifier; must be non-negative
public boolean isUserType(Object o)
isUserType
in interface PofContext
o
- the object to test; must not be null
public boolean isUserType(Class clz)
isUserType
in interface PofContext
clz
- the class to test; must not be null
public boolean isUserType(String sClass)
isUserType
in interface PofContext
sClass
- the name of the class to test; must not be null
protected int getUserTypeIdentifierInternal(Class clz)
clz
- a user type class; must not be null
protected int getUserTypeIdentifierInternal(String sClass)
sClass
- the name of a user type class; must not be null
protected boolean isInitialized()
protected String getConfigLocation()
protected ConfigurablePofContext.PofConfig getPofConfig()
protected boolean isInterfaceAllowed()
protected boolean isSubclassAllowed()
protected void checkNotInitialized()
IllegalStateException
- if the ConfigurablePofContext is already
fully initializedprotected void ensureInitialized()
protected void initialize()
protected ConfigurablePofContext.PofConfig createPofConfig()
protected Class loadClass(String sClass)
sClass
- the fully qualified class name
RuntimeException
- a RuntimeException (or a subclass thereof)
is thrown if the specified Class could not be loadedprotected URL loadResource(String sURI)
sURI
- the resource identifier to load
protected RuntimeException report(String sURI, int nTypeId, String sClass, Throwable e, String sText)
sURI
- the URI of the configurationnTypeId
- the type ID (if applicable and if known)sClass
- the user type class name (if applicable and if known)e
- the underlying exception, if anysText
- the detailed description of the problem
IllegalStateException
- always thrown
|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |