Search in sources :

Example 1 with RegisterTypeHandler

use of org.terasology.persistence.typeHandling.RegisterTypeHandler in project Terasology by MovingBlocks.

the class EnvironmentSwitchHandler method registerTypeHandlers.

@SuppressWarnings({ "rawtypes", "unchecked" })
private static void registerTypeHandlers(Context context, TypeSerializationLibrary library, ModuleEnvironment environment) {
    for (Class<? extends TypeHandler> handler : environment.getSubtypesOf(TypeHandler.class)) {
        RegisterTypeHandler register = handler.getAnnotation(RegisterTypeHandler.class);
        if (register != null) {
            Optional<Type> opt = GenericsUtil.getTypeParameterBindingForInheritedClass(handler, TypeHandler.class, 0);
            if (opt.isPresent()) {
                TypeHandler instance = InjectionHelper.createWithConstructorInjection(handler, context);
                InjectionHelper.inject(instance, context);
                library.add((Class) opt.get(), instance);
            }
        }
    }
}
Also used : Type(java.lang.reflect.Type) RegisterTypeHandler(org.terasology.persistence.typeHandling.RegisterTypeHandler) RegisterTypeHandler(org.terasology.persistence.typeHandling.RegisterTypeHandler) CollisionGroupTypeHandler(org.terasology.persistence.typeHandling.extensionTypes.CollisionGroupTypeHandler) TypeHandler(org.terasology.persistence.typeHandling.TypeHandler)

Aggregations

Type (java.lang.reflect.Type)1 RegisterTypeHandler (org.terasology.persistence.typeHandling.RegisterTypeHandler)1 TypeHandler (org.terasology.persistence.typeHandling.TypeHandler)1 CollisionGroupTypeHandler (org.terasology.persistence.typeHandling.extensionTypes.CollisionGroupTypeHandler)1