package org.gcube.application.geoportal.client.plugins; import javax.ws.rs.client.WebTarget; import org.gcube.application.geoportal.client.legacy.ConcessioniManagerI; import org.gcube.application.geoportal.client.legacy.ConcessioniPlugin; import org.gcube.application.geoportal.client.legacy.MongoConcessioniPlugin; import org.gcube.application.geoportal.client.legacy.StatefulMongoConcessioniPlugin; import org.gcube.application.geoportal.common.model.document.Project; import org.gcube.application.geoportal.common.rest.*; import org.gcube.common.clients.Plugin; import org.gcube.common.clients.ProxyBuilder; import org.gcube.common.clients.ProxyBuilderImpl; import org.gcube.common.clients.config.ProxyConfig; import lombok.AllArgsConstructor; @AllArgsConstructor public abstract class GeoportalAbstractPlugin implements Plugin{ public static ProxyBuilder useCaseDescriptors() { return new ProxyBuilderImpl(new UCDPlugin()); } public static ProxyBuilder> projects(String profileID) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); return new ProxyBuilderImpl>(plugin); } public static > ProxyBuilder projects(String profileID, Class customClient) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); plugin.setCustomClientImplementation(customClient); return new ProxyBuilderImpl(plugin); } public static

ProxyBuilder> customModel(String profileID, Class

customModel ) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); plugin.setProfiledModel(customModel); return new ProxyBuilderImpl>(plugin); } public static

> ProxyBuilder customModel(String profileID, Class

customModel , Class customClient) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); plugin.setProfiledModel(customModel); plugin.setCustomClientImplementation(customClient); return new ProxyBuilderImpl(plugin); } @Override public Exception convert(Exception fault, ProxyConfig config) { return fault; } @Override public String name() { return InterfaceConstants.APPLICATION_BASE_PATH+InterfaceConstants.APPLICATION_PATH; } @Override public String namespace() { return InterfaceConstants.NAMESPACE; } @Override public String serviceClass() { return InterfaceConstants.SERVICE_CLASS; } @Override public String serviceName() { return InterfaceConstants.SERVICE_NAME; } //******** LEGACY public static ProxyBuilder concessioni() { return new ProxyBuilderImpl(concessioni_plugin); } public static ProxyBuilder mongoConcessioni(){ return new ProxyBuilderImpl(mongo_concessioni_plugin); } public static ProxyBuilder statefulMongoConcessioni(){ return new ProxyBuilderImpl(stateful_mongo_concessioni_plugin); } //** LEGACY @Deprecated private static ConcessioniPlugin concessioni_plugin=new ConcessioniPlugin(); @Deprecated private static MongoConcessioniPlugin mongo_concessioni_plugin=new MongoConcessioniPlugin(); @Deprecated private static StatefulMongoConcessioniPlugin stateful_mongo_concessioni_plugin=new StatefulMongoConcessioniPlugin(); }