in lightning-core/src/main/java/org/apache/directmemory/lightning/internal/marshaller/MapMarshaller.java [149:217]
public <V> V unmarshall( PropertyDescriptor propertyDescriptor, Source source,
SerializationContext serializationContext )
throws IOException
{
if ( isNull( source ) )
{
return null;
}
int size = source.readInt();
Map map = new LinkedHashMap( size );
if ( size > 0 )
{
for ( int i = 0; i < size; i++ )
{
Object key = null;
if ( !isNull( source ) )
{
long keyClassId = source.readLong();
ClassDefinition keyClassDefinition =
serializationContext.getClassDefinitionContainer().getClassDefinitionById( keyClassId );
Marshaller keyMarshaller;
if ( mapKeyType != null )
{
ensureMarshallersInitialized( serializationContext );
keyMarshaller = mapKeyTypeMarshaller;
}
else
{
keyMarshaller = serializationContext.findMarshaller( keyClassDefinition.getType() );
}
PropertyDescriptor pd =
new CheatPropertyDescriptor( propertyDescriptor.getPropertyName() + "Key",
keyClassDefinition.getType(), keyMarshaller );
key = keyMarshaller.unmarshall( pd, source, serializationContext );
}
Object value = null;
if ( !isNull( source ) )
{
long valueClassId = source.readLong();
ClassDefinition valueClassDefinition =
serializationContext.getClassDefinitionContainer().getClassDefinitionById( valueClassId );
Marshaller valueMarshaller;
if ( mapKeyType != null )
{
ensureMarshallersInitialized( serializationContext );
valueMarshaller = mapValueTypeMarshaller;
}
else
{
valueMarshaller = serializationContext.findMarshaller( valueClassDefinition.getType() );
}
PropertyDescriptor pd =
new CheatPropertyDescriptor( propertyDescriptor.getPropertyName() + "Value",
valueClassDefinition.getType(), valueMarshaller );
value = valueMarshaller.unmarshall( pd, source, serializationContext );
}
map.put( key, value );
}
}
return (V) map;
}