Search in sources :

Example 1 with RegisterTypeHandler

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

the class EnvironmentSwitchHandler method registerTypeHandlers.

@SuppressWarnings({ "rawtypes", "unchecked" })
private static void registerTypeHandlers(Context context, TypeHandlerLibrary 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.addTypeHandler(TypeInfo.of(opt.get()), instance);
            }
        }
    }
    for (Class<? extends TypeHandlerFactory> clazz : environment.getSubtypesOf(TypeHandlerFactory.class)) {
        if (!clazz.isAnnotationPresent(RegisterTypeHandlerFactory.class)) {
            continue;
        }
        TypeHandlerFactory instance = InjectionHelper.createWithConstructorInjection(clazz, context);
        InjectionHelper.inject(instance, context);
        library.addTypeHandlerFactory(instance);
    }
}
Also used : Type(java.lang.reflect.Type) RegisterTypeHandlerFactory(org.terasology.engine.persistence.typeHandling.RegisterTypeHandlerFactory) RegisterTypeHandler(org.terasology.engine.persistence.typeHandling.RegisterTypeHandler) TypeHandlerFactory(org.terasology.persistence.typeHandling.TypeHandlerFactory) RegisterTypeHandlerFactory(org.terasology.engine.persistence.typeHandling.RegisterTypeHandlerFactory) CollisionGroupTypeHandler(org.terasology.engine.persistence.typeHandling.extensionTypes.CollisionGroupTypeHandler) TypeHandler(org.terasology.persistence.typeHandling.TypeHandler) RegisterTypeHandler(org.terasology.engine.persistence.typeHandling.RegisterTypeHandler)

Aggregations

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