Java Code Examples for io.protostuff.CollectionSchema#MessageFactory

The following examples show how to use io.protostuff.CollectionSchema#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 CollectionSchema.MessageFactory resolveCollectionFrom(Input input) throws IOException {
	final String className = input.readString();
	CollectionSchema.MessageFactory factory = collectionMapping.get(className);
	if (factory == null) {
		if (className.indexOf('.') == -1) {
			factory = CollectionSchema.MessageFactories.valueOf(className);
		} else {
			factory = new RuntimeCollectionFactory(RuntimeEnv.loadClass(className));
			CollectionSchema.MessageFactory f = collectionMapping.putIfAbsent(className, factory);
			if (f != null)
				factory = f;
		}
	}

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

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

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

    return this;
}
 
Example 3
Source File: EnumIO.java    From protostuff with Apache License 2.0 6 votes vote down vote up
private static <E extends Enum<E>> CollectionSchema.MessageFactory newEnumSetFactory(
        final EnumIO<E> eio)
{
    return new CollectionSchema.MessageFactory()
    {
        @Override
        @SuppressWarnings("unchecked")
        public <V> Collection<V> newMessage()
        {
            return (Collection<V>) eio.newEnumSet();
        }

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

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

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

    return this;
}
 
Example 5
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
@Override
protected CollectionSchema.MessageFactory getCollectionFactory(
        Class<?> clazz)
{
    final String className = clazz.getName();
    CollectionSchema.MessageFactory factory = collectionMapping
            .get(className);
    if (factory == null)
    {
        if (className.startsWith("java.util") && CollectionSchema.MessageFactories.accept(clazz.getSimpleName()))
        {
            factory = CollectionSchema.MessageFactories.valueOf(clazz
                    .getSimpleName());
        }
        else
        {
            factory = new RuntimeCollectionFactory(clazz);
            CollectionSchema.MessageFactory f = collectionMapping
                    .putIfAbsent(className, factory);
            if (f != null)
                factory = f;
        }
    }

    return factory;
}
 
Example 6
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
@Override
protected void writeCollectionIdTo(Output output, int fieldNumber,
        Class<?> clazz) throws IOException
{
    final CollectionSchema.MessageFactory factory = collectionMapping
            .get(clazz.getName());
    if (factory == null && clazz.getName().startsWith("java.util")
        && CollectionSchema.MessageFactories.accept(clazz.getSimpleName()))
    {
        // jdk collection
        // better not to register the jdk collection 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 7
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 6 votes vote down vote up
@Override
protected CollectionSchema.MessageFactory resolveCollectionFrom(Input input)
        throws IOException
{
    final String className = input.readString();
    CollectionSchema.MessageFactory factory = collectionMapping
            .get(className);
    if (factory == null)
    {
        if (className.indexOf('.') == -1 && CollectionSchema.MessageFactories.accept(className))
        {
            factory = CollectionSchema.MessageFactories.valueOf(className);
        }
        else
        {
            factory = new RuntimeCollectionFactory(
                    RuntimeEnv.loadClass(className));
            CollectionSchema.MessageFactory f = collectionMapping
                    .putIfAbsent(className, factory);
            if (f != null)
                factory = f;
        }
    }

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

    final CollectionSchema.MessageFactory factory = id < collections.size() ?
            collections.get(id) : null;
    if (factory == null)
        throw new UnknownTypeException("collection id: " + id + " (Outdated registry)");

    return factory;
}
 
Example 9
Source File: FastIdStrategy.java    From turbo-rpc with Apache License 2.0 5 votes vote down vote up
@Override
protected void writeCollectionIdTo(Output output, int fieldNumber, Class<?> clazz) throws IOException {
	@SuppressWarnings("unlikely-arg-type")
	final CollectionSchema.MessageFactory factory = collectionMapping.get(clazz);
	if (factory == null && clazz.getName().startsWith("java.util")) {
		// jdk collection
		// better not to register the jdk collection 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 10
Source File: EnumIO.java    From protostuff with Apache License 2.0 5 votes vote down vote up
/**
 * Returns the factory for an EnumSet (lazy).
 */
public CollectionSchema.MessageFactory getEnumSetFactory()
{
    CollectionSchema.MessageFactory enumSetFactory = this.enumSetFactory;
    if (enumSetFactory == null)
    {
        synchronized (this)
        {
            if ((enumSetFactory = this.enumSetFactory) == null)
                this.enumSetFactory = enumSetFactory = newEnumSetFactory(this);
        }
    }
    return enumSetFactory;
}
 
Example 11
Source File: IncrementalIdStrategy.java    From protostuff with Apache License 2.0 5 votes vote down vote up
@Override
protected CollectionSchema.MessageFactory resolveCollectionFrom(Input input)
        throws IOException
{
    final int id = input.readUInt32();

    final RuntimeCollectionFactory factory = id < collections.size() ?
            collections.get(id) : null;
    if (factory == null)
        throw new UnknownTypeException("Unknown collection id: " + id);

    return factory;
}
 
Example 12
Source File: DefaultIdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
/**
 * Registers a collection. Returns true if registration is successful.
 */
public boolean registerCollection(CollectionSchema.MessageFactory factory)
{
    return null == collectionMapping.putIfAbsent(factory.typeClass()
            .getName(), factory);
}
 
Example 13
Source File: ExplicitIdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
public RegisteredCollectionFactory(int id, CollectionSchema.MessageFactory factory)
{
    this.id = id;
    this.factory = factory;
}
 
Example 14
Source File: IncrementalIdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
@Override
protected CollectionSchema.MessageFactory getCollectionFactory(Class<?> clazz)
{
    return getRuntimeCollectionFactory(clazz);
}
 
Example 15
Source File: FastIdStrategy.java    From turbo-rpc with Apache License 2.0 4 votes vote down vote up
/**
 * Registers a collection. Returns true if registration is successful.
 */
public boolean registerCollection(CollectionSchema.MessageFactory factory) {
	return null == collectionMapping.putIfAbsent(factory.typeClass().getName(), factory);
}
 
Example 16
Source File: IdStrategy.java    From protostuff with Apache License 2.0 4 votes vote down vote up
protected abstract CollectionSchema.MessageFactory resolveCollectionFrom(
Input input) throws IOException;
 
Example 17
Source File: IdStrategy.java    From Jupiter with Apache License 2.0 4 votes vote down vote up
protected abstract CollectionSchema.MessageFactory resolveCollectionFrom(
Input input) throws IOException;
 
Example 18
Source File: IdStrategy.java    From protostuff with Apache License 2.0 2 votes vote down vote up
/**
 * Returns the {@link CollectionSchema.MessageFactory}. The callers (internal field factories) are responsible that
 * the class provided implements {@link Collection}.
 */
protected abstract CollectionSchema.MessageFactory getCollectionFactory(
        Class<?> clazz);
 
Example 19
Source File: IdStrategy.java    From Jupiter with Apache License 2.0 2 votes vote down vote up
/**
 * Returns the {@link CollectionSchema.MessageFactory}. The callers (internal field factories) are responsible that
 * the class provided implements {@link Collection}.
 */
protected abstract CollectionSchema.MessageFactory getCollectionFactory(
        Class<?> clazz);
 
Example 20
Source File: NumericIdStrategy.java    From protostuff with Apache License 2.0 2 votes vote down vote up
/**
 * Collection ids start at 1.
 */
public <T extends Collection<?>> Registry registerCollection(
        CollectionSchema.MessageFactory factory, int id);