net.sf.morph.transform.converters
Class TextConverter

java.lang.Object
  extended by net.sf.morph.transform.transformers.BaseTransformer
      extended by net.sf.morph.transform.converters.TextConverter
All Implemented Interfaces:
net.sf.composite.Component, Converter, DecoratedConverter, DecoratedTransformer, ExplicitTransformer, ImpreciseTransformer, Transformer

public class TextConverter
extends BaseTransformer
implements DecoratedConverter, ExplicitTransformer, ImpreciseTransformer

Converts text types (String, StringBuffer and Character, char[] and byte[] from one type to another. Empty Strings, StringBuffers with lengths of zero and empty character and byte arrays are converted to null Characters, and non-empty Strings and StringBuffers are converted to Characters by returning the first character in the String or StringBuffer. CharSequence is handled in this way: an explicit request for CharSequence yields a String. Other CharSequence implementations are handled if they have a public constructor that accepts a String argument.

Since:
Jan 2, 2005
Author:
Matt Sgarlata

Field Summary
 
Fields inherited from class net.sf.morph.transform.transformers.BaseTransformer
destinationClasses, log, sourceClasses
 
Fields inherited from interface net.sf.morph.transform.Transformer
TRANSFORMATION_TYPE_CONVERT, TRANSFORMATION_TYPE_COPY
 
Fields inherited from interface net.sf.morph.transform.Transformer
TRANSFORMATION_TYPE_CONVERT, TRANSFORMATION_TYPE_COPY
 
Constructor Summary
TextConverter()
           
 
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  java.lang.Class[] getDestinationClassesImpl()
          Transformer.getDestinationClasses() implementation template method.
protected  java.lang.Class[] getSourceClassesImpl()
          Transformer.getSourceClasses() implementation template method.
 boolean isAllowStringAsChar()
          Learn whether string-to-char type conversions are allowed.
protected  boolean isAutomaticallyHandlingNulls()
          Indicates whether null values will automatically be converted to null by this base class before even calling the subclass's BaseTransformer.convertImpl(Class, Object, Locale) method.
 boolean isEmptyNull()
          Learn whether null values return as empty strings.
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.
 void setAllowStringAsChar(boolean allowStringAsChar)
          Set whether string-to-char type conversions are allowed.
 void setEmptyNull(boolean emptyNull)
          Set whether null values return as empty strings.
 
Methods inherited from class net.sf.morph.transform.transformers.BaseTransformer
clone, convert, convert, copy, copy, copyImpl, createDefaultReflector, createNewInstance, createNewInstanceImpl, createReusableSource, equals, equals, equalsUnidirectionalTest, getDestinationClasses, getInstantiatingReflector, getLocale, getLog, getNestedTransformer, getReflector, getReflector, getSourceClasses, getTransformableCallCache, getTransformerName, initialize, initializeImpl, isCachingIsTransformableCalls, isImpreciseTransformation, isInitialized, isPerformingLogging, isTransformable, isWrappingRuntimeExceptions, setCachingIsTransformableCalls, setDestinationClasses, setInitialized, setLog, setNestedTransformer, 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.DecoratedConverter
convert, equals, equals
 
Methods inherited from interface net.sf.morph.transform.Converter
convert
 
Methods inherited from interface net.sf.morph.transform.Transformer
getDestinationClasses, getSourceClasses
 
Methods inherited from interface net.sf.morph.transform.Transformer
getDestinationClasses, getSourceClasses
 
Methods inherited from interface net.sf.morph.transform.ExplicitTransformer
isTransformable
 
Methods inherited from interface net.sf.morph.transform.ImpreciseTransformer
isImpreciseTransformation
 

Constructor Detail

TextConverter

public TextConverter()
Method Detail

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

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 test
sourceType - 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

isImpreciseTransformationImpl

protected boolean isImpreciseTransformationImpl(java.lang.Class destinationClass,
                                                java.lang.Class sourceClass)
Implementation of isImpreciseTransformation

Overrides:
isImpreciseTransformationImpl in class BaseTransformer
Returns:
boolean

isAutomaticallyHandlingNulls

protected boolean isAutomaticallyHandlingNulls()
Indicates whether null values will automatically be converted to null by this base class before even calling the subclass's BaseTransformer.convertImpl(Class, Object, Locale) method. Subclasses which depend on this behavior (which is all subclasses, by default) should include null as one of their source and destination classes so that the actual behavior of the transformer is consistent with the values that are returned by the BaseTransformer.isTransformable(Class, Class) method. The conversions will happen automatically even if the source and destination classes don't contain null, but for the sake of consistency the nulls should be included.

Overrides:
isAutomaticallyHandlingNulls in class BaseTransformer
Returns:
whether null values will automatically be converted to null by this base class before even calling the subclass's BaseTransformer.convertImpl(Class, Object, Locale) method

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

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

isEmptyNull

public boolean isEmptyNull()
Learn whether null values return as empty strings.

Returns:
boolean

setEmptyNull

public void setEmptyNull(boolean emptyNull)
Set whether null values return as empty strings.

Parameters:
emptyNull - boolean

isAllowStringAsChar

public boolean isAllowStringAsChar()
Learn whether string-to-char type conversions are allowed.

Returns:
boolean

setAllowStringAsChar

public void setAllowStringAsChar(boolean allowStringAsChar)
Set whether string-to-char type conversions are allowed. This might be undesirable for e.g. chained transformations or any operation where a loss of "precision" might be detrimental. Default true.

Parameters:
allowStringAsChar - the boolean to set


Copyright © 2004-2008.