package org.webpieces.router.impl.loader; import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.webpieces.router.impl.FilterInfo; import org.webpieces.router.impl.RouteMeta; import org.webpieces.router.impl.hooks.ClassForName; import org.webpieces.router.impl.hooks.MetaLoaderProxy; import com.google.inject.Injector; @Singleton public class ProdLoader extends AbstractLoader implements MetaLoaderProxy { private ClassForName classForName; @Inject public ProdLoader(MetaLoader loader, ProdClassForName classLoader) { super(loader); this.classForName = classLoader; } protected Object createController(Injector injector, String controllerClassFullName) { Class<?> clazz = classForName.clazzForName(controllerClassFullName); return injector.getInstance(clazz); } @Override public void loadControllerIntoMeta(RouteMeta meta, ResolvedMethod method, boolean isInitializingAllControllers) { try { loadRouteImpl(meta, method); } catch(RuntimeException e) { String msg = "error=\n'"+e.getMessage()+"'\n" +"Check the stack trace for which client calls were calling addRoute or addXXXXRoute for which route is incorrect"; throw new RuntimeException(msg, e); } } @Override public void loadFiltersIntoMeta(RouteMeta m, List<FilterInfo<?>> filters, boolean isInitializingAllFilters) { super.loadFiltersIntoMeta(m, filters); } }