org.jfree.xml.util

Class ObjectFactoryLoader

public class ObjectFactoryLoader extends AbstractModelReader implements ObjectFactory

The object factory loader loads the xml specification for the generic handlers. The specification may be distributed over multiple files.

This class provides the model management for the reader and writer. The instantiation of the handlers is done elsewhere.

Author: TM

Constructor Summary
ObjectFactoryLoader(URL resourceName)
Creates a new object factory loader for the given base file.
Method Summary
protected voidendMultiplexMapping()
Finializes the multiplexer mapping.
protected voidendObjectDefinition()
Finializes the object definition.
GenericObjectFactorygetFactoryForClass(Class c)
Returns a factory instance for the given class.
ManualMappingDefinitiongetManualMappingDefinition(Class c)
Returns the manual mapping definition for the given class, or null, if not manual definition exists.
MultiplexMappingDefinitiongetMultiplexDefinition(Class c)
Returns the multiplex definition for the given class, or null, if no such definition exists.
protected voidhandleAttributeDefinition(String name, String attribName, String handlerClass)
Handles an attribute definition.
protected voidhandleConstructorDefinition(String propertyName, String parameterClass)
Handles a constructor definition.
protected voidhandleElementDefinition(String name, String element)
Handles an element definition.
protected voidhandleLookupDefinition(String name, String lookupKey)
Handles an lookup definition.
protected booleanhandleManualMapping(String className, String readHandler, String writeHandler)
Handles a manual mapping definition.
protected voidhandleMultiplexMapping(String typeName, String className)
Defines an entry for the multiplex mapping.
booleanisGenericHandler(Class c)
Checks, whether the factory has a description for the given class.
protected voidstartMultiplexMapping(String className, String typeAttr)
Starts a multiplex mapping.
protected booleanstartObjectDefinition(String className, String register, boolean ignore)
Starts a object definition.

Constructor Detail

ObjectFactoryLoader

public ObjectFactoryLoader(URL resourceName)
Creates a new object factory loader for the given base file.

Parameters: resourceName the URL of the initial specification file.

Throws: ObjectDescriptionException if the file could not be parsed.

Method Detail

endMultiplexMapping

protected void endMultiplexMapping()
Finializes the multiplexer mapping.

Throws: ObjectDescriptionException if an error occurs.

endObjectDefinition

protected void endObjectDefinition()
Finializes the object definition.

Throws: ObjectDescriptionException if an error occures.

getFactoryForClass

public GenericObjectFactory getFactoryForClass(Class c)
Returns a factory instance for the given class. The factory is independent from all previously generated instances.

Parameters: c the class

Returns: the object factory.

getManualMappingDefinition

public ManualMappingDefinition getManualMappingDefinition(Class c)
Returns the manual mapping definition for the given class, or null, if not manual definition exists.

Parameters: c the class for which to check the existence of the definition

Returns: the manual mapping definition or null.

getMultiplexDefinition

public MultiplexMappingDefinition getMultiplexDefinition(Class c)
Returns the multiplex definition for the given class, or null, if no such definition exists.

Parameters: c the class for which to check the existence of the multiplexer

Returns: the multiplexer for the class, or null if no multiplexer exists.

handleAttributeDefinition

protected void handleAttributeDefinition(String name, String attribName, String handlerClass)
Handles an attribute definition. This method gets called after the object definition was started. The method will be called for every defined attribute property.

Parameters: name the name of the property attribName the xml-attribute name to use later. handlerClass the attribute handler class.

Throws: ObjectDescriptionException if an error occured.

handleConstructorDefinition

protected void handleConstructorDefinition(String propertyName, String parameterClass)
Handles a constructor definition. Only one constructor can be defined for a certain object type. The constructor will be filled using the given properties.

Parameters: propertyName the property name of the referenced local property parameterClass the parameter class for the parameter.

handleElementDefinition

protected void handleElementDefinition(String name, String element)
Handles an element definition. This method gets called after the object definition was started. The method will be called for every defined element property. Element properties are used to describe complex objects.

Parameters: name the name of the property element the xml-tag name for the child element.

Throws: ObjectDescriptionException if an error occurs.

handleLookupDefinition

protected void handleLookupDefinition(String name, String lookupKey)
Handles an lookup definition. This method gets called after the object definition was started. The method will be called for every defined lookup property. Lookup properties reference previously created object using the object's registry name.

Parameters: name the property name of the base object lookupKey the register key of the referenced object

Throws: ObjectDescriptionException if an error occured.

handleManualMapping

protected boolean handleManualMapping(String className, String readHandler, String writeHandler)
Handles a manual mapping definition. The manual mapping maps specific read and write handlers to a given base class. Manual mappings always override any other definition.

Parameters: className the base class name readHandler the class name of the read handler writeHandler the class name of the write handler

Returns: true, if the mapping was accepted, false otherwise.

Throws: ObjectDescriptionException if an unexpected error occured.

handleMultiplexMapping

protected void handleMultiplexMapping(String typeName, String className)
Defines an entry for the multiplex mapping. The new entry will be activated when the base mappers type attribute contains this typename and will resolve to the handler for the given classname.

Parameters: typeName the type value for this mapping. className the class name to which this mapping resolves.

Throws: ObjectDescriptionException if an error occurs.

isGenericHandler

public boolean isGenericHandler(Class c)
Checks, whether the factory has a description for the given class.

Parameters: c the class to be handled by the factory.

Returns: true, if an description exists for the given class, false otherwise.

startMultiplexMapping

protected void startMultiplexMapping(String className, String typeAttr)
Starts a multiplex mapping. Multiplex mappings are used to define polymorphic argument handlers. The mapper will collect all derived classes of the given base class and will select the corresponding mapping based on the given type attribute.

Parameters: className the base class name typeAttr the xml-attribute name containing the mapping key

startObjectDefinition

protected boolean startObjectDefinition(String className, String register, boolean ignore)
Starts a object definition. The object definition collects all properties of an bean-class and defines, which constructor should be used when creating the class.

Parameters: className the class name of the defined object register the (optional) register name, to lookup and reference the object later. ignore ignore?

Returns: true, if the definition was accepted, false otherwise.

Throws: ObjectDescriptionException if an unexpected error occured.