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 Modifier and Type Class Description private static classPureJavaReflectionProvider.Reflections-
Nested classes/interfaces inherited from interface com.thoughtworks.xstream.converters.reflection.ReflectionProvider
ReflectionProvider.Visitor
-
-
Field Summary
Fields Modifier and Type Field Description protected FieldDictionaryfieldDictionaryprivate java.util.MapobjectStreamClassCacheprivate java.util.MapserializedDataCache
-
Constructor Summary
Constructors Constructor Description PureJavaReflectionProvider()PureJavaReflectionProvider(FieldDictionary fieldDictionary)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleanfieldDefinedInClass(java.lang.String fieldName, java.lang.Class type)Deprecated.As of 1.4.5, usegetFieldOrNull(Class, String)insteadprotected booleanfieldModifiersSupported(java.lang.reflect.Field field)java.lang.reflect.FieldgetField(java.lang.Class definedIn, java.lang.String fieldName)Returns a field defined in some class.java.lang.reflect.FieldgetFieldOrNull(java.lang.Class definedIn, java.lang.String fieldName)Returns a field defined in some class.java.lang.ClassgetFieldType(java.lang.Object object, java.lang.String fieldName, java.lang.Class definedIn)protected voidinit()private java.lang.ObjectinstantiateUsingSerialization(java.lang.Class type)java.lang.ObjectnewInstance(java.lang.Class type)Creates a new instance of the specified type.private java.lang.ObjectreadResolve()voidsetFieldDictionary(FieldDictionary dictionary)protected voidvalidateFieldAccess(java.lang.reflect.Field field)voidvisitSerializableFields(java.lang.Object object, ReflectionProvider.Visitor visitor)voidwriteField(java.lang.Object object, java.lang.String fieldName, java.lang.Object value, java.lang.Class definedIn)
-
-
-
Field Detail
-
objectStreamClassCache
private transient java.util.Map objectStreamClassCache
-
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:ReflectionProviderCreates a new instance of the specified type. It is in the responsibility of the implementation how such an instance is created.- Specified by:
newInstancein 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:
visitSerializableFieldsin interfaceReflectionProvider
-
writeField
public void writeField(java.lang.Object object, java.lang.String fieldName, java.lang.Object value, java.lang.Class definedIn)- Specified by:
writeFieldin interfaceReflectionProvider
-
getFieldType
public java.lang.Class getFieldType(java.lang.Object object, java.lang.String fieldName, java.lang.Class definedIn)- Specified by:
getFieldTypein 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:
fieldDefinedInClassin 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:ReflectionProviderReturns a field defined in some class.- Specified by:
getFieldin 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:ReflectionProviderReturns a field defined in some class.- Specified by:
getFieldOrNullin 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()
-
-