net.sf.xsnapshot.transformers
Class NestedPropertyTransformer

java.lang.Object
  extended bynet.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

Constructor Summary
NestedPropertyTransformer()
           
 
Method Summary
 Object transform(Class returnClass, Object objectToTransform, TransformerArgs args, TransformContext context)
          Expects the arg1 of transformer args to be a property of objectToTransform, possibly nested (using the Jakarta BeanUtils nested property syntax).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NestedPropertyTransformer

public NestedPropertyTransformer()
Method Detail

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)