org.apache.openjpa.enhance
Class DynamicStorageGenerator

java.lang.Object
  extended by org.apache.openjpa.enhance.DynamicStorageGenerator
Direct Known Subclasses:
PCDataGenerator

public class DynamicStorageGenerator
extends Object

Factory for creating new DynamicStorage classes. Can be extended to decorate/modify the generated instances behavior.

Since:
0.3.2.0
Author:
Steve Kim

Field Summary
protected static int POLICY_EMPTY
          Constant to not generate type set/get methods.
protected static int POLICY_EXCEPTION
          Constant to throw an exception on invalid index passed to type set/get methods
protected static int POLICY_SILENT
          Constant to be as silent as possible during invalid index passed to set/get type methods.
 
Constructor Summary
DynamicStorageGenerator()
           
 
Method Summary
protected  serp.bytecode.BCField addBeanField(serp.bytecode.BCClass bc, String name, Class type)
          Add a bean field of the given name and type.
protected  DynamicStorage createFactory(serp.bytecode.BCClass bc)
          Create a stub factory instance for the given class.
protected  void declareClasses(serp.bytecode.BCClass bc)
          Add interface or superclass declarations to the generated class.
protected  void decorate(Object obj, serp.bytecode.BCClass cls, int[] types)
          Decorate the generated class.
protected  Class forType(int type)
          Return the proper type for the given JavaTypes constant.
 DynamicStorage generateStorage(int[] types, Object obj)
          Generate a generic DynamicStorage instance with the given array of JavaTypes constants and the given object as the user key for generation.
protected  String getClassName(Object obj)
          Return a class name to use for the given user key.
protected  int getCreateFieldMethods(int type)
          Return the policy constant for how to create type methods.
protected  int getFieldAccess()
          Return the default field ACCESS constant for generated fields from Constants.
protected  String getFieldName(int index)
          Return the name for the generated field at the given index.
protected  Class getWrapper(Class c)
          Get the wrapper for the given type.
protected  Class getWrapper(int type)
          get the wrapper for the given JavaTypes constant.
protected  boolean isCompatible(int fieldType, int storageType)
          Return true if the given field type and storage type are compatible.
protected  serp.bytecode.Code replaceMethod(serp.bytecode.BCClass bc, String name, Class retType, Class[] args, boolean remove)
          Clear code associated with the given method signature, and return the empty code.
protected  serp.bytecode.Instruction throwException(serp.bytecode.Code code, Class type)
          Throw an exception of the given type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

POLICY_EXCEPTION

protected static final int POLICY_EXCEPTION
Constant to throw an exception on invalid index passed to type set/get methods

See Also:
Constant Field Values

POLICY_EMPTY

protected static final int POLICY_EMPTY
Constant to not generate type set/get methods.

See Also:
Constant Field Values

POLICY_SILENT

protected static final int POLICY_SILENT
Constant to be as silent as possible during invalid index passed to set/get type methods. On getting an Object, for example, null will be returned. However, on primitive gets, an exception will be thrown.

See Also:
Constant Field Values
Constructor Detail

DynamicStorageGenerator

public DynamicStorageGenerator()
Method Detail

generateStorage

public DynamicStorage generateStorage(int[] types,
                                      Object obj)
Generate a generic DynamicStorage instance with the given array of JavaTypes constants and the given object as the user key for generation.


getClassName

protected String getClassName(Object obj)
Return a class name to use for the given user key. By default, returns the stringified key prefixed by PREFIX.


getFieldAccess

protected int getFieldAccess()
Return the default field ACCESS constant for generated fields from Constants.


getFieldName

protected String getFieldName(int index)
Return the name for the generated field at the given index. Returns "field" + i by default.


getCreateFieldMethods

protected int getCreateFieldMethods(int type)
Return the policy constant for how to create type methods.


decorate

protected void decorate(Object obj,
                        serp.bytecode.BCClass cls,
                        int[] types)
Decorate the generated class.


createFactory

protected DynamicStorage createFactory(serp.bytecode.BCClass bc)
Create a stub factory instance for the given class.


declareClasses

protected void declareClasses(serp.bytecode.BCClass bc)
Add interface or superclass declarations to the generated class.


replaceMethod

protected serp.bytecode.Code replaceMethod(serp.bytecode.BCClass bc,
                                           String name,
                                           Class retType,
                                           Class[] args,
                                           boolean remove)
Clear code associated with the given method signature, and return the empty code. Will return null if the method should be empty.


addBeanField

protected serp.bytecode.BCField addBeanField(serp.bytecode.BCClass bc,
                                             String name,
                                             Class type)
Add a bean field of the given name and type.


isCompatible

protected boolean isCompatible(int fieldType,
                               int storageType)
Return true if the given field type and storage type are compatible.


throwException

protected serp.bytecode.Instruction throwException(serp.bytecode.Code code,
                                                   Class type)
Throw an exception of the given type.


forType

protected Class forType(int type)
Return the proper type for the given JavaTypes constant.


getWrapper

protected Class getWrapper(int type)
get the wrapper for the given JavaTypes constant.


getWrapper

protected Class getWrapper(Class c)
Get the wrapper for the given type.



Copyright © 2006-2009 Apache Software Foundation. All Rights Reserved.