Class PureJavaReflectionProvider
- java.lang.Object
-
- com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider
-
- All Implemented Interfaces:
ReflectionProvider
- Direct Known Subclasses:
SunLimitedUnsafeReflectionProvider
public class PureJavaReflectionProvider extends java.lang.Object implements ReflectionProvider
Pure Java ObjectFactory that instantiates objects using standard Java reflection, however the types of objects that can be constructed are limited.Can newInstance: classes with public visibility, outer classes, static inner classes, classes with default constructors and any class that implements java.io.Serializable.
Cannot newInstance: classes without public visibility, non-static inner classes, classes without default constructors. Note that any code in the constructor of a class will be executed when the ObjectFactory instantiates the object.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.thoughtworks.xstream.converters.reflection.ReflectionProvider
ReflectionProvider.Visitor
-
-
Field Summary
Fields Modifier and Type Field Description protected FieldDictionary
fieldDictionary
private java.util.Map
serializedDataCache
-
Constructor Summary
Constructors Constructor Description PureJavaReflectionProvider()
PureJavaReflectionProvider(FieldDictionary fieldDictionary)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
fieldDefinedInClass(java.lang.String fieldName, java.lang.Class type)
Deprecated.As of 1.4.5, usegetFieldOrNull(Class, String)
insteadprotected boolean
fieldModifiersSupported(java.lang.reflect.Field field)
java.lang.reflect.Field
getField(java.lang.Class definedIn, java.lang.String fieldName)
Returns a field defined in some class.java.lang.reflect.Field
getFieldOrNull(java.lang.Class definedIn, java.lang.String fieldName)
Returns a field defined in some class.java.lang.Class
getFieldType(java.lang.Object object, java.lang.String fieldName, java.lang.Class definedIn)
protected void
init()
private java.lang.Object
instantiateUsingSerialization(java.lang.Class type)
java.lang.Object
newInstance(java.lang.Class type)
Creates a new instance of the specified type.private java.lang.Object
readResolve()
void
setFieldDictionary(FieldDictionary dictionary)
protected void
validateFieldAccess(java.lang.reflect.Field field)
void
visitSerializableFields(java.lang.Object object, ReflectionProvider.Visitor visitor)
void
writeField(java.lang.Object object, java.lang.String fieldName, java.lang.Object value, java.lang.Class definedIn)
-
-
-
Field Detail
-
serializedDataCache
private transient java.util.Map serializedDataCache
-
fieldDictionary
protected FieldDictionary fieldDictionary
-
-
Constructor Detail
-
PureJavaReflectionProvider
public PureJavaReflectionProvider()
-
PureJavaReflectionProvider
public PureJavaReflectionProvider(FieldDictionary fieldDictionary)
-
-
Method Detail
-
newInstance
public java.lang.Object newInstance(java.lang.Class type)
Description copied from interface:ReflectionProvider
Creates a new instance of the specified type. It is in the responsibility of the implementation how such an instance is created.- Specified by:
newInstance
in interfaceReflectionProvider
- Parameters:
type
- the type to instantiate- Returns:
- a new instance of this type
-
instantiateUsingSerialization
private java.lang.Object instantiateUsingSerialization(java.lang.Class type)
-
visitSerializableFields
public void visitSerializableFields(java.lang.Object object, ReflectionProvider.Visitor visitor)
- Specified by:
visitSerializableFields
in interfaceReflectionProvider
-
writeField
public void writeField(java.lang.Object object, java.lang.String fieldName, java.lang.Object value, java.lang.Class definedIn)
- Specified by:
writeField
in interfaceReflectionProvider
-
getFieldType
public java.lang.Class getFieldType(java.lang.Object object, java.lang.String fieldName, java.lang.Class definedIn)
- Specified by:
getFieldType
in interfaceReflectionProvider
-
fieldDefinedInClass
public boolean fieldDefinedInClass(java.lang.String fieldName, java.lang.Class type)
Deprecated.As of 1.4.5, usegetFieldOrNull(Class, String)
instead- Specified by:
fieldDefinedInClass
in interfaceReflectionProvider
-
fieldModifiersSupported
protected boolean fieldModifiersSupported(java.lang.reflect.Field field)
-
validateFieldAccess
protected void validateFieldAccess(java.lang.reflect.Field field)
-
getField
public java.lang.reflect.Field getField(java.lang.Class definedIn, java.lang.String fieldName)
Description copied from interface:ReflectionProvider
Returns a field defined in some class.- Specified by:
getField
in interfaceReflectionProvider
- Parameters:
definedIn
- class where the field was definedfieldName
- field name- Returns:
- the field itself
-
getFieldOrNull
public java.lang.reflect.Field getFieldOrNull(java.lang.Class definedIn, java.lang.String fieldName)
Description copied from interface:ReflectionProvider
Returns a field defined in some class.- Specified by:
getFieldOrNull
in interfaceReflectionProvider
- Parameters:
definedIn
- class where the field was definedfieldName
- field name- Returns:
- the field itself or null
-
setFieldDictionary
public void setFieldDictionary(FieldDictionary dictionary)
-
readResolve
private java.lang.Object readResolve()
-
init
protected void init()
-
-