data-transfer-service/src/main/java/org/gcube/data/transfer/service/DTService.java

74 lines
2.9 KiB
Java

package org.gcube.data.transfer.service;
import javax.ws.rs.ApplicationPath;
import org.gcube.data.transfer.model.ServiceConstants;
import org.gcube.data.transfer.service.transfers.Capabilities;
import org.gcube.data.transfer.service.transfers.REST;
import org.gcube.data.transfer.service.transfers.Requests;
import org.gcube.data.transfer.service.transfers.TransferStatus;
import org.gcube.data.transfer.service.transfers.engine.AccountingManager;
import org.gcube.data.transfer.service.transfers.engine.CapabilitiesProvider;
import org.gcube.data.transfer.service.transfers.engine.PersistenceProvider;
import org.gcube.data.transfer.service.transfers.engine.PluginManager;
import org.gcube.data.transfer.service.transfers.engine.RequestManager;
import org.gcube.data.transfer.service.transfers.engine.TicketManager;
import org.gcube.data.transfer.service.transfers.engine.factories.AccountingManagerFactory;
import org.gcube.data.transfer.service.transfers.engine.factories.CapabilitiesProviderFactory;
import org.gcube.data.transfer.service.transfers.engine.factories.PersistenceProviderFactory;
import org.gcube.data.transfer.service.transfers.engine.factories.PluginManagerFactory;
import org.gcube.data.transfer.service.transfers.engine.factories.RequestManagerFactory;
import org.gcube.data.transfer.service.transfers.engine.factories.TicketManagerFactory;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@ApplicationPath(ServiceConstants.APPLICATION_PATH)
public class DTService extends ResourceConfig{
public DTService() {
super();
log.warn("Going to define Binder ");
try {
AbstractBinder binder = new AbstractBinder() {
@Override
protected void configure() {
bindFactory(AccountingManagerFactory.class).to(AccountingManager.class);
bindFactory(CapabilitiesProviderFactory.class).to(CapabilitiesProvider.class);
bindFactory(PersistenceProviderFactory.class).to(PersistenceProvider.class);
bindFactory(PluginManagerFactory.class).to(PluginManager.class);
bindFactory(RequestManagerFactory.class).to(RequestManager.class);
bindFactory(TicketManagerFactory.class).to(TicketManager.class);
}
};
register(binder);
registerClasses(Capabilities.class);
registerClasses(Requests.class);
registerClasses(REST.class);
registerClasses(TransferStatus.class);
// ApplicationContext ctx = ContextProvider.get();
// ctx.application().addListener(Listener.class.getName());
packages("org.gcube.data.transfer.service.transfers");
packages("org.glassfish.jersey.media.multipart");
packages("org.glassfish.jersey.media.multipart.internal");
// register(ProviderLoggingListener.class);
register(MultiPartFeature.class);
}catch(Throwable t) {
log.error("Init error ",t );
throw t;
}
}
}