package org.easysoa.registry.rest;
import java.util.HashSet;
import java.util.Set;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.codehaus.jackson.map.ObjectMapper;
import org.easysoa.registry.cartography.rest.CartographyController;
import org.easysoa.registry.context.rest.ContextController;
import org.easysoa.registry.dashboard.rest.MatchingDashboard;
import org.easysoa.registry.dbb.rest.ServiceFinderRest;
import org.easysoa.registry.documentation.rest.ServiceDocumentationController;
import org.easysoa.registry.governance.rest.GovernanceController;
import org.easysoa.registry.index.rest.IndexController;
import org.easysoa.registry.indicators.rest.IndicatorsController;
import org.easysoa.registry.integration.EndpointStateServiceImpl;
import org.easysoa.registry.integration.SimpleRegistryServiceImpl;
import org.easysoa.registry.monitoring.rest.MonitoringController;
import org.easysoa.registry.tools.rest.ToolsController;
//import org.easysoa.registry.rest.jackson.JsonMessageReader;
//import org.easysoa.registry.rest.jackson.JsonMessageWriter;
import org.nuxeo.ecm.webengine.app.WebEngineModule;
/**
* EasySOA Module.
*
* Used only for webengine configuration : REST (JSON reader/writer) & controllers
* (this is NOT the module that is provided to Freemarker templates).
*
* @author mkalam-alami
*
*/
public class EasySOAModule extends WebEngineModule {
@Override
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<Object>();
// custom JAXRS provider :
//singletons.add(new JsonMessageReader());
//singletons.add(new JsonMessageWriter());
// Jersey's Jackson provider ;
//singletons.add(new JacksonProviderProxy()); // however its configuration would be Jersey's
// see http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/
// http://grepcode.com/file/repo1.maven.org/maven2/com.sun.jersey/jersey-bundle/1.11/com/sun/jersey/json/impl/provider/entity/JacksonProviderProxy.java?av=f
// Jackson's provider :
//ObjectMapper mapper = new ObjectMapper(); // allows to configure Jackson
JacksonJsonProvider jacksonJsonProvider = new JacksonJsonProvider(/*mapper*/); // from jackson-jaxrs
singletons.add(jacksonJsonProvider);
// JAXB provider :
// using Jersey's default one (Jettison I guess ? or Jackson also ??)
return singletons;
}
@Override
public Class<?>[] getWebTypes() {
return new Class<?>[] {
RegistryApiImpl.class,
SimpleRegistryServiceImpl.class,
EndpointStateServiceImpl.class,
IndicatorsController.class,
ServiceDocumentationController.class,
MatchingDashboard.class,
ServiceFinderRest.class,
MonitoringController.class,
ContextController.class,
IndexController.class,
GovernanceController.class,
CartographyController.class,
SoapUIConfRest.class,
ToolsController.class
};
}
}