org.swixml

Class DefaultFactory

Implemented Interfaces:
Factory

public final class DefaultFactory
extends java.lang.Object
implements Factory

The DefaultFactory is a default implementation of the Factory Interface.

The DefaultFactory registers all setter methods that take a single producable paramter with a class template

Version:
$Revision: 1.1 $
Author:
Wolf Paulus

Field Summary

protected Class[]
parameterPriority
Priority to resolve method name clashes

Fields inherited from interface org.swixml.Factory

ADDER_ID, SETTER_ID

Constructor Summary

DefaultFactory(Class template)
Creates a new Factory for the given Class template.

Method Summary

Method
getSetter(Class template)
Returns a Setter Method that accepts the given class as a parameter
Method
getSetter(String name)
Returns a setter method by name
Collection
getSetters()
Class
getTemplate()
Method
guessSetter(String name)
Returns a setter method by a Attribute name.
Object
newInstance()
Create a new component instance
Object
newInstance(Object parameter)
Creates a new Object which class is getTemplate().
Object
newInstance(Object[] parameter)
Creates a new Object which class is getTemplate() and the constructor parameter are parameter.
protected int
priority(Class type)
Returns a priority ID of the given type based on a priority arrray
protected void
registerSetters()
Registers all available setter methods meeting these rules:
  • Method name needs to start with set
  • Method signature specifies exactly one parameter
  • if methods have the same name then super class methods are ignored
  • if methods have the same name and are implemented in the same class, then only the method which parameter type has the highest priority is registered
void
removeSetter(Method method)
Remove the given method form the collection of supported setters.

Field Details

parameterPriority

protected Class[] parameterPriority
Priority to resolve method name clashes

Constructor Details

DefaultFactory

public DefaultFactory(Class template)
Creates a new Factory for the given Class template.
Parameters:
template - Class

Note:
Only setMethods that take a single parameter are considered. Moreover, to be regsitered, a Converter needs to be available in the ConverterLibrary that can create instances of the paramter type.

Method Details

getSetter

public Method getSetter(Class template)
Returns a Setter Method that accepts the given class as a parameter
Specified by:
getSetter in interface Factory
Parameters:
template - Class
Returns:
Method - setter that accepts the given class as a parameter
See Also:
org.swixml.Factory.getSetter(java.lang.Class)

getSetter

public Method getSetter(String name)
Returns a setter method by name
Specified by:
getSetter in interface Factory
Parameters:
name - String name of the setter method
Returns:
Method - setter method which can be invoked on an object of the template class
See Also:
guessSetter(String), org.swixml.Factory
Typical Use:

Method method = factory.getSetter("set" + Parser.capitalize(attr.getName()));


getSetters

public Collection getSetters()
Specified by:
getSetters in interface Factory
Returns:
Collection containing all available setter methods

getTemplate

public Class getTemplate()
Specified by:
getTemplate in interface Factory
Returns:
class - Class the backing class template

guessSetter

public Method guessSetter(String name)
Returns a setter method by a Attribute name. Differently to the getSetter method, here the attibute name can be used directly and case doesn't matter.
Specified by:
guessSetter in interface Factory
Parameters:
name - String name of the setter method
Returns:
Method - setter method which can invoked on an object of the template class
See Also:
getSetter
Typical Use:

Method method = factory.getSetter( attr.getName() );


newInstance

public Object newInstance()
            throws Exception
Create a new component instance
Specified by:
newInstance in interface Factory
Returns:
instance Object a new instance of a template class

newInstance

public Object newInstance(Object parameter)
            throws Exception
Creates a new Object which class is getTemplate(). A default costructior is only used if no constructor is available, accepting the provided parameter
Specified by:
newInstance in interface Factory
Parameters:
parameter - Object, parameter used during construction or initialization.
Returns:
instance Object a new instance of a template class

newInstance

public Object newInstance(Object[] parameter)
            throws InstantiationException,
                   IllegalAccessException,
                   InvocationTargetException
Creates a new Object which class is getTemplate() and the constructor parameter are parameter.
Specified by:
newInstance in interface Factory
Parameters:
parameter - Object[] the parameter array to be passed into the constructor
Returns:
Object - the created object, an instance of the template class

priority

protected int priority(Class type)
Returns a priority ID of the given type based on a priority arrray
Parameters:
type - Class
Returns:
int parameter type priority

registerSetters

protected void registerSetters()
Registers all available setter methods meeting these rules:
  • Method name needs to start with set
  • Method signature specifies exactly one parameter
  • if methods have the same name then super class methods are ignored
  • if methods have the same name and are implemented in the same class, then only the method which parameter type has the highest priority is registered

removeSetter

public void removeSetter(Method method)
Remove the given method form the collection of supported setters.
Parameters:
method - Method

Copyright B) 2002 - 2005 - Wolf Paulus - CarlsbadCubes.com . All rights reserved.