com.sun.xml.bind.v2.runtime.reflect

Class TransducedAccessor<BeanT>

public abstract class TransducedAccessor<BeanT> extends Object

Accessor and Transducer combined into one object.

This allows efficient conversions between primitive values and String without using boxing.

This abstraction only works for a single-value property.

An instance of TransducedAccessor implicitly holds a field of the {@code BeanT} that the accessors access.

Nested Class Summary
static classTransducedAccessor.CompositeContextDependentTransducedAccessorImpl<BeanT,ValueT>
static classTransducedAccessor.CompositeTransducedAccessorImpl<BeanT,ValueT>
Implementation of TransducedAccessor that simply combines a Transducer and Accessor.
Method Summary
voiddeclareNamespace(BeanT o, XMLSerializer w)
Obtain the value of the field and declares the namespace URIs used in the value.
static <T> TransducedAccessor<T>get(JAXBContextImpl context, RuntimeNonElementRef ref)
Gets the TransducedAccessor appropriately configured for the given property.
abstract booleanhasValue(BeanT o)
Checks if the field has a value.
abstract voidparse(BeanT o, CharSequence lexical)
Parses the text value into the responsible field of the given bean.
CharSequenceprint(BeanT o)
Prints the responsible field of the given bean to the writer.
booleanuseNamespace()
abstract voidwriteLeafElement(XMLSerializer w, Name tagName, BeanT o, String fieldName)
Convenience method to write the value as a text inside an element without any attributes.
abstract voidwriteText(XMLSerializer w, BeanT o, String fieldName)
Invokes one of the XMLSerializer method with the representation of data bested suited for this transduced accessor.

Method Detail

declareNamespace

public void declareNamespace(BeanT o, XMLSerializer w)
Obtain the value of the field and declares the namespace URIs used in the value.

See Also: Transducer

get

public static <T> TransducedAccessor<T> get(JAXBContextImpl context, RuntimeNonElementRef ref)
Gets the TransducedAccessor appropriately configured for the given property.

This allows the implementation to use an optimized code.

hasValue

public abstract boolean hasValue(BeanT o)
Checks if the field has a value.

parse

public abstract void parse(BeanT o, CharSequence lexical)
Parses the text value into the responsible field of the given bean.

Use getInstance to access to the namespace bindings

Throws: AccessorException if the transducer is used to parse an user bean that uses XmlValue, then this exception may occur when it tries to set the leaf value to the bean. RuntimeException if the lexical form is incorrect. The method may throw a RuntimeException, but it shouldn't cause the entire unmarshalling to fail. SAXException if the parse method found an error, the error is reported, and then the processing is aborted.

print

CharSequence print(BeanT o)
Prints the responsible field of the given bean to the writer.

Use getInstance to access to the namespace bindings

Returns: if the accessor didn't yield a value, return null.

useNamespace

public boolean useNamespace()

See Also: useNamespace

writeLeafElement

public abstract void writeLeafElement(XMLSerializer w, Name tagName, BeanT o, String fieldName)
Convenience method to write the value as a text inside an element without any attributes. Can be overridden for improved performance.

The callee assumes that there's an associated value in the field. No @xsi:type handling is expected.

writeText

public abstract void writeText(XMLSerializer w, BeanT o, String fieldName)
Invokes one of the XMLSerializer method with the representation of data bested suited for this transduced accessor.