net.sf.xsnapshot.transformers
Class InverseNestedPropertyTransformer

java.lang.Object
  extended bynet.sf.xsnapshot.transformers.InverseNestedPropertyTransformer
All Implemented Interfaces:
Transformer

public class InverseNestedPropertyTransformer
extends Object
implements Transformer

inverse transformer for nested properties. given a value that was the result of a nested property lookup, and the property name, attempts to lookup the original property. This is of course impossible in the general case. TODO: actually implement, and then describe correctly in javadoc

Author:
Daniel Kokotov

Constructor Summary
InverseNestedPropertyTransformer()
           
 
Method Summary
 Object transform(Class returnClass, Object objectToTransform, TransformerArgs args, TransformContext context)
          expects arg1 to be a property on objectToConvert, possibly nested.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InverseNestedPropertyTransformer

public InverseNestedPropertyTransformer()
Method Detail

transform

public Object transform(Class returnClass,
                        Object objectToTransform,
                        TransformerArgs args,
                        TransformContext context)
                 throws XSnapshotTransformException
expects arg1 to be a property on objectToConvert, possibly nested. Returns the value of that property. If a nested property, and any intermediate property value 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)