public class JDOImplHelper extends Object
JDOImplHelper
allows construction of instances of
persistence-capable classes without using reflection.
Persistence-capable classes register themselves via a static method at class load time. There is no security restriction on this access. JDO implementations get access to the functions provided by this class only if they are authorized by the security manager. To avoid having every call go through the security manager, only the call to get an instance is checked. Once an implementation has an instance, any of the methods can be invoked without security checks.
Modifier and Type | Class and Description |
---|---|
static interface |
JDOImplHelper.StateInterrogationBooleanReturn
This is an interface used to interrogate the state of an instance
that does not implement PersistenceCapable.
|
static interface |
JDOImplHelper.StateInterrogationObjectReturn
This is an interface used to interrogate the state of an instance
that does not implement PersistenceCapable.
|
static interface |
JDOImplHelper.StringConstructor
Construct an instance of a key class using a String as input.
|
Modifier and Type | Field and Description |
---|---|
static Set<String> |
USER_CONFIGURABLE_STANDARD_PROPERTIES
JDO standard properties that the user can configure.
|
Modifier and Type | Method and Description |
---|---|
void |
addRegisterClassListener(RegisterClassListener crl)
Add the specified
RegisterClassListener to the listener
list. |
void |
addStateInterrogation(StateInterrogation si)
Add a StateInterrogation to the list.
|
static void |
assertOnlyKnownStandardProperties(Map<?,?> properties)
Examines the given map for keys beginning with the JDO standard prefix,
Constants.JAVAX_JDO_PREFIX . |
static void |
checkAuthorizedStateManager(StateManager sm)
Check that the parameter instance is of a class that is authorized for
JDOPermission("setStateManager").
|
static void |
checkAuthorizedStateManagerClass(Class smClass)
Check that the parameter instance is a class that is authorized for
JDOPermission("setStateManager").
|
static Object |
construct(String className,
String keyString)
Construct an instance of the parameter class, using the keyString
as an argument to the constructor.
|
void |
copyKeyFieldsFromObjectId(Class pcClass,
PersistenceCapable.ObjectIdFieldConsumer fm,
Object oid)
Copy fields to an outside source from the key fields in the ObjectId.
|
void |
copyKeyFieldsToObjectId(Class pcClass,
PersistenceCapable.ObjectIdFieldSupplier fm,
Object oid)
Copy fields from an outside source to the key fields in the ObjectId.
|
byte[] |
getFieldFlags(Class pcClass)
Get the field flags for a
PersistenceCapable class. |
String[] |
getFieldNames(Class pcClass)
Get the field names for a
PersistenceCapable class. |
Class[] |
getFieldTypes(Class pcClass)
Get the field types for a
PersistenceCapable class. |
static JDOImplHelper |
getInstance()
Get an instance of
JDOImplHelper . |
Class |
getPersistenceCapableSuperclass(Class pcClass)
Get the persistence-capable superclass for a
PersistenceCapable class. |
Collection<Class> |
getRegisteredClasses()
Returns a collection of class objects of the registered
persistence-capable classes.
|
static DocumentBuilderFactory |
getRegisteredDocumentBuilderFactory()
Return the registered instance of DocumentBuilderFactory.
|
static ErrorHandler |
getRegisteredErrorHandler()
Return the registered instance of ErrorHandler.
|
PersistenceCapable |
newInstance(Class pcClass,
StateManager sm)
Create a new instance of the class and assign its
jdoStateManager . |
PersistenceCapable |
newInstance(Class pcClass,
StateManager sm,
Object oid)
Create a new instance of the class and assign its
jdoStateManager and key values from the ObjectId. |
Object |
newObjectIdInstance(Class pcClass)
Create a new instance of the ObjectId class of this
PersistenceCapable class. |
Object |
newObjectIdInstance(Class pcClass,
Object obj)
Create a new instance of the class used by the parameter Class
for JDO identity, using the
key constructor of the object id class.
|
Object |
nonBinaryCompatibleGet(Object pc,
JDOImplHelper.StateInterrogationObjectReturn sibr)
Return an object associated with a non-binary-compatible instance.
|
boolean |
nonBinaryCompatibleIs(Object pc,
JDOImplHelper.StateInterrogationBooleanReturn sibr)
Determine the state of a non-binary-compatible instance.
|
void |
nonBinaryCompatibleMakeDirty(Object pc,
String fieldName)
Mark a non-binary-compatible instance dirty.
|
static void |
registerAuthorizedStateManagerClass(Class smClass)
Register a class authorized to replaceStateManager.
|
static void |
registerAuthorizedStateManagerClasses(Collection smClasses)
Register classes authorized to replaceStateManager.
|
static void |
registerClass(Class pcClass,
String[] fieldNames,
Class[] fieldTypes,
byte[] fieldFlags,
Class persistenceCapableSuperclass,
PersistenceCapable pc)
Register metadata by class.
|
void |
registerDateFormat(DateFormat df)
Register a DateFormat instance for use with constructing Date
instances.
|
void |
registerDocumentBuilderFactory(DocumentBuilderFactory factory)
Register a DocumentBuilderFactory instance for use in parsing the
resource(s) META-INF/jdoconfig.xml.
|
void |
registerErrorHandler(ErrorHandler handler)
Register an ErrorHandler instance for use in parsing the
resource(s) META-INF/jdoconfig.xml.
|
Object |
registerStringConstructor(Class cls,
JDOImplHelper.StringConstructor sc)
Register special StringConstructor instances.
|
void |
removeRegisterClassListener(RegisterClassListener crl)
Remove the specified
RegisterClassListener from the listener
list. |
void |
removeStateInterrogation(StateInterrogation si)
Remove a StateInterrogation from the list.
|
void |
unregisterClass(Class pcClass)
Unregister metadata by class.
|
void |
unregisterClasses(ClassLoader cl)
Unregister metadata by class loader.
|
public static JDOImplHelper getInstance() throws SecurityException
JDOImplHelper
. This method
checks that the caller is authorized for
JDOPermission("getMetadata")
, and if not, throws
SecurityException
.JDOImplHelper
.SecurityException
- if the caller is not authorized for
JDOPermission("getMetadata").public String[] getFieldNames(Class pcClass)
PersistenceCapable
class. The
order of fields is the natural ordering of the String
class
(without considering localization).pcClass
- the PersistenceCapable
class.public Class[] getFieldTypes(Class pcClass)
PersistenceCapable
class. The
order of fields is the same as for field names.pcClass
- the PersistenceCapable
class.public byte[] getFieldFlags(Class pcClass)
PersistenceCapable
class. The
order of fields is the same as for field names.pcClass
- the PersistenceCapable
class.public Class getPersistenceCapableSuperclass(Class pcClass)
PersistenceCapable
class.pcClass
- the PersistenceCapable
class.PersistenceCapable
superclass for this class,
or null
if there isn't one.public PersistenceCapable newInstance(Class pcClass, StateManager sm)
jdoStateManager
. The new instance has its
jdoFlags
set to LOAD_REQUIRED
.pcClass
- the PersistenceCapable
class.sm
- the StateManager
which will own the new instance.null
if the class is not
registered.PersistenceCapable.jdoNewInstance(StateManager sm)
public PersistenceCapable newInstance(Class pcClass, StateManager sm, Object oid)
jdoStateManager
and key values from the ObjectId. If the
oid parameter is null
, no key values are copied.
The new instance has its jdoFlags
set to
LOAD_REQUIRED
.pcClass
- the PersistenceCapable
class.sm
- the StateManager
which will own the new instance.oid
- the ObjectId instance from which to copy key field values.null
if the class is not
registered.PersistenceCapable.jdoNewInstance(StateManager sm, Object oid)
public Object newObjectIdInstance(Class pcClass)
PersistenceCapable
class.
It is intended only for application identity. This method should
not be called for classes that use single field identity;
newObjectIdInstance(Class, Object) should be used instead.
If the class has been
enhanced for datastore identity, or if the class is abstract,
null is returned.pcClass
- the PersistenceCapable
class.null
if the class
is not registered.public Object newObjectIdInstance(Class pcClass, Object obj)
For classes that use single field identity, if the parameter is of one of the following types, the behavior must be as specified:
Number
or Character
: the
parameter must be the single field
type or the wrapper class of the primitive field type; the parameter
is passed to the single field identity constructor
ObjectIdFieldSupplier
: the field value
is fetched from the ObjectIdFieldSupplier
and passed to the
single field identity constructor
String
: the String is passed to the
single field identity constructor
obj
- the Object
form of the object idpcClass
- the PersistenceCapable
class.null
if the class is not registered.public void copyKeyFieldsToObjectId(Class pcClass, PersistenceCapable.ObjectIdFieldSupplier fm, Object oid)
PersistenceCapable
class to
generate a call to the field manager for each key field in the ObjectId.
For example, an ObjectId class that has three key fields
(int id
, String name
, and
Float salary
) would have the method generated:
void jdoCopyKeyFieldsToObjectId (Object oid, ObjectIdFieldSupplier fm) {
oid.id = fm.fetchIntField (0);
oid.name = fm.fetchStringField (1);
oid.salary = fm.fetchObjectField (2);
}
The implementation is responsible for implementing the
ObjectIdFieldSupplier
to provide the values for the key
fields.
pcClass
- the PersistenceCapable Class
.oid
- the ObjectId target of the copy.fm
- the field manager that supplies the field values.public void copyKeyFieldsFromObjectId(Class pcClass, PersistenceCapable.ObjectIdFieldConsumer fm, Object oid)
PersistenceCapable
class to
generate a call to the field manager for each key field in the ObjectId.
For example, an ObjectId class that has three key fields
(int id
, String name
, and
Float salary
) would have the method generated:
void jdoCopyKeyFieldsFromObjectId
(PersistenceCapable oid, ObjectIdFieldConsumer fm) {
fm.storeIntField (0, oid.id);
fm.storeStringField (1, oid.name);
fm.storeObjectField (2, oid.salary);
}
The implementation is responsible for implementing the
ObjectIdFieldConsumer
to store the values for the key
fields.
pcClass
- the PersistenceCapable
classoid
- the ObjectId source of the copy.fm
- the field manager that receives the field values.public static void registerClass(Class pcClass, String[] fieldNames, Class[] fieldTypes, byte[] fieldFlags, Class persistenceCapableSuperclass, PersistenceCapable pc)
JDOImplHelper
loaded by the same or an
ancestor class loader as the PersistenceCapable
class
performing the registration.pcClass
- the PersistenceCapable
class
used as the key for lookup.fieldNames
- an array of String
field names for
persistent and transactional fieldsfieldTypes
- an array of Class
field typesfieldFlags
- the Field Flags for persistent and transactional fieldspc
- an instance of the PersistenceCapable
classpersistenceCapableSuperclass
- the most immediate superclass that is
PersistenceCapable
public void unregisterClasses(ClassLoader cl)
PersistenceCapable
classes loaded by the
specified class loader. Any attempt to get metadata for unregistered
classes will result in a JDOFatalUserException
.cl
- the class loader.public void unregisterClass(Class pcClass)
JDOFatalUserException
.pcClass
- the PersistenceCapable
class to be
unregistered.public void addRegisterClassListener(RegisterClassListener crl)
RegisterClassListener
to the listener
list.crl
- the listener to be addedpublic void removeRegisterClassListener(RegisterClassListener crl)
RegisterClassListener
from the listener
list.crl
- the listener to be removedpublic Collection<Class> getRegisteredClasses()
public static void registerAuthorizedStateManagerClass(Class smClass) throws SecurityException
smClass
- a Class that is authorized for
JDOPermission("setStateManager").SecurityException
- if the caller is not authorized for
JDOPermission("setStateManager").public static void registerAuthorizedStateManagerClasses(Collection smClasses) throws SecurityException
smClasses
- a Collection of Classes that are authorized for
JDOPermission("setStateManager").SecurityException
- if the caller is not authorized for
JDOPermission("setStateManager").public void registerDocumentBuilderFactory(DocumentBuilderFactory factory)
factory
- the DocumentBuilderFactory instance to usepublic static DocumentBuilderFactory getRegisteredDocumentBuilderFactory()
public void registerErrorHandler(ErrorHandler handler)
handler
- the ErrorHandler instance to usepublic static ErrorHandler getRegisteredErrorHandler()
public static void checkAuthorizedStateManager(StateManager sm)
sm
- an instance of StateManager whose class is to be checked.public static void checkAuthorizedStateManagerClass(Class smClass)
smClass
- a Class to be checked for JDOPermission("setStateManager")public Object registerStringConstructor(Class cls, JDOImplHelper.StringConstructor sc)
cls
- the class to register a StringConstructor forsc
- the StringConstructor instancepublic static Object construct(String className, String keyString)
className
- the name of the classkeyString
- the String parameter for the constructorpublic void registerDateFormat(DateFormat df)
df
- the DateFormat instance to usepublic void addStateInterrogation(StateInterrogation si)
si
- the StateInterrogation to addpublic void removeStateInterrogation(StateInterrogation si)
si
- the StateInterrogation to removepublic void nonBinaryCompatibleMakeDirty(Object pc, String fieldName)
pc
- the instance to mark dirtyfieldName
- the field to mark dirtypublic boolean nonBinaryCompatibleIs(Object pc, JDOImplHelper.StateInterrogationBooleanReturn sibr)
pc
- the instance to be checkedsibr
- the method object that delegates to the
non-binary-compatible implementationpublic Object nonBinaryCompatibleGet(Object pc, JDOImplHelper.StateInterrogationObjectReturn sibr)
pc
- the instance whose associated object is neededsibr
- the method object that delegates to the
non-binary-compatible implementationpublic static void assertOnlyKnownStandardProperties(Map<?,?> properties)
Constants.JAVAX_JDO_PREFIX
. If any property keys are found with
that prefix but are unknown to this version of the JDO standard, a
JDOUserException is thrown with a message indicating the unknown
property. Keys that are not strings are ignored, as are string keys
beginning with
Constants.PROPERTY_PREFIX_INSTANCE_LIFECYCLE_LISTENER
or not
beginning with Constants.JAVAX_JDO_PREFIX
.properties
- The properties to examine.Constants.JAVAX_JDO_PREFIX
Copyright © 2005–1970 Apache Software Foundation. All rights reserved.