com.openharbor.beck.set
Class JavaBeanSetter

java.lang.Object
  extended bycom.openharbor.beck.set.JavaBeanSetter
All Implemented Interfaces:
Setter

public class JavaBeanSetter
extends java.lang.Object
implements Setter


Field Summary
protected static org.apache.commons.logging.Log LOG
           
 
Constructor Summary
JavaBeanSetter(java.lang.reflect.Method setter)
          Sets both the setter and the getter for the underlying JavaBean property.
 
Method Summary
 java.lang.Object getValue(Unmarshaller child, java.lang.Object[] getterParameters)
          Traverse an existing relationship from parent to child.
 java.lang.Class getValueClass(JavaBeanUnmarshaller parent)
          Find the expected class of a child object; for example, the declared class of a field or JavaBean property.
 java.lang.Object removeValue(Unmarshaller child, java.lang.Object[] getterParameters)
           
 java.lang.Object replaceValue(Unmarshaller child, java.lang.Object[] getterParameters)
           
 void setValue(Unmarshaller child, java.lang.Object[] getterParameters)
          Create a relationship from parent to child.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

protected static final org.apache.commons.logging.Log LOG
Constructor Detail

JavaBeanSetter

public JavaBeanSetter(java.lang.reflect.Method setter)
Sets both the setter and the getter for the underlying JavaBean property. The getter is deduced from the setter. To do that, the getter's name is supposed to match the setter's name with the difference of "get" instead of "set", and the getter is supposed to exist in the underlying JavaBean. Should any of the above conditions fail, an IllegalArgumentException si thrown.

Parameters:
setter -
Method Detail

getValueClass

public java.lang.Class getValueClass(JavaBeanUnmarshaller parent)
Description copied from interface: Setter
Find the expected class of a child object; for example, the declared class of a field or JavaBean property. The actual class of the child object may be derived from this class.

Specified by:
getValueClass in interface Setter
Parameters:
parent - describes the parent object, or null if the parent is not yet known.
Returns:
the expected class of the child object, or null if no particular class is expected.

setValue

public void setValue(Unmarshaller child,
                     java.lang.Object[] getterParameters)
              throws java.lang.Exception
Description copied from interface: Setter
Create a relationship from parent to child. Ordinarily, set a member of the parent to refer to the child.

Specified by:
setValue in interface Setter
Parameters:
child - describes the child object. child.getParent() describes the parent.
getterParameters - additional parameters to the setter method, such as LocaleTag.
Throws:
java.lang.Exception - something went wrong

removeValue

public java.lang.Object removeValue(Unmarshaller child,
                                    java.lang.Object[] getterParameters)
                             throws java.lang.Exception
Specified by:
removeValue in interface Setter
Throws:
java.lang.Exception

replaceValue

public java.lang.Object replaceValue(Unmarshaller child,
                                     java.lang.Object[] getterParameters)
                              throws java.lang.Exception
Specified by:
replaceValue in interface Setter
Throws:
java.lang.Exception

getValue

public java.lang.Object getValue(Unmarshaller child,
                                 java.lang.Object[] getterParameters)
                          throws java.lang.Exception
Description copied from interface: Setter

Traverse an existing relationship from parent to child. Call child.setObject() and child.setObjectClass() to record the child's identity and type, and return a reference to the child.

This method is used to resolve XPaths. Given an object and an XPath, we create an Unmarshaller for every level of the XPath, use the mapper to retrieve the corresponding setters, then traverse the object model using this method.

Specified by:
getValue in interface Setter
Parameters:
child - Child unmarshaller, which represents the property we're interested in. The parent (or the object whose property is to be read) can be accessed by child.getParent().
getterParameters - the parameters the getter takes. Typically, getters take no parameters, and null can be passed in. With mutli-lingual properties however, LocaleTag must be passed in to identify the language of interest,
Returns:
a reference to the child object, or null if there is no existing child.
Throws:
java.lang.Exception - something went wrong