com.dyuproject.protostuff.runtime
Class IdStrategy

java.lang.Object
  extended by com.dyuproject.protostuff.runtime.IdStrategy
Direct Known Subclasses:
DefaultIdStrategy

public abstract class IdStrategy
extends java.lang.Object

This base class handles all the IO for reading and writing polymorphic fields. When a field's type is polymorphic/dynamic (e.g interface/abstract/object), the type (id) needs to be written (ahead) before its value/content to be able to deserialize it correctly. The underlying impl will determine how the type (id) should be written.

Author:
Leo Romanoff, David Yu

Nested Class Summary
static interface IdStrategy.Factory
          Responsible for instantiating custom IdStrategy impls.
static class IdStrategy.UnknownTypeException
          Thrown when a type is not known by the IdStrategy.
 
Constructor Summary
IdStrategy()
           
 
Method Summary
protected abstract  CollectionSchema.MessageFactory getCollectionFactory(java.lang.Class<?> clazz)
          Returns the CollectionSchema.MessageFactory.
protected abstract  EnumIO<? extends java.lang.Enum<?>> getEnumIO(java.lang.Class<?> enumClass)
          Returns the EnumIO.
protected abstract  MapSchema.MessageFactory getMapFactory(java.lang.Class<?> clazz)
          Returns the MapSchema.MessageFactory.
abstract
<T> HasSchema<T>
getSchemaWrapper(java.lang.Class<T> typeClass, boolean create)
          Returns the schema wrapper.
abstract  boolean isRegistered(java.lang.Class<?> typeClass)
          Returns true if the typeClass is explicitly registered.
protected abstract  java.lang.Class<?> resolveArrayComponentTypeFrom(Input input, boolean mapped)
           
protected abstract  CollectionSchema.MessageFactory resolveCollectionFrom(Input input)
           
protected abstract  EnumIO<?> resolveEnumFrom(Input input)
           
protected abstract  MapSchema.MessageFactory resolveMapFrom(Input input)
           
protected abstract
<T> HasSchema<T>
resolvePojoFrom(Input input, int fieldNumber)
           
protected abstract  void transferArrayId(Input input, Output output, int fieldNumber, boolean mapped)
           
protected abstract  void transferCollectionId(Input input, Output output, int fieldNumber)
           
protected abstract  void transferEnumId(Input input, Output output, int fieldNumber)
           
protected abstract  void transferMapId(Input input, Output output, int fieldNumber)
           
protected abstract
<T> HasSchema<T>
transferPojoId(Input input, Output output, int fieldNumber)
           
protected abstract  void writeArrayIdTo(Output output, java.lang.Class<?> componentType)
           
protected abstract  void writeCollectionIdTo(Output output, int fieldNumber, java.lang.Class<?> clazz)
           
protected abstract  void writeEnumIdTo(Output output, int fieldNumber, java.lang.Class<?> clazz)
           
protected abstract  void writeMapIdTo(Output output, int fieldNumber, java.lang.Class<?> clazz)
           
protected abstract
<T> Schema<T>
writeMessageIdTo(Output output, int fieldNumber, Message<T> message)
           
protected abstract
<T> Schema<T>
writePojoIdTo(Output output, int fieldNumber, java.lang.Class<T> clazz)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IdStrategy

public IdStrategy()
Method Detail

isRegistered

public abstract boolean isRegistered(java.lang.Class<?> typeClass)
Returns true if the typeClass is explicitly registered.


getSchemaWrapper

public abstract <T> HasSchema<T> getSchemaWrapper(java.lang.Class<T> typeClass,
                                                  boolean create)
Returns the schema wrapper. The caller is responsible that the typeClass is a pojo (e.g not an enum/array/etc).


getEnumIO

protected abstract EnumIO<? extends java.lang.Enum<?>> getEnumIO(java.lang.Class<?> enumClass)
Returns the EnumIO. The callers (internal field factories) are responsible that the class provided is an enum class.


getCollectionFactory

protected abstract CollectionSchema.MessageFactory getCollectionFactory(java.lang.Class<?> clazz)
Returns the CollectionSchema.MessageFactory. The callers (internal field factories) are responsible that the class provided implements Collection.


getMapFactory

protected abstract MapSchema.MessageFactory getMapFactory(java.lang.Class<?> clazz)
Returns the MapSchema.MessageFactory. The callers (internal field factories}) are responsible that the class provided implements .


writeCollectionIdTo

protected abstract void writeCollectionIdTo(Output output,
                                            int fieldNumber,
                                            java.lang.Class<?> clazz)
                                     throws java.io.IOException
Throws:
java.io.IOException

transferCollectionId

protected abstract void transferCollectionId(Input input,
                                             Output output,
                                             int fieldNumber)
                                      throws java.io.IOException
Throws:
java.io.IOException

resolveCollectionFrom

protected abstract CollectionSchema.MessageFactory resolveCollectionFrom(Input input)
                                                                  throws java.io.IOException
Throws:
java.io.IOException

writeMapIdTo

protected abstract void writeMapIdTo(Output output,
                                     int fieldNumber,
                                     java.lang.Class<?> clazz)
                              throws java.io.IOException
Throws:
java.io.IOException

transferMapId

protected abstract void transferMapId(Input input,
                                      Output output,
                                      int fieldNumber)
                               throws java.io.IOException
Throws:
java.io.IOException

resolveMapFrom

protected abstract MapSchema.MessageFactory resolveMapFrom(Input input)
                                                    throws java.io.IOException
Throws:
java.io.IOException

writeEnumIdTo

protected abstract void writeEnumIdTo(Output output,
                                      int fieldNumber,
                                      java.lang.Class<?> clazz)
                               throws java.io.IOException
Throws:
java.io.IOException

transferEnumId

protected abstract void transferEnumId(Input input,
                                       Output output,
                                       int fieldNumber)
                                throws java.io.IOException
Throws:
java.io.IOException

resolveEnumFrom

protected abstract EnumIO<?> resolveEnumFrom(Input input)
                                      throws java.io.IOException
Throws:
java.io.IOException

writePojoIdTo

protected abstract <T> Schema<T> writePojoIdTo(Output output,
                                               int fieldNumber,
                                               java.lang.Class<T> clazz)
                                    throws java.io.IOException
Throws:
java.io.IOException

transferPojoId

protected abstract <T> HasSchema<T> transferPojoId(Input input,
                                                   Output output,
                                                   int fieldNumber)
                                        throws java.io.IOException
Throws:
java.io.IOException

resolvePojoFrom

protected abstract <T> HasSchema<T> resolvePojoFrom(Input input,
                                                    int fieldNumber)
                                         throws java.io.IOException
Throws:
java.io.IOException

writeMessageIdTo

protected abstract <T> Schema<T> writeMessageIdTo(Output output,
                                                  int fieldNumber,
                                                  Message<T> message)
                                       throws java.io.IOException
Throws:
java.io.IOException

writeArrayIdTo

protected abstract void writeArrayIdTo(Output output,
                                       java.lang.Class<?> componentType)
                                throws java.io.IOException
Throws:
java.io.IOException

transferArrayId

protected abstract void transferArrayId(Input input,
                                        Output output,
                                        int fieldNumber,
                                        boolean mapped)
                                 throws java.io.IOException
Throws:
java.io.IOException

resolveArrayComponentTypeFrom

protected abstract java.lang.Class<?> resolveArrayComponentTypeFrom(Input input,
                                                                    boolean mapped)
                                                             throws java.io.IOException
Throws:
java.io.IOException


Copyright © 2009-2012. All Rights Reserved.