org.apache.jdo.impl.fostore
Class ObjectTranscriber

java.lang.Object
  extended byorg.apache.jdo.impl.fostore.FOStoreTranscriber
      extended byorg.apache.jdo.impl.fostore.ObjectTranscriber
All Implemented Interfaces:
Transcriber

class ObjectTranscriber
extends FOStoreTranscriber

Transcribes all non-primitive, non-String values. This includes immutable types (e.g. Boolean). Values which are object references are represented by their OID's, except for values which are Collections. These are represented out 'inline', that is, information about the kind of collection is first transcribed (e.g., hashtable vs. vector, etc.) and then the values in the collection themselves are transcribed.

Version:
1.0.1
Author:
Dave Bristor

Nested Class Summary
(package private)  class ObjectTranscriber.AbstractTranscriber
          An AbstractTranscriber knows how to transcribe one (and only one) kind of object.
(package private)  class ObjectTranscriber.ArrayListTranscriber
          Transcribe ArrayLists.
(package private)  class ObjectTranscriber.ArrayTranscriber
          Abstract class which provides support for transcribing arrays of any type.
(package private)  class ObjectTranscriber.BigDecimalTranscriber
          Transcribe BigDecimal.
(package private)  class ObjectTranscriber.BigIntegerTranscriber
          Transcribe BigInteger.
(package private)  class ObjectTranscriber.BitSetTranscriber
          Transcribe BitSet.
(package private)  class ObjectTranscriber.BooleanArrayTranscriber
           
(package private)  class ObjectTranscriber.ByteArrayTranscriber
           
(package private)  class ObjectTranscriber.CalendarTranscriber
          Transcribe Calendar.
(package private)  class ObjectTranscriber.CharArrayTranscriber
           
(package private)  class ObjectTranscriber.CollectionTranscriber
          Transcribe Collections.
(package private)  class ObjectTranscriber.DateTranscriber
          Transcribe Date.
(package private)  class ObjectTranscriber.DoubleArrayTranscriber
           
(package private)  class ObjectTranscriber.FloatArrayTranscriber
           
(package private)  class ObjectTranscriber.HashMapTranscriber
          Transcribe HashMaps.
(package private)  class ObjectTranscriber.HashSetTranscriber
          Transcribe HashSets.
(package private)  class ObjectTranscriber.HashtableTranscriber
          Transcribe Hashtable, including sco.Hashtable
(package private)  class ObjectTranscriber.ImmutableBooleanTranscriber
           
(package private)  class ObjectTranscriber.ImmutableByteTranscriber
           
(package private)  class ObjectTranscriber.ImmutableCharacterTranscriber
           
(package private)  class ObjectTranscriber.ImmutableDoubleTranscriber
           
(package private)  class ObjectTranscriber.ImmutableFloatTranscriber
           
(package private)  class ObjectTranscriber.ImmutableIntegerTranscriber
           
(package private)  class ObjectTranscriber.ImmutableLongTranscriber
           
(package private)  class ObjectTranscriber.ImmutableShortTranscriber
           
(package private)  class ObjectTranscriber.ImmutableStringTranscriber
           
(package private)  class ObjectTranscriber.ImmutableTranscriber
           
(package private)  class ObjectTranscriber.IntArrayTranscriber
           
(package private)  class ObjectTranscriber.LinkedListTranscriber
          Transcribe LinkedList.
(package private)  class ObjectTranscriber.LocaleTranscriber
          Transcribe Locale.
(package private)  class ObjectTranscriber.LongArrayTranscriber
           
(package private)  class ObjectTranscriber.MapTranscriber
          Transcribe Maps.
(package private)  class ObjectTranscriber.ObjArrayTranscriber
           
(package private)  class ObjectTranscriber.ShortArrayTranscriber
           
(package private)  class ObjectTranscriber.StringArrayTranscriber
           
(package private)  class ObjectTranscriber.TreeMapTranscriber
          Transcribe TreeMap, including sco.TreeMap.
(package private)  class ObjectTranscriber.TreeSetTranscriber
          Transcribe TreeSets.
(package private)  class ObjectTranscriber.VectorTranscriber
          Transcribe Vectors
 
Field Summary
private static ObjectTranscriber.ArrayListTranscriber arrayListTranscriber
           
private static ObjectTranscriber.DateTranscriber dateTranscriber
           
private static boolean DEFAULT_ALLOW_NULLS
          Default value for allow nulls in SCO collections and maps.
private static java.lang.String DEFAULT_TYPE
          Default value for element, key, and value types in SCO collections and maps.
private static ObjectTranscriber.HashMapTranscriber hashMapTranscriber
           
private static ObjectTranscriber.HashSetTranscriber hashSetTranscriber
           
private static ObjectTranscriber.HashtableTranscriber hashtableTranscriber
           
private static boolean initSupported
           
