Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.enhance
Class DynamicStorageGenerator

    java.lang.Object
      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.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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