package com.google.sitebricks; import org.mvel2.MVEL; import com.google.inject.AbstractModule; import com.google.inject.Stage; import com.google.inject.TypeLiteral; import com.google.sitebricks.binding.MvelRequestBinder; import com.google.sitebricks.binding.RequestBinder; import com.google.sitebricks.conversion.MvelConversionHandlers; import com.google.sitebricks.routing.PageBook; import com.google.sitebricks.routing.RoutingDispatcher; /** * Module encapsulates internal bindings for sitebricks. Can be installed multiple times. */ class SitebricksInternalModule extends AbstractModule { @Override protected void configure() { //set up MVEL namespace (when jarjar-ed, it will use the repackaged namespace) System.setProperty("mvel.namespace", MVEL.class.getPackage().getName().replace('.', '/') + "/"); // Bind default content negotiation annotations // install(new ConnegModule()); TODO(dhanji): Fix this--we have to make SitebricksModule multi-installable //initialize startup services and routing modules install(PageBook.Routing.module()); //development mode services if (Stage.DEVELOPMENT.equals(binder().currentStage())) { bind(PageBook.class).to(DebugModePageBook.class); bind(RoutingDispatcher.class).to(DebugModeRoutingDispatcher.class); } bind(new TypeLiteral<RequestBinder>(){}).to(MvelRequestBinder.class).asEagerSingleton(); // use sitebricks converters in mvel requestInjection(new MvelConversionHandlers()); } @Override public int hashCode() { return SitebricksInternalModule.class.hashCode(); } @Override public boolean equals(Object obj) { return SitebricksInternalModule.class.isInstance(obj); } }