Class TransducedAccessor<BeanT>
java.lang.Object
org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor<BeanT>
- Direct Known Subclasses:
DefaultTransducedAccessor
,TransducedAccessor.CompositeTransducedAccessorImpl
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 BeanT
that the accessors access.
- Author:
- Kohsuke Kawaguchi ([email protected])
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
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 theTransducedAccessor
appropriately configured for the given property.abstract boolean
Checks if the field has a value.abstract void
parse
(BeanT o, CharSequence lexical) Parses the text value into the responsible field of the given bean.abstract CharSequence
Prints the responsible field of the given bean to the writer.boolean
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.abstract void
writeText
(XMLSerializer w, BeanT o, String fieldName) Invokes one of theXMLSerializer.text(String, String)
method with the representation of data bested suited for this transduced accessor.
-
Constructor Details
-
TransducedAccessor
public TransducedAccessor()
-
-
Method Details
-
useNamespace
public boolean useNamespace()- See Also:
-
declareNamespace
Obtain the value of the field and declares the namespace URIs used in the value.- Throws:
AccessorException
SAXException
- See Also:
-
print
@Nullable public abstract CharSequence print(@NotNull BeanT o) throws AccessorException, SAXException Prints the responsible field of the given bean to the writer.Use
XMLSerializer.getInstance()
to access to the namespace bindings- Returns:
- if the accessor didn't yield a value, return null.
- Throws:
AccessorException
SAXException
-
parse
Parses the text value into the responsible field of the given bean.Use
UnmarshallingContext.getInstance()
to access to the namespace bindings- Throws:
AccessorException
- if the transducer is used to parse an user bean that usesXmlValue
, 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.
-
hasValue
Checks if the field has a value.- Throws:
AccessorException
-
get
Gets theTransducedAccessor
appropriately configured for the given property.This allows the implementation to use an optimized code.
-
writeLeafElement
public abstract void writeLeafElement(XMLSerializer w, Name tagName, BeanT o, String fieldName) throws SAXException, AccessorException, IOException, XMLStreamException 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) throws AccessorException, SAXException, IOException, XMLStreamException Invokes one of theXMLSerializer.text(String, String)
method with the representation of data bested suited for this transduced accessor.
-