Class ExplicitIdStrategy
java.lang.Object
io.protostuff.runtime.IdStrategy
io.protostuff.runtime.NumericIdStrategy
io.protostuff.runtime.ExplicitIdStrategy
Requires every messsage/pojo/enum/collection/map to be registered with unique ids.
- Author:
- David Yu
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThis Registry is only way to register your pojos/enums/collections/maps/delegates.Nested classes/interfaces inherited from class NumericIdStrategy
NumericIdStrategy.RegisteredDelegate<T>Nested classes/interfaces inherited from class IdStrategy
IdStrategy.Factory, IdStrategy.UnknownTypeException -
Field Summary
Fields inherited from class NumericIdStrategy
CID_BIGDECIMAL, CID_BIGINTEGER, CID_BOOL, CID_BYTE, CID_BYTE_ARRAY, CID_BYTES, CID_CHAR, CID_CLASS, CID_COLLECTION, CID_DATE, CID_DELEGATE, CID_DOUBLE, CID_ENUM, CID_ENUM_MAP, CID_ENUM_SET, CID_FLOAT, CID_INT32, CID_INT64, CID_MAP, CID_OBJECT, CID_POJO, CID_SHORT, CID_STRINGFields inherited from class IdStrategy
AUTO_LOAD_POLYMORPHIC_CLASSES, COLLECTION_SCHEMA_ON_REPEATED_FIELDS, DEFAULT_FLAGS, ENUMS_BY_NAME, flags, groupId, MORPH_COLLECTION_INTERFACES, MORPH_MAP_INTERFACES, MORPH_NON_FINAL_POJOS, POJO_SCHEMA_ON_COLLECTION_FIELDS, POJO_SCHEMA_ON_MAP_FIELDS, PRESERVE_NULL_ELEMENTS, primaryGroup -
Constructor Summary
ConstructorsConstructorDescriptionExplicitIdStrategy(int flags, IdStrategy primaryGroup, int groupId, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collectionMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collections, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> mapMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> maps, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enumMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enums, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojoMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojos, IdentityHashMap<Class<?>, NumericIdStrategy.RegisteredDelegate<?>> delegateMapping, ArrayList<NumericIdStrategy.RegisteredDelegate<?>> delegates) ExplicitIdStrategy(IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collectionMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collections, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> mapMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> maps, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enumMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enums, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojoMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojos, IdentityHashMap<Class<?>, NumericIdStrategy.RegisteredDelegate<?>> delegateMapping, ArrayList<NumericIdStrategy.RegisteredDelegate<?>> delegates) -
Method Summary
Modifier and TypeMethodDescriptionprotected Class<?> collectionClass(int id) protected Class<?> delegateClass(int id) protected Class<?> enumClass(int id) protected CollectionSchema.MessageFactorygetCollectionFactory(Class<?> clazz) Returns theCollectionSchema.MessageFactory.<T> Delegate<T> getDelegate(Class<? super T> typeClass) Returns thedelegate.<T> HasDelegate<T> getDelegateWrapper(Class<? super T> typeClass) Returns thedelegate.protected intReturns theEnumIO.protected intprotected MapSchema.MessageFactorygetMapFactory(Class<?> clazz) Returns theMapSchema.MessageFactory.protected NumericIdStrategy.RegisteredDelegate<?> getRegisteredDelegate(Class<?> clazz) <T> HasSchema<T> getSchemaWrapper(Class<T> typeClass, boolean create) Returns theschema wrapper.booleanisDelegateRegistered(Class<?> typeClass) Returns true if there is aDelegateexplicitly registered for thetypeClass.booleanisRegistered(Class<?> typeClass) Returns true if thetypeClassis explicitly registered.protected Class<?> mapClass(int id) protected Class<?> pojoClass(int id) protected CollectionSchema.MessageFactoryresolveCollectionFrom(Input input) protected <T> HasDelegate<T> resolveDelegateFrom(Input input) protected EnumIO<?> resolveEnumFrom(Input input) protected MapSchema.MessageFactoryresolveMapFrom(Input input) protected <T> HasSchema<T> resolvePojoFrom(Input input, int fieldNumber) protected voidtransferCollectionId(Input input, Output output, int fieldNumber) protected <T> HasDelegate<T> transferDelegateId(Input input, Output output, int fieldNumber) protected voidtransferEnumId(Input input, Output output, int fieldNumber) protected voidtransferMapId(Input input, Output output, int fieldNumber) protected <T> HasSchema<T> transferPojoId(Input input, Output output, int fieldNumber) protected <T> HasDelegate<T> tryWriteDelegateIdTo(Output output, int fieldNumber, Class<T> clazz) If this method returns null, the clazz was not registered as a delegate.protected <T> HasSchema<T> tryWritePojoIdTo(Output output, int fieldNumber, Class<T> clazz, boolean registered) protected voidwriteCollectionIdTo(Output output, int fieldNumber, Class<?> clazz) protected voidwriteEnumIdTo(Output output, int fieldNumber, Class<?> clazz) protected voidwriteMapIdTo(Output output, int fieldNumber, Class<?> clazz) protected <T> Schema<T> writeMessageIdTo(Output output, int fieldNumber, Message<T> message) protected <T> HasSchema<T> writePojoIdTo(Output output, int fieldNumber, Class<T> clazz) Methods inherited from class NumericIdStrategy
grow, newList, resolveArrayComponentTypeFrom, resolveClassFrom, transferArrayId, transferClassId, writeArrayIdTo, writeClassIdToMethods inherited from class IdStrategy
createMessageInstance, newSchema
-
Constructor Details
-
ExplicitIdStrategy
public ExplicitIdStrategy(IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collectionMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collections, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> mapMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> maps, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enumMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enums, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojoMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojos, IdentityHashMap<Class<?>, NumericIdStrategy.RegisteredDelegate<?>> delegateMapping, ArrayList<NumericIdStrategy.RegisteredDelegate<?>> delegates) -
ExplicitIdStrategy
public ExplicitIdStrategy(int flags, IdStrategy primaryGroup, int groupId, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collectionMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredCollectionFactory> collections, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> mapMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredMapFactory> maps, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enumMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.RegisteredEnumIO> enums, IdentityHashMap<Class<?>, io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojoMapping, ArrayList<io.protostuff.runtime.ExplicitIdStrategy.BaseHS<?>> pojos, IdentityHashMap<Class<?>, NumericIdStrategy.RegisteredDelegate<?>> delegateMapping, ArrayList<NumericIdStrategy.RegisteredDelegate<?>> delegates)
-
-
Method Details
-
isRegistered
Description copied from class:IdStrategyReturns true if thetypeClassis explicitly registered.- Specified by:
isRegisteredin classIdStrategy
-
getSchemaWrapper
Description copied from class:IdStrategyReturns theschema wrapper. The caller is responsible that the typeClass is a pojo (e.g not an enum/array/etc).- Specified by:
getSchemaWrapperin classIdStrategy
-
getEnumIO
Description copied from class:IdStrategyReturns theEnumIO. The callers (internal field factories) are responsible that the class provided is an enum class.- Specified by:
getEnumIOin classIdStrategy
-
getCollectionFactory
Description copied from class:IdStrategyReturns theCollectionSchema.MessageFactory. The callers (internal field factories) are responsible that the class provided implementsCollection.- Specified by:
getCollectionFactoryin classIdStrategy
-
getMapFactory
Description copied from class:IdStrategyReturns theMapSchema.MessageFactory. The callers (internal field factories}) are responsible that the class provided implementsMap.- Specified by:
getMapFactoryin classIdStrategy
-
writeCollectionIdTo
protected void writeCollectionIdTo(Output output, int fieldNumber, Class<?> clazz) throws IOException - Specified by:
writeCollectionIdToin classIdStrategy- Throws:
IOException
-
transferCollectionId
- Specified by:
transferCollectionIdin classIdStrategy- Throws:
IOException
-
resolveCollectionFrom
- Specified by:
resolveCollectionFromin classIdStrategy- Throws:
IOException
-
writeMapIdTo
- Specified by:
writeMapIdToin classIdStrategy- Throws:
IOException
-
transferMapId
- Specified by:
transferMapIdin classIdStrategy- Throws:
IOException
-
resolveMapFrom
- Specified by:
resolveMapFromin classIdStrategy- Throws:
IOException
-
writeEnumIdTo
- Specified by:
writeEnumIdToin classIdStrategy- Throws:
IOException
-
transferEnumId
- Specified by:
transferEnumIdin classIdStrategy- Throws:
IOException
-
resolveEnumFrom
- Specified by:
resolveEnumFromin classIdStrategy- Throws:
IOException
-
isDelegateRegistered
Description copied from class:IdStrategyReturns true if there is aDelegateexplicitly registered for thetypeClass.- Specified by:
isDelegateRegisteredin classIdStrategy
-
getDelegate
Description copied from class:IdStrategyReturns thedelegate.- Specified by:
getDelegatein classIdStrategy
-
getDelegateWrapper
Description copied from class:IdStrategyReturns thedelegate.- Specified by:
getDelegateWrapperin classIdStrategy
-
tryWriteDelegateIdTo
protected <T> HasDelegate<T> tryWriteDelegateIdTo(Output output, int fieldNumber, Class<T> clazz) throws IOException Description copied from class:IdStrategyIf this method returns null, the clazz was not registered as a delegate.- Specified by:
tryWriteDelegateIdToin classIdStrategy- Throws:
IOException
-
transferDelegateId
protected <T> HasDelegate<T> transferDelegateId(Input input, Output output, int fieldNumber) throws IOException - Specified by:
transferDelegateIdin classIdStrategy- Throws:
IOException
-
resolveDelegateFrom
- Specified by:
resolveDelegateFromin classIdStrategy- Throws:
IOException
-
tryWritePojoIdTo
protected <T> HasSchema<T> tryWritePojoIdTo(Output output, int fieldNumber, Class<T> clazz, boolean registered) throws IOException - Specified by:
tryWritePojoIdToin classIdStrategy- Throws:
IOException
-
writePojoIdTo
protected <T> HasSchema<T> writePojoIdTo(Output output, int fieldNumber, Class<T> clazz) throws IOException - Specified by:
writePojoIdToin classIdStrategy- Throws:
IOException
-
transferPojoId
protected <T> HasSchema<T> transferPojoId(Input input, Output output, int fieldNumber) throws IOException - Specified by:
transferPojoIdin classIdStrategy- Throws:
IOException
-
resolvePojoFrom
- Specified by:
resolvePojoFromin classIdStrategy- Throws:
IOException
-
writeMessageIdTo
protected <T> Schema<T> writeMessageIdTo(Output output, int fieldNumber, Message<T> message) throws IOException - Specified by:
writeMessageIdToin classIdStrategy- Throws:
IOException
-
collectionClass
- Specified by:
collectionClassin classNumericIdStrategy
-
mapClass
- Specified by:
mapClassin classNumericIdStrategy
-
enumClass
- Specified by:
enumClassin classNumericIdStrategy
-
delegateClass
- Specified by:
delegateClassin classNumericIdStrategy
-
pojoClass
- Specified by:
pojoClassin classNumericIdStrategy
-
getRegisteredDelegate
- Specified by:
getRegisteredDelegatein classNumericIdStrategy
-
getEnumId
- Specified by:
getEnumIdin classNumericIdStrategy
-
getId
- Specified by:
getIdin classNumericIdStrategy
-