com.dyuproject.protostuff.runtime
Class RuntimeEnv

java.lang.Object
  extended by com.dyuproject.protostuff.runtime.RuntimeEnv

public final class RuntimeEnv
extends java.lang.Object

The runtime environment.

Author:
David Yu
Date created:
Jul 8, 2011

Nested Class Summary
static class RuntimeEnv.Instantiator<T>
           
 
Field Summary
static boolean ALWAYS_USE_SUN_REFLECTION_FACTORY
          If true, the constructor will always be obtained from ReflectionFactory.newConstructorFromSerialization.
static boolean AUTO_LOAD_POLYMORPHIC_CLASSES
          Enabled by default.
static boolean COLLECTION_SCHEMA_ON_REPEATED_FIELDS
          On repeated fields, the List/Collection itself is not serialized (only its values).
static boolean ENUMS_BY_NAME
          Returns true if serializing enums by name is activated.
static IdStrategy ID_STRATEGY
           
static boolean MORPH_COLLECTION_INTERFACES
          Disabled by default.
static boolean MORPH_MAP_INTERFACES
          Disabled by default.
static boolean MORPH_NON_FINAL_POJOS
          Disabled by default.
static boolean USE_SUN_MISC_UNSAFE
          If true, sun.misc.Unsafe is used to access the fields of the objects instead of plain java reflections.
 
Method Summary
static
<T> RuntimeEnv.Instantiator<T>
newInstantiator(java.lang.Class<T> clazz)
          Returns an instatiator for the specified clazz.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ENUMS_BY_NAME

public static final boolean ENUMS_BY_NAME
Returns true if serializing enums by name is activated. Disabled by default.


AUTO_LOAD_POLYMORPHIC_CLASSES

public static final boolean AUTO_LOAD_POLYMORPHIC_CLASSES
Enabled by default. For security purposes, you probably would want to register all known classes and disable this option.


MORPH_NON_FINAL_POJOS

public static final boolean MORPH_NON_FINAL_POJOS
Disabled by default. For pojos that are not declared final, they could still be morphed to their respective subclasses (inheritance). Enable this option if your parent classes aren't abstract classes.


MORPH_COLLECTION_INTERFACES

public static final boolean MORPH_COLLECTION_INTERFACES
Disabled by default. If true, type metadata will be included on serialization for fields that are collection interfaces. Enabling this is useful if you want to retain the actual collection impl used. If disabled, type metadata will not be included and instead, will be mapped to a default impl.
 Collection = ArrayList
 List = ArrayList
 Set = HashSet
 SortedSet = TreeSet
 NavigableSet = TreeSet
 Queue = LinkedList
 BlockingQueue = LinkedBlockingQueue
 Deque = LinkedList
 BlockingDequeue = LinkedBlockingDeque
 
You can optionally enable only for a particular field by annotation it with Morph.


MORPH_MAP_INTERFACES

public static final boolean MORPH_MAP_INTERFACES
Disabled by default. If true, type metadata will be included on serialization for fields that are map interfaces. Enabling this is useful if you want to retain the actual map impl used. If disabled, type metadata will not be included and instead, will be mapped to a default impl.
 Map = HashMap
 SortedMap = TreeMap
 NavigableMap = TreeMap
 ConcurrentMap = ConcurrentHashMap
 ConcurrentNavigableMap = ConcurrentSkipListMap
 
You can optionally enable only for a particular field by annotation it with Morph.


COLLECTION_SCHEMA_ON_REPEATED_FIELDS

public static final boolean COLLECTION_SCHEMA_ON_REPEATED_FIELDS
On repeated fields, the List/Collection itself is not serialized (only its values). If you enable this option, the repeated field will be serialized as a standalone message with a collection schema. Even if the List/Collection is empty, an empty collection message is still written. This is particularly useful if you rely on Object.equals(Object) on your pojos. Disabled by default for protobuf compatibility.


USE_SUN_MISC_UNSAFE

public static final boolean USE_SUN_MISC_UNSAFE
If true, sun.misc.Unsafe is used to access the fields of the objects instead of plain java reflections. Enabled by default if running on a sun jre.


ALWAYS_USE_SUN_REFLECTION_FACTORY

public static final boolean ALWAYS_USE_SUN_REFLECTION_FACTORY
If true, the constructor will always be obtained from ReflectionFactory.newConstructorFromSerialization. Disabled by default, which means that if the pojo has a no-args constructor, that will be used instead. Enable this if you intend to avoid deserializing objects whose no-args constructor initializes (unwanted) internal state. This applies to complex/framework objects. If you intend to fill default field values using your default constructor, leave this disabled. This normally applies to java beans/data objects.


ID_STRATEGY

public static final IdStrategy ID_STRATEGY
Method Detail

newInstantiator

public static <T> RuntimeEnv.Instantiator<T> newInstantiator(java.lang.Class<T> clazz)
Returns an instatiator for the specified clazz.



Copyright © 2009-2014. All Rights Reserved.