net.sf.morph.transform.transformers
Class ChainedTransformer
java.lang.Object
net.sf.morph.transform.transformers.BaseTransformer
net.sf.morph.transform.transformers.BaseCompositeTransformer
net.sf.morph.transform.transformers.ChainedTransformer
- All Implemented Interfaces:
- net.sf.composite.Component, net.sf.composite.Composite, net.sf.composite.SimpleComposite, net.sf.composite.StrictlyTypedComposite, Converter, Copier, DecoratedConverter, DecoratedCopier, DecoratedTransformer, ExplicitTransformer, ImpreciseTransformer, Transformer
public class ChainedTransformer
- extends BaseCompositeTransformer
- implements DecoratedConverter, DecoratedCopier, ExplicitTransformer, ImpreciseTransformer
Runs one or more transformers in a chain.
- Since:
- Nov 24, 2004
- Author:
- Matt Sgarlata, Matt Benson
Method Summary |
protected java.lang.Object |
convertImpl(java.lang.Class destinationClass,
java.lang.Object source,
java.util.Locale locale)
The implementation of the convert method, which may omit
the invalid argument checks already performed by this base class. |
protected void |
copyImpl(java.lang.Object destination,
java.lang.Object source,
java.util.Locale locale,
java.lang.Integer preferredTransformationType)
Implementation of the copy method. |
protected Transformer[] |
getChain()
Get the components array narrowed to a Transformer[]. |
protected java.util.List |
getConversionPath(java.lang.Class destinationType,
java.lang.Class sourceType)
Get the List of destination classes on the conversion path. |
protected Converter |
getCopyConverter()
Get the converter used when using a ChainedTransformer as a Copier. |
protected java.lang.Class[] |
getDestinationClassesImpl()
Transformer.getDestinationClasses() implementation template method. |
protected java.lang.Class[] |
getSourceClassesImpl()
Transformer.getSourceClasses() implementation template method. |
protected boolean |
isImpreciseTransformationImpl(java.lang.Class destinationClass,
java.lang.Class sourceClass)
Implementation of isImpreciseTransformation |
protected boolean |
isTransformableImpl(java.lang.Class destinationType,
java.lang.Class sourceType)
Default implementation for
Transformer#isTransformable(Class, Class) that assumes that each
source type can be converted into each destination type. |
protected void |
logConversion(int conversionNumber,
java.lang.Object source,
java.lang.Object destination)
Log one conversion in the chain. |
Methods inherited from class net.sf.morph.transform.transformers.BaseTransformer |
clone, convert, convert, copy, copy, createDefaultReflector, createNewInstance, createNewInstanceImpl, createReusableSource, equals, equals, equalsUnidirectionalTest, getDestinationClasses, getInstantiatingReflector, getLocale, getLog, getNestedTransformer, getReflector, getReflector, getSourceClasses, getTransformableCallCache, getTransformerName, initialize, isAutomaticallyHandlingNulls, isCachingIsTransformableCalls, isImpreciseTransformation, isInitialized, isPerformingLogging, isTransformable, setCachingIsTransformableCalls, setDestinationClasses, setInitialized, setLog, setReflector, setSourceClasses, setTransformableCallCache, setTransformerName, toString |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface net.sf.morph.transform.Copier |
copy |
ChainedTransformer
public ChainedTransformer()
- Create a new ChainedTransformer.
ChainedTransformer
public ChainedTransformer(Transformer[] chain)
- Create a new ChainedTransformer.
- Parameters:
chain
-
isTransformableImpl
protected boolean isTransformableImpl(java.lang.Class destinationType,
java.lang.Class sourceType)
throws java.lang.Exception
- Default implementation for
Transformer#isTransformable(Class, Class)
that assumes that each
source type can be converted into each destination type.
- Overrides:
isTransformableImpl
in class BaseTransformer
- Parameters:
destinationType
- the destination type to testsourceType
- the source type to test
- Returns:
- whether the destination type is transformable to the source
type
- Throws:
TransformationException
- if it could not be determined if sourceType
is transformable into destinationType
java.lang.Exception
- See Also:
BaseTransformer.isTransformableImpl(java.lang.Class, java.lang.Class)
isImpreciseTransformationImpl
protected boolean isImpreciseTransformationImpl(java.lang.Class destinationClass,
java.lang.Class sourceClass)
- Implementation of isImpreciseTransformation
- Overrides:
isImpreciseTransformationImpl
in class BaseTransformer
- Returns:
- boolean
getCopyConverter
protected Converter getCopyConverter()
- Get the converter used when using a ChainedTransformer as a Copier.
- Returns:
convertImpl
protected java.lang.Object convertImpl(java.lang.Class destinationClass,
java.lang.Object source,
java.util.Locale locale)
throws java.lang.Exception
- The implementation of the
convert
method, which may omit
the invalid argument checks already performed by this base class. By
default, this method creates a new instance of the destinationClass and
copies information from the source to the destination. This
implementation should be fine as-is for Copiers, but Converters will need
to implement this method since they will not be implementing the copy
method.
- Overrides:
convertImpl
in class BaseTransformer
locale
- the locale in which the conversion should take place. for
converters that are not locale-aware, the local argument can
simply be ignored
- Throws:
java.lang.Exception
- See Also:
BaseTransformer.convertImpl(java.lang.Class, java.lang.Object, java.util.Locale)
copyImpl
protected void copyImpl(java.lang.Object destination,
java.lang.Object source,
java.util.Locale locale,
java.lang.Integer preferredTransformationType)
throws java.lang.Exception
- Implementation of the copy method. By default, this method throws
UnsupportedOperationException.
- Overrides:
copyImpl
in class BaseTransformer
- Throws:
java.lang.Exception
- See Also:
BaseTransformer.copyImpl(java.lang.Object, java.lang.Object, java.util.Locale, java.lang.Integer)
logConversion
protected void logConversion(int conversionNumber,
java.lang.Object source,
java.lang.Object destination)
- Log one conversion in the chain.
- Parameters:
conversionNumber
- source
- destination
-
getDestinationClassesImpl
protected java.lang.Class[] getDestinationClassesImpl()
throws java.lang.Exception
Transformer.getDestinationClasses()
implementation template method.
- Specified by:
getDestinationClassesImpl
in class BaseTransformer
- Returns:
- Class[]
- Throws:
java.lang.Exception
- See Also:
BaseTransformer.getDestinationClassesImpl()
getSourceClassesImpl
protected java.lang.Class[] getSourceClassesImpl()
throws java.lang.Exception
Transformer.getSourceClasses()
implementation template method.
- Specified by:
getSourceClassesImpl
in class BaseTransformer
- Returns:
- Class[]
- Throws:
java.lang.Exception
- See Also:
BaseTransformer.getSourceClassesImpl()
getConversionPath
protected java.util.List getConversionPath(java.lang.Class destinationType,
java.lang.Class sourceType)
- Get the List of destination classes on the conversion path.
- Parameters:
destinationType
- sourceType
-
- Returns:
- List
getChain
protected Transformer[] getChain()
- Get the components array narrowed to a Transformer[].
- Returns:
- Transformer[]
Copyright © 2004-2008.