Java Code Examples for io.protostuff.MapSchema#MessageFactory

The following examples show how to use io.protostuff.MapSchema#MessageFactory . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FastIdStrategy.java    From turbo-rpc with Apache License 2.0 6 votes vote down vote up
@Override
protected MapSchema.MessageFactory getMapFactory(Class<?> clazz) {
	final String className = clazz.getName();
	MapSchema.MessageFactory factory = mapMapping.get(className);
	if (factory == null) {
		if (className.startsWith("java.util")) {
			factory = MapSchema.MessageFactories.valueOf(clazz.getSimpleName());
		} else {
			factory = new RuntimeMapFactory(clazz);
			MapSchema.MessageFactory f = mapMapping.putIfAbsent(className, factory);
			if (f != null)
				factory = f;
		}
	}

	return factory;
}
 
Example 2
Source File: FastIdStrategy.java    From turbo-rpc with Apache License 2.0 6 votes vote down vote up
@Override
protected MapSchema.MessageFactory resolveMapFrom(Input input) throws IOException {
	final String className = input.readString();
	MapSchema.MessageFactory factory = mapMapping.get(className);
	if (factory == null) {
		if (className.indexOf('.') == -1) {
			factory = MapSchema.MessageFactories.valueOf(className);
		} else {
			factory = new RuntimeMapFactory(RuntimeEnv.loadClass(className));
			MapSchema.MessageFactory f = mapMapping.putIfAbsent(className, factory);
			if (f != null)
				factory = f;
		}
	}

	return factory;
}
 
Example 3
Source File: ExplicitIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
/**
 * Map ids start at 1.
 */
@Override
public <T extends Map<?, ?>> Registry registerMap(
        MapSchema.MessageFactory factory, int id)
{
    if (id < 1)
        throw new IllegalArgumentException("map ids start at 1.");

    if (id >= strategy.maps.size())
        grow(strategy.maps, id + 1);
    else if (strategy.maps.get(id) != null)
    {
        throw new IllegalArgumentException("Duplicate id registration: " + id +
                " (" + factory.typeClass() + ")");
    }

    RegisteredMapFactory rf = new RegisteredMapFactory(id, factory);
    strategy.maps.set(id, rf);
    // just in case
    if (strategy.mapMapping.put(factory.typeClass(), rf) != null)
        throw new IllegalArgumentException("Duplicate registration for: " + factory.typeClass());

    return this;
}
 
Example 4
Source File: EnumIO.java    From protostuff with Apache License 2.0 6 votes vote down vote up
private static <E extends Enum<E>> MapSchema.MessageFactory newEnumMapFactory(
        final EnumIO<E> eio)
{
    return new MapSchema.MessageFactory()
    {
        @Override
        @SuppressWarnings("unchecked")
        public <K, V> Map<K, V> newMessage()
        {
            return (Map<K, V>) eio.newEnumMap();
        }

        @Override
        public Class<?> typeClass()
        {
            return EnumMap.class;
        }
    };
}
 
Example 5
Source File: IncrementalIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
/**
 * Map ids start at 1.
 */
@Override
public <T extends Map<?, ?>> Registry registerMap(
        MapSchema.MessageFactory factory, int id)
{
    if (id < 1)
        throw new IllegalArgumentException("map ids start at 1.");

    if (id >= strategy.mapIdStart)
        throw new IllegalArgumentException("map ids must be lesser than " + strategy.mapIdStart);
    else if (strategy.maps.get(id) != null)
    {
        throw new IllegalArgumentException("Duplicate id registration: " + id +
                " (" + factory.typeClass() + ")");
    }

    RuntimeMapFactory rf = new RuntimeMapFactory();
    rf.id = id;
    rf.factory = factory;
    strategy.maps.set(id, rf);
    // just in case
    if (strategy.mapMapping.put(factory.typeClass(), rf) != null)
        throw new IllegalArgumentException("Duplicate registration for: " + factory.typeClass());

    return this;
}
 
Example 6
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
@Override
protected MapSchema.MessageFactory resolveMapFrom(Input input)
        throws IOException
{
    final String className = input.readString();
    MapSchema.MessageFactory factory = mapMapping.get(className);
    if (factory == null)
    {
        if (className.indexOf('.') == -1 && MapSchema.MessageFactories.accept(className))
        {
            factory = MapSchema.MessageFactories.valueOf(className);
        }
        else
        {
            factory = new RuntimeMapFactory(RuntimeEnv.loadClass(className));
            MapSchema.MessageFactory f = mapMapping.putIfAbsent(className,
                    factory);
            if (f != null)
                factory = f;
        }
    }

    return factory;
}
 
Example 7
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
@Override
protected void writeMapIdTo(Output output, int fieldNumber, Class<?> clazz)
        throws IOException
{
    final MapSchema.MessageFactory factory = mapMapping.get(clazz);
    if (factory == null && clazz.getName().startsWith("java.util")
        && MapSchema.MessageFactories.accept(clazz.getSimpleName()))
    {
        // jdk map
        // better not to register the jdk map if using this strategy
        // as it saves space by not writing the full package
        output.writeString(fieldNumber, clazz.getSimpleName(), false);
    }
    else
    {
        output.writeString(fieldNumber, clazz.getName(), false);
    }
}
 
