net.sf.xsnapshot.transformers
Class NestedPropertyTransformer
java.lang.Object
net.sf.xsnapshot.transformers.NestedPropertyTransformer
- All Implemented Interfaces:
- Transformer
- public class NestedPropertyTransformer
- extends Object
- implements Transformer
Transformer that returns the value of a possibly nested property (specified
in the transformer args) from the value it is passed in. There is generally
no need to specify this Transformer explicitly in the xdoclet markup as
there are special xdoclet attributes for requesting nested property values. This
transformer is used by XSnapshot behind the scenes.
- Author:
- Daniel Kokotov
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NestedPropertyTransformer
public NestedPropertyTransformer()
transform
public Object transform(Class returnClass,
Object objectToTransform,
TransformerArgs args,
TransformContext context)
throws XSnapshotTransformException
- Expects the arg1 of transformer args to be a property of objectToTransform,
possibly nested (using the Jakarta BeanUtils nested property syntax).
Returns the value of that property. If objectToTransform is null, returns null.
If the property is a nested property, and any intermediate property in the nested chain returns null,
returns null.
- Specified by:
transform
in interface Transformer
- Parameters:
returnClass
- the class of the object that should be returned
by this method. If not null, returned object must be an instance of this class,
ie returnObject instanceof returnClass must be true.
May be null, in which case the converter is not constrained
in the class of the object it returns. Implementations may impose more
restrictive semantics on this parameter.objectToTransform
- the object that should be transformed. If the
original property to which the transormation is being applied
was primitive-valued, then this will be the java.lang equivalent of
the primitive value.args
- the arguments for transformation. these come from the
{model,snapshot}-converter-arg-{1-9} attributes. For each arg, if the
value is null, then no arg at that index was specified. It is up to
to implementations to impose more precise semantics on this parameter.context
- the TransformContext for the overall transformation in progress
- Returns:
- the transformed value. If returnClass was specified, this
must be an instance of that class, unless it represents a primitive type,
in which case the returned value should be as follows, for possible values of returnClass:
- short, int, long, byte, float, double
- an instance of java.lang.Number
- char
- an instance of java.lang.Character
- boolean
- an instance of java.lang.Boolean
- Throws:
XSnapshotTransformException
- if the conversion could not be performed- See Also:
Transformer.transform(java.lang.Class, java.lang.Object, net.sf.xsnapshot.TransformerArgs, net.sf.xsnapshot.TransformContext)