Class 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, Mark Struberg rework to ASM
    • 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 Opcodes.
      • 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,
                                ClassNodeTracker cls,
                                int[] types)
        Decorate the generated class.
      • declareClasses

        protected void declareClasses​(ClassNodeTracker bc)
        Add interface or superclass declarations to the generated class.
      • addBeanField

        protected org.apache.xbean.asm9.tree.FieldNode addBeanField​(ClassNodeTracker 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.
      • 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.