private static ObjectTranscriber.LinkedListTranscriber linkedListTranscriber
           
(package private) static org.apache.commons.logging.Log logger
          Logger
private static I18NHelper msg
          I18N support.
private static ObjectTranscriber.ObjArrayTranscriber objArrayTranscriber
           
(package private) static ObjectTranscriber objectTranscriber
           
protected  java.util.ArrayList offsets
           
private  PersistenceManagerInternal pm
           
private static java.util.HashSet supported
           
private static java.util.HashMap transcribers
           
private static ObjectTranscriber.TreeMapTranscriber treeMapTranscriber
           
private static ObjectTranscriber.TreeSetTranscriber treeSetTranscriber
           
private static ObjectTranscriber.VectorTranscriber vectorTranscriber
           
 
Constructor Summary
(package private) ObjectTranscriber()
           
 
Method Summary
(package private)  boolean fetchBoolean(java.io.DataInput in)
           
(package private)  byte fetchByte(java.io.DataInput in)
           
(package private)  char fetchChar(java.io.DataInput in)
           
(package private)  double fetchDouble(java.io.DataInput in)
           
(package private)  float fetchFloat(java.io.DataInput in)
           
(package private)  int fetchInt(java.io.DataInput in)
           
(package private)  long fetchLong(java.io.DataInput in)
           
protected  java.lang.Object fetchObject(java.io.DataInput in, java.lang.Object owner, int fieldNum)
          Retrieves an object from the given DataInput.
(package private)  java.lang.Object fetchObject(java.io.DataInput in, java.lang.Object owner, int fieldNum, PersistenceManagerInternal pm)
          Retrieves an object from the given DataInput by delegating to the other fetchObject method after stashing away pm
(package private)  short fetchShort(java.io.DataInput in)
           
(package private) static ObjectTranscriber getInstance()
           
private  void initSupported()
           
private  boolean isSupportedArrayType(java.lang.Class cls)
           
private  java.lang.Class loadClass(java.lang.String name, java.lang.Object obj)
          Returns a class for the given name.
protected  void skip(java.io.DataInput in)
          Skips an object's bytes from the given DataInput.
protected  void skipObject(java.io.DataInput in)
          Skips an object's bytes from the given DataInput.
(package private)  void storeBoolean(boolean value, java.io.DataOutput out)
           
(package private)  void storeByte(byte value, java.io.DataOutput out)
           
(package private)  void storeChar(char value, java.io.DataOutput out)
           
(package private)  void storeDouble(double value, java.io.DataOutput out)
           
(package private)  void storeFloat(float value, java.io.DataOutput out)
           
(package private)  void storeInt(int value, java.io.DataOutput out)
           
(package private)  void storeLong(long value, java.io.DataOutput out)
           
protected  int[] storeObject(java.lang.Object value, FOStoreOutput out)
          Stores an object on the given FOStoreOutput.
(package private)  int[] storeObject(java.lang.Object value, FOStoreOutput out, PersistenceManagerInternal pm)
          Stores an object on the given FOStoreOutput by delegating to the other storeObject method after stashing away pm.
