Package org.simpleframework.xml.core
Class CompositeInlineList
- java.lang.Object
-
- org.simpleframework.xml.core.CompositeInlineList
-
class CompositeInlineList extends java.lang.Object implements Repeater
TheCompositeInlineListobject is used to convert an group of elements in to a collection of element entries. This is used when a containing element for a list is not required. It extracts the elements by matching elements to name of the type that the annotated field or method requires. This enables these element entries to exist as siblings to other objects within the object. One restriction is that theRootannotation for each of the types within the list must be the same.<entry attribute="one"> <text>example text value</text> </entry> <entry attribute="two"> <text>some other example</text> </entry> <entry attribute="three"> <text>yet another example</text> </entry>For the above XML element list the elemententryis contained within the list. Each entry element is thus deserialized as a root element and then inserted into the list. This enables lists to be composed from XML documents. For serialization the reverse is done, each element taken from the collection is written as a root element to the owning element to create the list. Entry objects do not need to be of the same type.- See Also:
Traverser,ElementList
-
-
Field Summary
Fields Modifier and Type Field Description private TypeentryThis is the entry type for elements within the list.private CollectionFactoryfactoryThis factory is used to create a suitable collection list.private java.lang.StringnameThis represents the name of the entry elements to write.private TraverserrootThis performs the traversal used for object serialization.private TypetypeThis represents the actual method or field for the list.
-
Constructor Summary
Constructors Constructor Description CompositeInlineList(Context context, Type type, Type entry, java.lang.String name)Constructor for theCompositeInlineListobject.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectread(InputNode node)Thisreadmethod wll read the XML element list from the provided node and deserialize its children as entry types.private java.lang.Objectread(InputNode node, java.lang.Class expect)Thisreadmethod will read the XML element from the provided node.java.lang.Objectread(InputNode node, java.lang.Object value)Thisreadmethod will read the XML element list from the provided node and deserialize its children as entry types.private java.lang.Objectread(InputNode node, java.util.Collection list)Thisreadmethod wll read the XML element list from the provided node and deserialize its children as entry types.booleanvalidate(InputNode node)Thisreadmethod will read the XML element list from the provided node and deserialize its children as entry types.voidwrite(OutputNode node, java.lang.Object source)Thiswritemethod will write the specified object to the given XML element as as list entries.voidwrite(OutputNode node, java.util.Collection list)Thiswritemethod will write the specified object to the given XML element as as list entries.
-
-
-
Field Detail
-
factory
private final CollectionFactory factory
This factory is used to create a suitable collection list.
-
root
private final Traverser root
This performs the traversal used for object serialization.
-
name
private final java.lang.String name
This represents the name of the entry elements to write.
-
entry
private final Type entry
This is the entry type for elements within the list.
-
type
private final Type type
This represents the actual method or field for the list.
-
-
Constructor Detail
-
CompositeInlineList
public CompositeInlineList(Context context, Type type, Type entry, java.lang.String name)
Constructor for theCompositeInlineListobject. This is given the list type and entry type to be used. The list type is theCollectionimplementation that is used to collect the deserialized entry objects from the XML source.- Parameters:
context- this is the context object used for serializationtype- this is the collection type for the list usedentry- the entry type to be stored within the listname- this is the name of the entries used for this list
-
-
Method Detail
-
read
public java.lang.Object read(InputNode node) throws java.lang.Exception
Thisreadmethod wll read the XML element list from the provided node and deserialize its children as entry types. This will each entry type is deserialized as a root type, that is, itsRootannotation must be present and the name of the entry element must match that root element name.
-
read
public java.lang.Object read(InputNode node, java.lang.Object value) throws java.lang.Exception
Thisreadmethod will read the XML element list from the provided node and deserialize its children as entry types. This will each entry type is deserialized as a root type, that is, itsRootannotation must be present and the name of the entry element must match that root element name.- Specified by:
readin interfaceConverter- Specified by:
readin interfaceRepeater- Parameters:
node- this is the XML element that is to be deserializedvalue- this is the value to read the objects in to- Returns:
- this returns the item to attach to the object contact
- Throws:
java.lang.Exception- if a deserialized type cannot be instantiated
-
read
private java.lang.Object read(InputNode node, java.util.Collection list) throws java.lang.Exception
Thisreadmethod wll read the XML element list from the provided node and deserialize its children as entry types. This will each entry type is deserialized as a root type, that is, itsRootannotation must be present and the name of the entry element must match that root element name.- Parameters:
node- this is the XML element that is to be deserializedlist- this is the collection that is to be populated- Returns:
- this returns the item to attach to the object contact
- Throws:
java.lang.Exception
-
read
private java.lang.Object read(InputNode node, java.lang.Class expect) throws java.lang.Exception
Thisreadmethod will read the XML element from the provided node. This checks to ensure that the deserialized type is the same as the entry type provided. If the types are not the same then an exception is thrown. This is done to ensure each node in the collection contain the same root annotation.- Parameters:
node- this is the XML element that is to be deserializedexpect- this is the type expected of the deserialized type- Returns:
- this returns the item to attach to the object contact
- Throws:
java.lang.Exception
-
validate
public boolean validate(InputNode node) throws java.lang.Exception
Thisreadmethod will read the XML element list from the provided node and deserialize its children as entry types. This will each entry type is deserialized as a root type, that is, itsRootannotation must be present and the name of the entry element must match that root element name.
-
write
public void write(OutputNode node, java.lang.Object source) throws java.lang.Exception
Thiswritemethod will write the specified object to the given XML element as as list entries. Each entry within the given collection must be assignable from the annotated type specified within theElementListannotation. Each entry is serialized as a root element, that is, itsRootannotation is used to extract the name.
-
write
public void write(OutputNode node, java.util.Collection list) throws java.lang.Exception
Thiswritemethod will write the specified object to the given XML element as as list entries. Each entry within the given collection must be assignable from the annotated type specified within theElementListannotation. Each entry is serialized as a root element, that is, itsRootannotation is used to extract the name.- Parameters:
list- this is the source collection to be serializednode- this is the XML element container to be populated- Throws:
java.lang.Exception
-
-