Example 8
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
@Override
protected MapSchema.MessageFactory getMapFactory(Class<?> clazz)
{
    final String className = clazz.getName();
    MapSchema.MessageFactory factory = mapMapping.get(className);
    if (factory == null)
    {
        if (className.startsWith("java.util") && MapSchema.MessageFactories.accept(clazz.getSimpleName()))
        {
            factory = MapSchema.MessageFactories.valueOf(clazz
                    .getSimpleName());
        }
        else
        {
            factory = new RuntimeMapFactory(clazz);
            MapSchema.MessageFactory f = mapMapping.putIfAbsent(className,
                    factory);
            if (f != null)
                factory = f;
        }
    }

    return factory;
}
 
Example 9
Source File: ExplicitIdStrategy.java    From protostuff with Apache License 2.0 5 votes vote down vote up
@Override
protected MapSchema.MessageFactory resolveMapFrom(Input input)
        throws IOException
{
    final int id = input.readUInt32();

    final MapSchema.MessageFactory factory = id < maps.size() ? maps.get(id) : null;
    if (factory == null)
        throw new UnknownTypeException("map id: " + id + " (Outdated registry)");

    return factory;
}
 
Example 10
Source File: ExplicitIdStrategy.java    From protostuff with Apache License 2.0 5 votes vote down vote up
@Override
protected MapSchema.MessageFactory getMapFactory(Class<?> clazz)
{
    final RegisteredMapFactory rf = mapMapping.get(clazz);
    if (rf == null)
    {
        if (clazz.getName().startsWith("java.util"))
            return MapSchema.MessageFactories.valueOf(clazz.getSimpleName());

        throw new UnknownTypeException("map: " + clazz);
    }

    return rf;
}
 
Example 11
Source File: IncrementalIdStrategy.java    From protostuff with Apache License 2.0 5 votes vote down vote up
@Override
protected MapSchema.MessageFactory resolveMapFrom(Input input)
        throws IOException
{
    final int id = input.readUInt32();

    final RuntimeMapFactory factory = id < maps.size() ? maps.get(id) : null;
    if (factory == null)
        throw new UnknownTypeException("Unknown map id: " + id);

    return factory;
}
 
Example 12
Source File: EnumIO.java    From protostuff with Apache License 2.0 5 votes vote down vote up
/**
 * Returns the factory for an EnumMap (lazy).
 */
public MapSchema.MessageFactory getEnumMapFactory()
{
    MapSchema.MessageFactory enumMapFactory = this.enumMapFactory;
    if (enumMapFactory == null)
    {
        synchronized (this)
        {
            if ((enumMapFactory = this.enumMapFactory) == null)
                this.enumMapFactory = enumMapFactory = newEnumMapFactory(this);
        }
    }
    return enumMapFactory;
}
 
Example 13
Source File: FastIdStrategy.java    From turbo-rpc with Apache License 2.0 5 votes vote down vote up
@Override
protected void writeMapIdTo(Output output, int fieldNumber, Class<?> clazz) throws IOException {
	@SuppressWarnings("unlikely-arg-type")
	final MapSchema.MessageFactory factory = mapMapping.get(clazz);
	if (factory == null && clazz.getName().startsWith("java.util")) {
		// jdk map
		// better not to register the jdk map if using this strategy
		// as it saves space by not writing the full package
		output.writeString(fieldNumber, clazz.getSimpleName(), false);
	} else {
		output.writeString(fieldNumber, clazz.getName(), false);
	}
}
 
Example 14
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
/**
 * Registers a map. Returns true if registration is successful.
 */
public boolean registerMap(MapSchema.MessageFactory factory)
{
    return null == mapMapping.putIfAbsent(factory.typeClass().getName(),
            factory);
}
 
Example 15
Source File: IdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
protected abstract MapSchema.MessageFactory resolveMapFrom(Input input)
throws IOException;
 
Example 16
Source File: IncrementalIdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
@Override
protected MapSchema.MessageFactory getMapFactory(Class<?> clazz)
{
    return getRuntimeMapFactory(clazz);
}
 
Example 17
Source File: ExplicitIdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
public RegisteredMapFactory(int id, MapSchema.MessageFactory factory)
{
    this.id = id;
    this.factory = factory;
}
 
Example 18
Source File: FastIdStrategy.java    From turbo-rpc with Apache License 2.0 4 votes vote down vote up
/**
 * Registers a map. Returns true if registration is successful.
 */
public boolean registerMap(MapSchema.MessageFactory factory) {
	return null == mapMapping.putIfAbsent(factory.typeClass().getName(), factory);
}
 
Example 19
Source File: IdStrategy.java    From protostuff with Apache License 2.0 2 votes vote down vote up
/**
 * Returns the {@link MapSchema.MessageFactory}. The callers (internal field factories}) are responsible that the
 * class provided implements {@link Map}.
 */
protected abstract MapSchema.MessageFactory getMapFactory(Class<?> clazz);
 
Example 20
Source File: IdStrategy.java    From Jupiter with Apache License 2.0 2 votes vote down vote up
/**
 * Returns the {@link MapSchema.MessageFactory}. The callers (internal field factories}) are responsible that the
 * class provided implements {@link Map}.
 */
protected abstract MapSchema.MessageFactory getMapFactory(Class<?> clazz);