(package private)  void storeShort(short value, java.io.DataOutput out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pm

private PersistenceManagerInternal pm

offsets

protected java.util.ArrayList offsets

transcribers

private static java.util.HashMap transcribers

objArrayTranscriber

private static ObjectTranscriber.ObjArrayTranscriber objArrayTranscriber

dateTranscriber

private static ObjectTranscriber.DateTranscriber dateTranscriber

arrayListTranscriber

private static ObjectTranscriber.ArrayListTranscriber arrayListTranscriber

vectorTranscriber

private static ObjectTranscriber.VectorTranscriber vectorTranscriber

hashSetTranscriber

private static ObjectTranscriber.HashSetTranscriber hashSetTranscriber

treeSetTranscriber

private static ObjectTranscriber.TreeSetTranscriber treeSetTranscriber

linkedListTranscriber

private static ObjectTranscriber.LinkedListTranscriber linkedListTranscriber

hashMapTranscriber

private static ObjectTranscriber.HashMapTranscriber hashMapTranscriber

hashtableTranscriber

private static ObjectTranscriber.HashtableTranscriber hashtableTranscriber

treeMapTranscriber

private static ObjectTranscriber.TreeMapTranscriber treeMapTranscriber

msg

private static final I18NHelper msg
I18N support.


logger

static final org.apache.commons.logging.Log logger
Logger


DEFAULT_ALLOW_NULLS

private static final boolean DEFAULT_ALLOW_NULLS
Default value for allow nulls in SCO collections and maps.

See Also:
Constant Field Values

DEFAULT_TYPE

private static final java.lang.String DEFAULT_TYPE
Default value for element, key, and value types in SCO collections and maps.

See Also:
Constant Field Values

supported

private static final java.util.HashSet supported

initSupported

private static boolean initSupported

objectTranscriber

static final ObjectTranscriber objectTranscriber
Constructor Detail

ObjectTranscriber

ObjectTranscriber()
Method Detail

getInstance

static ObjectTranscriber getInstance()

storeObject

int[] storeObject(java.lang.Object value,
                  FOStoreOutput out,
                  PersistenceManagerInternal pm)
            throws java.io.IOException
Stores an object on the given FOStoreOutput by delegating to the other storeObject method after stashing away pm.

Overrides:
storeObject in class FOStoreTranscriber
Throws:
java.io.IOException

storeObject

protected int[] storeObject(java.lang.Object value,
                            FOStoreOutput out)
                     throws java.io.IOException
Stores an object on the given FOStoreOutput. An object is always stored by first storing it's CLID. If the value is null, instead of the OID, we write CLID.nullOID, followed by an integer 0...this is OK, because metadata will tell us type of thing that is null. If it's not null...well, it writes the object's CLID and value.

Overrides:
storeObject in class FOStoreTranscriber
Returns:
null if there were no provisional OID's stored while storing this object, otherwise an array of offsets into the given output stream. The array will have at least one element.
Throws:
java.io.IOException

initSupported

private void initSupported()

isSupportedArrayType

private boolean isSupportedArrayType(java.lang.Class cls)

fetchObject

java.lang.Object fetchObject(java.io.DataInput in,
                             java.lang.Object owner,
                             int fieldNum,
                             PersistenceManagerInternal pm)
                       throws java.io.IOException,
                              java.lang.Exception
Retrieves an object from the given DataInput by delegating to the other fetchObject method after stashing away pm

Overrides:
fetchObject in class FOStoreTranscriber
Throws:
java.io.IOException
java.lang.Exception

fetchObject

protected java.lang.Object fetchObject(java.io.DataInput in,
                                       java.lang.Object owner,
                                       int fieldNum)
                                throws java.io.IOException,
                                       java.lang.Exception
Retrieves an object from the given DataInput. If it is an SCO, then the SCO's owner is set to the given owner.

Overrides:
fetchObject in class FOStoreTranscriber
Throws:
java.io.IOException
java.lang.Exception

skip

protected void skip(java.io.DataInput in)
             throws java.io.IOException
Skips an object's bytes from the given DataInput.

Overrides:
skip in class FOStoreTranscriber
Throws:
java.io.IOException

skipObject

protected void skipObject(java.io.DataInput in)
                   throws java.io.IOException
Skips an object's bytes from the given DataInput.

Throws:
java.io.IOException

loadClass

private java.lang.Class loadClass(java.lang.String name,
                                  java.lang.Object obj)
Returns a class for the given name.

Parameters:
name - Name of the Class to return.
Throws:
JDOFatalUserException - if the named Class cannot be loaded.

storeBoolean

void storeBoolean(boolean value,
                  java.io.DataOutput out)
            throws java.io.IOException
Throws:
java.io.IOException

fetchBoolean

boolean fetchBoolean(java.io.DataInput in)
               throws java.io.IOException
Throws:
java.io.IOException

storeChar

void storeChar(char value,
               java.io.DataOutput out)
         throws java.io.IOException
Throws:
java.io.IOException

fetchChar

char fetchChar(java.io.DataInput in)
         throws java.io.IOException
Throws:
java.io.IOException

storeByte

void storeByte(byte value,
               java.io.DataOutput out)
         throws java.io.IOException
Throws:
java.io.IOException

fetchByte

byte fetchByte(java.io.DataInput in)
         throws java.io.IOException
Throws:
java.io.IOException

storeShort

void storeShort(short value,
                java.io.DataOutput out)
          throws java.io.IOException
Throws:
java.io.IOException

fetchShort

short fetchShort(java.io.DataInput in)
           throws java.io.IOException
Throws:
java.io.IOException

storeInt

void storeInt(int value,
              java.io.DataOutput out)
        throws java.io.IOException
Throws:
java.io.IOException

fetchInt

int fetchInt(java.io.DataInput in)
       throws java.io.IOException
Throws:
java.io.IOException

storeLong

void storeLong(long value,
               java.io.DataOutput out)
         throws java.io.IOException
Throws:
java.io.IOException

fetchLong

long fetchLong(java.io.DataInput in)
         throws java.io.IOException
Throws:
java.io.IOException

storeFloat

void storeFloat(float value,
                java.io.DataOutput out)
          throws java.io.IOException
Throws:
java.io.IOException

fetchFloat

float fetchFloat(java.io.DataInput in)
           throws java.io.IOException
Throws:
java.io.IOException

storeDouble

void storeDouble(double value,
                 java.io.DataOutput out)
           throws java.io.IOException
Throws:
java.io.IOException

fetchDouble

double fetchDouble(java.io.DataInput in)
             throws java.io.IOException
Throws:
java.io.IOException