package org.webpieces.webserver.dev; import org.webpieces.compiler.api.CompileOnDemand; import org.webpieces.devrouter.impl.DevClassForName; import org.webpieces.devrouter.impl.DevLoader; import org.webpieces.devrouter.impl.DevRoutingService; import org.webpieces.frontend.api.HttpFrontendManager; import org.webpieces.router.api.RouterService; import org.webpieces.router.impl.hooks.ClassForName; import org.webpieces.router.impl.hooks.MetaLoaderProxy; import org.webpieces.webserver.test.MockHttpFrontendMgr; import com.google.inject.Binder; import com.google.inject.Module; public class ForTestingStaticDevelopmentModeModule implements Module { @Override public void configure(Binder binder) { binder.bind(HttpFrontendManager.class).toInstance(new MockHttpFrontendMgr()); binder.bind(RouterService.class).to(DevRoutingService.class).asEagerSingleton(); binder.bind(MetaLoaderProxy.class).to(DevLoader.class).asEagerSingleton(); binder.bind(ClassForName.class).to(DevClassForName.class).asEagerSingleton(); binder.bind(CompileOnDemand.class).to(NoCompiling.class).asEagerSingleton(); } private static class NoCompiling implements CompileOnDemand { private ClassLoader cl = ForTestingStaticDevelopmentModeModule.class.getClassLoader(); @Override public Class<?> loadClass(String clazzName) { try { return cl.loadClass(clazzName); } catch (ClassNotFoundException e) { throw new RuntimeException("could not load class", e); } } @Override public Class<?> loadClass(String name, boolean forceReload) { try { return cl.loadClass(name); } catch (ClassNotFoundException e) { throw new RuntimeException("could not load class", e); } } } }