Package org.simpleframework.xml.core
Class Source
java.lang.Object
org.simpleframework.xml.core.Source
- All Implemented Interfaces:
Context
The
Source
object acts as a contextual object that is
used to store all information regarding an instance of serialization
or deserialization. This maintains the Strategy
as
well as the Filter
used to replace template variables.
When serialization and deserialization are performed the source is
required as it acts as a factory for objects used in the process.
For serialization the source object is required as a factory for
Schema
objects, which are used to visit each field
in the class that can be serialized. Also this can be used to get
any data entered into the session Map
object.
When deserializing the source object provides the contextual data
used to replace template variables extracted from the XML source.
This is performed using the Filter
object. Also, as
in serialization it acts as a factory for the Schema
objects used to examine the serializable fields of an object.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate TemplateEngine
This is used to replace variables within the XML source.private Filter
This is the filter used by this object for templating.private Session
This is used to store the source context attribute values.private Strategy
This is the strategy used to resolve the element classes.private Support
This support is used to convert the strings encountered. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetAttribute
(Object key) This is used to acquire the attribute mapped to the specified key.This is used to acquire theCaller
object.getDecorator
(Class type) This will acquire theDecorator
for the type.getInstance
(Class type) This will create anInstance
that can be used to instantiate objects of the specified class.getInstance
(Value value) This will create anInstance
that can be used to instantiate objects of the specified class.This is used to acquire the name of the specified type using theRoot
annotation for the class.getOverride
(Type type, InputNode node) This is used to resolve and load a class for the given element.getProperty
(String text) Replaces any template variables within the provided string.private Scanner
getScanner
(Class type) This creates aScanner
object that can be used to examine the fields within the XML class schema.This creates aSchema
object that can be used to examine the fields within the XML class schema.This is used to acquire theSession
object that is used to store the values used within the serialization process.getStyle()
This is used to acquire theStyle
for the format.This is used to acquire theSupport
object.This is used to determine the type of an object given the source instance.getVersion
(Class type) This returns the version for the type specified.boolean
This is used to determine if the type specified is a floating point type.boolean
This is used to determine if the type specified is a floating point type.boolean
isPrimitive
(Class type) This is used to determine whether the scanned class represents a primitive type.boolean
isPrimitive
(Type type) This is used to determine whether the scanned type represents a primitive type.boolean
isStrict()
This is used to determine if the deserialization mode is strict or not.boolean
setOverride
(Type type, Object value, OutputNode node) This is used to attach elements or attributes to the given element during the serialization process.
-
Field Details
-
engine
This is used to replace variables within the XML source. -
strategy
This is the strategy used to resolve the element classes. -
support
This support is used to convert the strings encountered. -
session
This is used to store the source context attribute values. -
filter
This is the filter used by this object for templating.
-
-
Constructor Details
-
Source
Constructor for theSource
object. This is used to maintain a context during the serialization process. It holds theStrategy
andContext
used in the serialization process. The same source instance is used for each XML element evaluated in a the serialization process.- Parameters:
strategy
- this is used to resolve the classes usedsupport
- this is the context used to process stringssession
- this is the session to use for this context
-
-
Method Details
-
isStrict
public boolean isStrict()This is used to determine if the deserialization mode is strict or not. If this is not strict then deserialization will be done in such a way that additional elements and attributes can be ignored. This allows external XML formats to be used without having to match the object structure to the XML fully. -
getSession
This is used to acquire theSession
object that is used to store the values used within the serialization process. This provides the internal map that is passed to all of the call back methods so that is can be populated.- Specified by:
getSession
in interfaceContext
- Returns:
- this returns the session that is used by this source
-
getSupport
This is used to acquire theSupport
object. The support object is used to translate strings to and from their object representations and is also used to convert the strings to their template values. This is the single source of translation for all of the strings encountered.- Specified by:
getSupport
in interfaceContext
- Returns:
- this returns the support used by the context
-
getStyle
This is used to acquire theStyle
for the format. If no style has been set a default style is used, which does not modify the attributes and elements that are used to build the resulting XML document. -
isFloat
This is used to determine if the type specified is a floating point type. Types that are floating point are the double and float primitives as well as the java types for this primitives. -
isFloat
This is used to determine if the type specified is a floating point type. Types that are floating point are the double and float primitives as well as the java types for this primitives. -
isPrimitive
This is used to determine whether the scanned class represents a primitive type. A primitive type is a type that contains no XML annotations and so cannot be serialized with an XML form. Instead primitives a serialized using transformations.- Specified by:
isPrimitive
in interfaceContext
- Parameters:
type
- this is the type to determine if it is primitive- Returns:
- this returns true if no XML annotations were found
- Throws:
Exception
-
isPrimitive
This is used to determine whether the scanned type represents a primitive type. A primitive type is a type that contains no XML annotations and so cannot be serialized with an XML form. Instead primitives a serialized using transformations.- Specified by:
isPrimitive
in interfaceContext
- Parameters:
type
- this is the type to determine if it is primitive- Returns:
- this returns true if no XML annotations were found
- Throws:
Exception
-
getInstance
This will create anInstance
that can be used to instantiate objects of the specified class. This leverages an internal constructor cache to ensure creation is quicker.- Specified by:
getInstance
in interfaceContext
- Parameters:
type
- this is the type that is to be instantiated- Returns:
- this will return an object for instantiating objects
-
getInstance
This will create anInstance
that can be used to instantiate objects of the specified class. This leverages an internal constructor cache to ensure creation is quicker.- Specified by:
getInstance
in interfaceContext
- Parameters:
value
- this contains information on the object instance- Returns:
- this will return an object for instantiating objects
-
getName
This is used to acquire the name of the specified type using theRoot
annotation for the class. This will use either the name explicitly provided by the annotation or it will use the name of the class that the annotation was placed on if there is no explicit name for the root. -
getVersion
This returns the version for the type specified. The version is used to determine how the deserialization process is performed. If the version of the type is different from the version for the XML document, then deserialization is done in a best effort.- Specified by:
getVersion
in interfaceContext
- Parameters:
type
- this is the type to acquire the version for- Returns:
- the version that has been set for this XML schema class
- Throws:
Exception
-
getScanner
This creates aScanner
object that can be used to examine the fields within the XML class schema. The scanner maintains information when a field from within the scanner is visited, this allows the serialization and deserialization process to determine if all required XML annotations are used.- Parameters:
type
- the schema class the scanner is created for- Returns:
- a scanner that can maintains information on the type
- Throws:
Exception
- if the class contains an illegal schema
-
getDecorator
This will acquire theDecorator
for the type. A decorator is an object that adds various details to the node without changing the overall structure of the node. For example comments and namespaces can be added to the node with a decorator as they do not affect the deserialization.- Specified by:
getDecorator
in interfaceContext
- Parameters:
type
- this is the type to acquire the decorator for- Returns:
- this returns the decorator associated with this
- Throws:
Exception
-
getCaller
This is used to acquire theCaller
object. This is used to call the callback methods within the object. If the object contains no callback methods then this will return an object that does not invoke any methods that are invoked. -
getSchema
This creates aSchema
object that can be used to examine the fields within the XML class schema. The schema maintains information when a field from within the schema is visited, this allows the serialization and deserialization process to determine if all required XML annotations are used. -
getAttribute
This is used to acquire the attribute mapped to the specified key. In order for this to return a value it must have been previously placed into the context as it is empty by default.- Specified by:
getAttribute
in interfaceContext
- Parameters:
key
- this is the name of the attribute to retrieve- Returns:
- this returns the value mapped to the specified key
-
getOverride
This is used to resolve and load a class for the given element. The class should be of the same type or a subclass of the class specified. It can be resolved using the details within the provided XML element, if the details used do not represent any serializable values they should be removed so as not to disrupt the deserialization process. For example the default strategy removes all "class" attributes from the given elements.- Specified by:
getOverride
in interfaceContext
- Parameters:
type
- this is the type of the root element expectednode
- this is the element used to resolve an override- Returns:
- returns the type that should be used for the object
- Throws:
Exception
- thrown if the class cannot be resolved
-
setOverride
This is used to attach elements or attributes to the given element during the serialization process. This method allows the strategy to augment the XML document so that it can be deserialized using a similar strategy. For example the default strategy adds a "class" attribute to the element.- Specified by:
setOverride
in interfaceContext
- Parameters:
type
- this is the field type for the associated valuevalue
- this is the instance variable being serializednode
- this is the element used to represent the value- Returns:
- this returns true if serialization has complete
- Throws:
Exception
- thrown if the details cannot be set
-
getType
This is used to determine the type of an object given the source instance. To provide a best match approach this will first attempt to get the value for the actual instance, if however the instance is null the type is delegated to. -
getProperty
Replaces any template variables within the provided string. This is used in the deserialization process to replace variables with system properties, environment variables, or used specified mappings. If a template variable does not have a mapping from theFilter
is is left unchanged.- Specified by:
getProperty
in interfaceContext
- Parameters:
text
- this is processed by the template engine object- Returns:
- this returns the text will all variables replaced
-