Class ContentHolder
- Direct Known Subclasses:
ContentHolderForInput
,ContentHolderForOutput
A ContentHolder
should be placed in a Data Transfer Object (DTO)
like the following:
public class CityDTO {
@Table(
dataModel = "urn:ebx:module:cities-module:/WEB-INF/ebx/schemas/person.xsd",
tablePath = "/root/Person")
public ContentHolder person;
}
This same DTO is usable as an argument of REST operations
or as a response object. When used as an argument,
the ContentHolder
will be automatically created
(an ContentHolderForInput
instance) and supplied
with the appropriate part of information coming from the HTTP request.
When used as a response, a ContentHolder
must be created through the
ContentHolderForOutput.createForRecord(com.onwbp.adaptation.Adaptation)
method, providing the wished
table record,
and returned.
A JSON format, for a given ContentHolder
, can be described by using
the ExtendedOutput
annotation.
Two formats are available:
- the compact format: used by default when no annotation is present over the DTO field.
-
the extended format:
which has multiple levels of configuration using different options from
Include
. This format can be activated by adding aExtendedOutput
annotation to the DTO field.
- Since:
- 6.0.0
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionabstract ContentHolderForInput
Unwraps thisContentHolder
to get aContentHolderForInput
if it has been instantiated as so.abstract Object
Returns the value of the specified path.final Object
get
(SchemaNode aNode) Returns the value of the local absolute path of specified node.final boolean
getBoolean
(Path aPath) Returns theboolean
value of the path specified, orfalse
if no value is defined.final Date
Returns theDate
value of the path specified, ornull
if no value is defined.final int
Returns theint
value of the specified path, or0
if no value is defined.final <T> List<T>
Returns theList
value of the specified path, or an emptyArrayList
if no value is defined.final String
Returns theString
value of the specified path ornull
if no value is defined.abstract boolean
Returnstrue
if this content holder is for input,false
otherwise.
-
Method Details
-
isForInput
public abstract boolean isForInput()Returnstrue
if this content holder is for input,false
otherwise. -
asContentHolderForInput
Unwraps thisContentHolder
to get aContentHolderForInput
if it has been instantiated as so.- Returns:
- the unwrapped
ContentHolderForInput
. - Throws:
IllegalStateException
- if thisContentHolder
has not been instantiated for input.
-
get
Returns the value of the specified path.The resolution of the value is done according to the following rules:
- If the specified node is a function, always returns the evaluation of the function.
- If the target node specifies a specific
osd:inheritance
inheritance property, returns the locally defined value if a local value is defined (or "overwritten"/null
); if no local value is defined, looks up the first locally defined value, according to theosd:inheritance
properties. - Otherwise, the default inheritance mechanism is used:
if the value is locally defined, it is returned (it can be
null
); otherwise, looks up the first locally defined value according to the built-in child-to-parent relationship of datasets; if no locally defined value is found, the data model default value is returned (null
is returned if the data model does not define a default value).
Access and mapping rules:
The access and mapping rules between XML Schema and Java are described in the chapter Mapping to Java.
- Throws:
PathAccessException
- ifaPath
does not refer to an existing node in the underlying type tree structure, or the specified node is above a terminal node.- See Also:
-
get
Returns the value of the local absolute path of specified node.- Throws:
IllegalArgumentException
-- if the specified node does not belong to the data model of the current content.
- if the current content is a table record and the specified node is not in the same table as the one of the current record.
- if the current content is a dataset and the specified node is a table record node.
- See Also:
-
getString
Returns theString
value of the specified path ornull
if no value is defined.- Throws:
PathAccessException
- ifaPath
does not refer to an existing node in the underlying type tree structure.ClassCastException
- if the value of the node is not aString
, that is, the underlying type node is not an XML Schemastring
type.- See Also:
-
getInt
Returns theint
value of the specified path, or0
if no value is defined.- Throws:
PathAccessException
- ifaPath
does not refer to an existing node in the underlying type tree structure.ClassCastException
- if the value of the node is not anint
, that is, the underlying type node is not an XML Schemainteger
type.- See Also:
-
getBoolean
Returns theboolean
value of the path specified, orfalse
if no value is defined.- Throws:
PathAccessException
- ifaPath
does not refer to an existing node in the underlying type tree structure.ClassCastException
- if the value of the node is not aboolean
, that is, the underlying type node is not an XML Schemaboolean
type.- See Also:
-
getDate
Returns theDate
value of the path specified, ornull
if no value is defined.The mapping rules of the types
xs:date
andxs:time
have some particularities that are described in Mapping to Java.- Throws:
PathAccessException
- ifaPath
does not refer to an existing node in the underlying type tree structure.ClassCastException
- if the value of the node is not aDate
, that is, the underlying type node is not an XML Schemadate
type.- See Also:
-
getList
Returns theList
value of the specified path, or an emptyArrayList
if no value is defined.A node contains a
List
when, in the XML Schema, the corresponding node has been declared withmaxOccurs > 1
. The complete access and mapping rules between XML Schema and Java are described in the chapter Mapping to Java.- Throws:
PathAccessException
- ifaPath
does not refer to an existing node in the underlying type tree structure.ClassCastException
- if the value of the node is not aList
, that is, the underlying type node does not havemaxOccurs > 1
in XML Schema.- See Also:
-