From 16bc565aed7b79837be236f81f6f3b69eedb6f3e Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Mon, 7 Mar 2022 13:59:24 +0100 Subject: [PATCH] UCD Client --- ...lient.java => DefaultDocumentsClient.java} | 31 ++++----- .../geoportal/client/ResponseCommons.java | 19 ++++++ .../geoportal/client/UseCaseDescriptors.java | 63 +++++++++++++++++++ .../client/legacy/ConcessioniManager.java | 8 +-- .../client/legacy/ConcessioniPlugin.java | 2 +- .../client/legacy/MongoConcessioniPlugin.java | 2 +- .../StatefulMongoConcessioniPlugin.java | 2 +- .../GeoportalAbstractPlugin.java | 18 +++--- .../ProjectsInterfacePlugin.java | 5 +- .../geoportal/client/plugins/UCDPlugin.java | 41 ++++++++++++ .../geoportal/clients/GenericUseCases.java | 2 +- .../clients/ProfiledDocumentsTest.java | 6 +- .../geoportal/clients/UCDTests.java | 51 +++++++++++++++ .../clients/legacy/StatefulClientTests.java | 2 +- .../clients/legacy/StatelessClientTests.java | 2 +- ...criptors.java => UseCaseDescriptorsI.java} | 7 ++- .../cms/usecases/ClearConcessioni.java | 2 +- .../application/cms/usecases/EditFileSet.java | 3 +- .../application/cms/usecases/Export.java | 2 +- .../cms/usecases/RepublishAll.java | 2 +- .../cms/usecases/RepublishSingle.java | 2 +- .../application/cms/usecases/StressTest.java | 3 +- .../mocks/ConcessionPublisherThread.java | 2 +- .../cms/usecases/mocks/MockFromFolder.java | 8 --- 24 files changed, 219 insertions(+), 66 deletions(-) rename geoportal-client/src/main/java/org/gcube/application/geoportal/client/{DefaultProfiledDocumentsClient.java => DefaultDocumentsClient.java} (87%) create mode 100644 geoportal-client/src/main/java/org/gcube/application/geoportal/client/ResponseCommons.java create mode 100644 geoportal-client/src/main/java/org/gcube/application/geoportal/client/UseCaseDescriptors.java rename geoportal-client/src/main/java/org/gcube/application/geoportal/client/{ => plugins}/GeoportalAbstractPlugin.java (83%) rename geoportal-client/src/main/java/org/gcube/application/geoportal/client/{ => plugins}/ProjectsInterfacePlugin.java (87%) create mode 100644 geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/UCDPlugin.java create mode 100644 geoportal-client/src/test/java/org/gcube/application/geoportal/clients/UCDTests.java rename geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/{UseCaseDescriptors.java => UseCaseDescriptorsI.java} (70%) diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledDocumentsClient.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultDocumentsClient.java similarity index 87% rename from geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledDocumentsClient.java rename to geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultDocumentsClient.java index fc65d20..d7684b5 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultProfiledDocumentsClient.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/DefaultDocumentsClient.java @@ -25,7 +25,7 @@ import java.util.Iterator; @RequiredArgsConstructor @Slf4j -public class DefaultProfiledDocumentsClient implements Projects { +public class DefaultDocumentsClient implements Projects { @NonNull protected final ProxyDelegate delegate; @@ -45,7 +45,7 @@ public class DefaultProfiledDocumentsClient implements Projec log.debug("Creating Profiled Document (class {}, useCaseDescriptor {}) with content {} ", getManagedClass(),profileID, toCreate); Call call = endpoint -> { - return check(endpoint.path(profileID).request(MediaType.APPLICATION_JSON). + return ResponseCommons.check(endpoint.path(profileID).request(MediaType.APPLICATION_JSON). post(Entity.entity(toCreate, MediaType.APPLICATION_JSON)),getManagedClass()); }; T toReturn = delegate.make(call); @@ -70,7 +70,7 @@ public class DefaultProfiledDocumentsClient implements Projec try { log.debug("Deleting ID {}  useCaseDescriptor {}  force {} ", id, profileID, force); Call call = endpoint -> { - return check(endpoint.path(profileID).path(id). + return ResponseCommons.check(endpoint.path(profileID).path(id). queryParam(InterfaceConstants.Parameters.FORCE,force). request(MediaType.APPLICATION_JSON).delete(),getManagedClass()); }; @@ -91,7 +91,7 @@ public class DefaultProfiledDocumentsClient implements Projec log.info("Loading Document ID {} (class {}, useCaseDescriptor {})", id, getManagedClass(),profileID); Call call = endpoint -> { - return check(endpoint.path(profileID).path(id). + return ResponseCommons.check(endpoint.path(profileID).path(id). request(MediaType.APPLICATION_JSON).get(), getManagedClass()); }; return delegate.make(call); @@ -109,7 +109,7 @@ public class DefaultProfiledDocumentsClient implements Projec try { log.info("Loading Configuration for useCaseDescriptor {}", profileID); Call call = endpoint -> { - return check(endpoint.path(profileID).path(InterfaceConstants.Methods.CONFIGURATION_PATH). + return ResponseCommons.check(endpoint.path(profileID).path(InterfaceConstants.Methods.CONFIGURATION_PATH). request(MediaType.APPLICATION_JSON).get(), Configuration.class); }; return delegate.make(call); @@ -145,8 +145,8 @@ public class DefaultProfiledDocumentsClient implements Projec try { log.debug("Querying useCaseDescriptor {}  for {}",profileID,request); Call call = endpoint -> { - return check(endpoint.path(profileID).path(InterfaceConstants.Methods.QUERY_PATH). - request(MediaType.APPLICATION_JSON).get(), String.class); + return ResponseCommons.check(endpoint.path(profileID).path(InterfaceConstants.Methods.QUERY_PATH). + request(MediaType.APPLICATION_JSON).post(Entity.entity(request,MediaType.APPLICATION_JSON)), String.class); }; return delegate.make(call); }catch(RemoteException e){ @@ -164,7 +164,7 @@ public class DefaultProfiledDocumentsClient implements Projec log.debug("Executing step on {} (class {}, useCaseDescriptor {}) with request {} ", id, getManagedClass(),profileID, request); Call call = endpoint -> { - return check(endpoint.path(profileID).path(id).request(MediaType.APPLICATION_JSON). + return ResponseCommons.check(endpoint.path(profileID).path(id).request(MediaType.APPLICATION_JSON). post(Entity.entity(request, MediaType.APPLICATION_JSON)),getManagedClass()); }; T toReturn = delegate.make(call); @@ -186,7 +186,7 @@ public class DefaultProfiledDocumentsClient implements Projec log.debug("Registering FileSet on {} (class {}, useCaseDescriptor {}) with request {} ", id, getManagedClass(),profileID, req); Call call = endpoint -> { - return check(endpoint.path(profileID).path(InterfaceConstants.Methods.REGISTER_FILES_PATH) + return ResponseCommons.check(endpoint.path(profileID).path(InterfaceConstants.Methods.REGISTER_FILES_PATH) .path(id).request(MediaType.APPLICATION_JSON). post(Entity.entity(req, MediaType.APPLICATION_JSON)),getManagedClass()); }; @@ -209,7 +209,7 @@ public class DefaultProfiledDocumentsClient implements Projec log.debug("Deleting Fileset for ID {}  [useCaseDescriptor {}  , class {}] at {} (force {} )", id, profileID,getManagedClass(),path, force); Call call = endpoint -> { - return check(endpoint.path(profileID).path(InterfaceConstants.Methods.DELETE_FILES_PATH). + return ResponseCommons.check(endpoint.path(profileID).path(InterfaceConstants.Methods.DELETE_FILES_PATH). path(id).queryParam(InterfaceConstants.Parameters.FORCE,force). request(MediaType.APPLICATION_JSON). post(Entity.entity(path, MediaType.APPLICATION_JSON)),getManagedClass()); @@ -232,7 +232,7 @@ public class DefaultProfiledDocumentsClient implements Projec log.debug("Updateing {}  [useCaseDescriptor {}  , class {}] with ", id, profileID,getManagedClass(),updatedDocument); Call call = endpoint -> { - return check(endpoint.path(profileID).path(id). + return ResponseCommons.check(endpoint.path(profileID).path(id). request(MediaType.APPLICATION_JSON). put(Entity.entity(updatedDocument, MediaType.APPLICATION_JSON)),getManagedClass()); }; @@ -248,12 +248,5 @@ public class DefaultProfiledDocumentsClient implements Projec } } - protected static R check(Response resp, Class clazz) throws IOException { - String resString=resp.readEntity(String.class); - if(resp.getStatus()<200||resp.getStatus()>=300) - throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resString); - if(clazz!=null) - return Serialization.read(resString, clazz); - else return null; - } + } diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ResponseCommons.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ResponseCommons.java new file mode 100644 index 0000000..bae0f4a --- /dev/null +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ResponseCommons.java @@ -0,0 +1,19 @@ +package org.gcube.application.geoportal.client; + +import org.gcube.application.geoportal.client.utils.Serialization; + +import javax.ws.rs.core.Response; +import java.io.IOException; +import java.rmi.RemoteException; + +public class ResponseCommons { + + protected static R check(Response resp, Class clazz) throws IOException { + String resString=resp.readEntity(String.class); + if(resp.getStatus()<200||resp.getStatus()>=300) + throw new RemoteException("RESP STATUS IS "+resp.getStatus()+". Message : "+resString); + if(clazz!=null) + return Serialization.read(resString, clazz); + else return null; + } +} diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/UseCaseDescriptors.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/UseCaseDescriptors.java new file mode 100644 index 0000000..f4de3d4 --- /dev/null +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/UseCaseDescriptors.java @@ -0,0 +1,63 @@ +package org.gcube.application.geoportal.client; + +import lombok.NonNull; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.bson.Document; +import org.gcube.application.geoportal.client.utils.Serialization; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; +import org.gcube.application.geoportal.common.rest.InterfaceConstants; +import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI; +import org.gcube.common.clients.Call; +import org.gcube.common.clients.delegates.ProxyDelegate; + +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; +import java.rmi.RemoteException; +import java.util.Iterator; + +@RequiredArgsConstructor +@Slf4j +public class UseCaseDescriptors implements UseCaseDescriptorsI { + + @NonNull + private final ProxyDelegate delegate; + + + @Override + public UseCaseDescriptor create(Document toCreate) throws RemoteException { + throw new RuntimeException("Yet To Implement"); + } + + @Override + public Iterator query(QueryRequest request) throws Exception { + String json = delegate.make(webTarget -> + ResponseCommons.check(webTarget.path(InterfaceConstants.Methods.QUERY_PATH). + request(MediaType.APPLICATION_JSON).post(Entity.entity(request,MediaType.APPLICATION_JSON)), + String.class)); + try{ + return Serialization.readCollection(json,UseCaseDescriptor.class); + }catch(Throwable t){ + log.error("Unable to query UCD with {} ",request,t); + throw new Exception("Unable to parse collection. Check projection settings.",t); + } + } + + @Override + public void deleteById(String id, boolean force) throws RemoteException { + throw new RuntimeException("Yet To Implement"); + } + + @Override + public UseCaseDescriptor update(String ID, Document toSet) throws RemoteException { + throw new RuntimeException("Yet To Implement"); + } + + @Override + public UseCaseDescriptor getById(String id) throws Exception { + return delegate.make(webTarget -> ResponseCommons.check(webTarget.path(id). + request(MediaType.APPLICATION_JSON_TYPE).get(),UseCaseDescriptor.class)); + } +} diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniManager.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniManager.java index ea840ca..8bdd18e 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniManager.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniManager.java @@ -1,23 +1,17 @@ package org.gcube.application.geoportal.client.legacy; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.concessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.concessioni; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import org.gcube.application.geoportal.common.model.legacy.Concessione; -import org.gcube.application.geoportal.common.model.legacy.InputStreamDescriptor; -import org.gcube.application.geoportal.common.model.legacy.LayerConcessione; -import org.gcube.application.geoportal.common.model.legacy.RelazioneScavo; -import org.gcube.application.geoportal.common.model.legacy.UploadedImage; -import org.gcube.application.geoportal.common.model.legacy.report.PublicationReport; import org.gcube.application.geoportal.common.rest.ConcessioniI; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.MappingIterator; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.SerializationFeature; diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniPlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniPlugin.java index 1325637..f687a36 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniPlugin.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/ConcessioniPlugin.java @@ -5,7 +5,7 @@ import javax.xml.namespace.QName; import javax.xml.transform.dom.DOMResult; import javax.xml.ws.EndpointReference; -import org.gcube.application.geoportal.client.GeoportalAbstractPlugin; +import org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin; import org.gcube.application.geoportal.common.rest.ConcessioniI; import org.gcube.application.geoportal.common.rest.InterfaceConstants; import org.gcube.common.calls.jaxrs.GcubeService; diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/MongoConcessioniPlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/MongoConcessioniPlugin.java index 0b16b7d..df435d5 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/MongoConcessioniPlugin.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/MongoConcessioniPlugin.java @@ -6,7 +6,7 @@ import javax.xml.transform.dom.DOMResult; import javax.xml.ws.EndpointReference; import org.gcube.application.geoportal.client.DefaultMongoConcessioni; -import org.gcube.application.geoportal.client.GeoportalAbstractPlugin; +import org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin; import org.gcube.application.geoportal.common.rest.InterfaceConstants; import org.gcube.application.geoportal.common.rest.MongoConcessioni; import org.gcube.common.calls.jaxrs.GcubeService; diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioniPlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioniPlugin.java index e3df770..e313c1f 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioniPlugin.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/legacy/StatefulMongoConcessioniPlugin.java @@ -5,7 +5,7 @@ import javax.xml.namespace.QName; import javax.xml.transform.dom.DOMResult; import javax.xml.ws.EndpointReference; -import org.gcube.application.geoportal.client.GeoportalAbstractPlugin; +import org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin; import org.gcube.application.geoportal.common.rest.InterfaceConstants; import org.gcube.common.calls.jaxrs.GcubeService; import org.gcube.common.calls.jaxrs.TargetFactory; diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/GeoportalAbstractPlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/GeoportalAbstractPlugin.java similarity index 83% rename from geoportal-client/src/main/java/org/gcube/application/geoportal/client/GeoportalAbstractPlugin.java rename to geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/GeoportalAbstractPlugin.java index 1482c98..aa2c0fd 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/GeoportalAbstractPlugin.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/GeoportalAbstractPlugin.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportal.client; +package org.gcube.application.geoportal.client.plugins; import javax.ws.rs.client.WebTarget; @@ -7,10 +7,7 @@ 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.ConcessioniI; -import org.gcube.application.geoportal.common.rest.InterfaceConstants; -import org.gcube.application.geoportal.common.rest.MongoConcessioni; -import org.gcube.application.geoportal.common.rest.Projects; +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; @@ -22,28 +19,31 @@ import lombok.AllArgsConstructor; public abstract class GeoportalAbstractPlugin implements Plugin{ + public static ProxyBuilder useCaseDescriptors() { + return new ProxyBuilderImpl(new UCDPlugin()); + } - public static ProxyBuilder> profiledDocuments(String profileID) { + public static ProxyBuilder> projects(String profileID) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); return new ProxyBuilderImpl>(plugin); } - public static > ProxyBuilder profiledDocuments(String profileID, Class customClient) { + public static > ProxyBuilder projects(String profileID, Class customClient) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); plugin.setCustomClientImplementation(customClient); return new ProxyBuilderImpl(plugin); } public static

ProxyBuilder> - profiledModel(String profileID, Class

customModel ) { + customModel(String profileID, Class

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

> ProxyBuilder - profiledModel(String profileID, Class

customModel ,Class customClient) { + customModel(String profileID, Class

customModel , Class customClient) { ProjectsInterfacePlugin plugin=new ProjectsInterfacePlugin(profileID); plugin.setProfiledModel(customModel); plugin.setCustomClientImplementation(customClient); diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsInterfacePlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/ProjectsInterfacePlugin.java similarity index 87% rename from geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsInterfacePlugin.java rename to geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/ProjectsInterfacePlugin.java index e386757..9e4d2d8 100644 --- a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/ProjectsInterfacePlugin.java +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/ProjectsInterfacePlugin.java @@ -1,4 +1,4 @@ -package org.gcube.application.geoportal.client; +package org.gcube.application.geoportal.client.plugins; import javax.ws.rs.client.WebTarget; import javax.xml.namespace.QName; @@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.gcube.application.geoportal.client.DefaultDocumentsClient; import org.gcube.application.geoportal.common.model.document.Project; import org.gcube.application.geoportal.common.rest.InterfaceConstants; import org.gcube.application.geoportal.common.rest.Projects; @@ -21,7 +22,7 @@ import org.w3c.dom.Node; @Slf4j @RequiredArgsConstructor -public class ProjectsInterfacePlugin extends GeoportalAbstractPlugin>{ +public class ProjectsInterfacePlugin extends GeoportalAbstractPlugin>{ @NonNull private String profileID; diff --git a/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/UCDPlugin.java b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/UCDPlugin.java new file mode 100644 index 0000000..c75b214 --- /dev/null +++ b/geoportal-client/src/main/java/org/gcube/application/geoportal/client/plugins/UCDPlugin.java @@ -0,0 +1,41 @@ +package org.gcube.application.geoportal.client.plugins; + +import org.gcube.application.geoportal.client.UseCaseDescriptors; +import org.gcube.application.geoportal.common.rest.InterfaceConstants; +import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI; +import org.gcube.common.calls.jaxrs.GcubeService; +import org.gcube.common.calls.jaxrs.TargetFactory; +import org.gcube.common.clients.config.ProxyConfig; +import org.gcube.common.clients.delegates.ProxyDelegate; +import org.w3c.dom.Node; + +import javax.ws.rs.client.WebTarget; +import javax.xml.namespace.QName; +import javax.xml.transform.dom.DOMResult; +import javax.xml.ws.EndpointReference; + +public class UCDPlugin extends GeoportalAbstractPlugin{ + + @Override + public Exception convert(Exception fault, ProxyConfig config) { + return super.convert(fault, config); + } + + @Override + public UseCaseDescriptorsI newProxy(ProxyDelegate proxyDelegate) { + return new UseCaseDescriptors(proxyDelegate); + } + + @Override + public WebTarget resolve(EndpointReference endpointReference, ProxyConfig proxyConfig) throws Exception { + DOMResult result = new DOMResult(); + endpointReference.writeTo(result); + Node node =result.getNode(); + Node child=node.getFirstChild(); + String addressString = child.getTextContent(); + GcubeService service = GcubeService.service(). + withName(new QName(InterfaceConstants.NAMESPACE,InterfaceConstants.Methods.UCD)). + andPath(InterfaceConstants.Methods.UCD); + return TargetFactory.stubFor(service).at(addressString); + } +} diff --git a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/GenericUseCases.java b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/GenericUseCases.java index 6a08d51..675bd0c 100644 --- a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/GenericUseCases.java +++ b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/GenericUseCases.java @@ -14,7 +14,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.rmi.RemoteException; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.projects; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.projects; public class GenericUseCases { diff --git a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/ProfiledDocumentsTest.java b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/ProfiledDocumentsTest.java index bfc0b03..3aa0e7f 100644 --- a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/ProfiledDocumentsTest.java +++ b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/ProfiledDocumentsTest.java @@ -1,6 +1,6 @@ package org.gcube.application.geoportal.clients; -import org.gcube.application.geoportal.client.DefaultProfiledDocumentsClient; +import org.gcube.application.geoportal.client.DefaultDocumentsClient; import org.gcube.application.geoportal.common.model.document.Project; import org.gcube.application.geoportal.common.model.rest.Configuration; import org.gcube.application.geoportal.common.model.rest.QueryRequest; @@ -12,7 +12,7 @@ import java.rmi.RemoteException; import java.util.concurrent.atomic.AtomicLong; import static junit.framework.TestCase.assertTrue; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.*; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.*; import static org.junit.Assume.assumeTrue; public class ProfiledDocumentsTest> extends BasicVreTests{ @@ -20,7 +20,7 @@ public class ProfiledDocumentsTest> exte protected String getProfileID(){return "profiledConcessioni";} protected C getClient(){ - return (C) profiledModel(getProfileID(), Project.class,DefaultProfiledDocumentsClient.class).build(); + return (C) customModel(getProfileID(), Project.class, DefaultDocumentsClient.class).build(); } diff --git a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/UCDTests.java b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/UCDTests.java new file mode 100644 index 0000000..8ed53bf --- /dev/null +++ b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/UCDTests.java @@ -0,0 +1,51 @@ +package org.gcube.application.geoportal.clients; + +import org.gcube.application.geoportal.client.utils.Queries; +import org.gcube.application.geoportal.common.model.rest.QueryRequest; +import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI; +import org.gcube.application.geoportal.common.utils.tests.GCubeTest; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.concurrent.atomic.AtomicLong; + +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors; +import static org.junit.Assume.assumeTrue; + +public class UCDTests { + + UseCaseDescriptorsI client =null; + + @Before + public void getClient(){ + assumeTrue(GCubeTest.isTestInfrastructureEnabled()); + client =useCaseDescriptors().build(); + } + + @Test + public void query() throws Exception { + QueryRequest request = new QueryRequest(); + // All + AtomicLong counter = new AtomicLong(0l); + client.query(request).forEachRemaining(u ->counter.incrementAndGet()); + System.out.println("Count : "+counter.get()); + } + + @Test + public void getById() throws Exception { + UseCaseDescriptorsI client = useCaseDescriptors().build(); + + QueryRequest request = new QueryRequest(); + // All + + client.query(request).forEachRemaining(u -> { + try { + client.getById(u.getId()); + } catch (Exception e) { + e.printStackTrace(System.err); + Assert.fail("Unable to get "+u.getId()); + } + }); + } +} diff --git a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatefulClientTests.java b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatefulClientTests.java index 0c97682..215e243 100644 --- a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatefulClientTests.java +++ b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatefulClientTests.java @@ -1,6 +1,6 @@ package org.gcube.application.geoportal.clients.legacy; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.statefulMongoConcessioni; import static org.junit.Assert.*; import static org.junit.Assume.assumeTrue; diff --git a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatelessClientTests.java b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatelessClientTests.java index c7844c5..f6ac25e 100644 --- a/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatelessClientTests.java +++ b/geoportal-client/src/test/java/org/gcube/application/geoportal/clients/legacy/StatelessClientTests.java @@ -20,7 +20,7 @@ import java.io.File; import java.util.Iterator; import java.util.concurrent.atomic.AtomicLong; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.mongoConcessioni; import static org.junit.Assert.*; import static org.junit.Assume.assumeTrue; diff --git a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/UseCaseDescriptors.java b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/UseCaseDescriptorsI.java similarity index 70% rename from geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/UseCaseDescriptors.java rename to geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/UseCaseDescriptorsI.java index 0f8aa77..c55185b 100644 --- a/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/UseCaseDescriptors.java +++ b/geoportal-common/src/main/java/org/gcube/application/geoportal/common/rest/UseCaseDescriptorsI.java @@ -5,17 +5,18 @@ import org.gcube.application.geoportal.common.model.rest.QueryRequest; import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; import java.rmi.RemoteException; +import java.util.Iterator; -public interface UseCaseDescriptors { +public interface UseCaseDescriptorsI { public UseCaseDescriptor create(Document toCreate)throws RemoteException; - public Iterable query(QueryRequest request)throws RemoteException; + public Iterator query(QueryRequest request) throws Exception; public void deleteById(String id,boolean force)throws RemoteException; public UseCaseDescriptor update(String ID, Document toSet)throws RemoteException; - public UseCaseDescriptor getById(String id)throws RemoteException; + public UseCaseDescriptor getById(String id) throws Exception; } diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/ClearConcessioni.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/ClearConcessioni.java index af14952..b584b0f 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/ClearConcessioni.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/ClearConcessioni.java @@ -13,7 +13,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.statefulMongoConcessioni; @Slf4j public class ClearConcessioni { diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/EditFileSet.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/EditFileSet.java index 8059724..632658f 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/EditFileSet.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/EditFileSet.java @@ -2,7 +2,6 @@ package org.gcube.application.cms.usecases; import org.gcube.application.cms.tests.TokenSetter; import org.gcube.application.cms.usecases.mocks.ConcessionPublisherThread; -import org.gcube.application.geoportal.common.utils.FileSets; import org.gcube.application.geoportal.common.model.legacy.Concessione; @@ -13,7 +12,7 @@ import org.gcube.application.geoportal.common.utils.StorageUtils; import java.io.File; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.mongoConcessioni; public class EditFileSet { diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/Export.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/Export.java index 935a859..7f5c1f6 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/Export.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/Export.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicLong; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.statefulMongoConcessioni; @Slf4j /* diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishAll.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishAll.java index 1577f71..b2cbf00 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishAll.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishAll.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.concurrent.atomic.AtomicLong; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.statefulMongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.statefulMongoConcessioni; public class RepublishAll { diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishSingle.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishSingle.java index ad9d37e..84b8ce6 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishSingle.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/RepublishSingle.java @@ -5,7 +5,7 @@ import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.rest.MongoConcessioni; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.mongoConcessioni; public class RepublishSingle { diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/StressTest.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/StressTest.java index 7890150..2862784 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/StressTest.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/StressTest.java @@ -8,7 +8,6 @@ import org.gcube.application.cms.usecases.mocks.ConcessionPublisherThread; import org.gcube.application.geoportal.common.model.legacy.Concessione; import org.gcube.application.geoportal.common.model.rest.AddSectionToConcessioneRequest; import org.gcube.application.geoportal.common.rest.MongoConcessioni; -import org.gcube.application.geoportal.common.utils.FileSets; import org.gcube.application.geoportal.common.utils.StorageUtils; import java.io.File; @@ -18,7 +17,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.mongoConcessioni; @Slf4j public class StressTest { diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/ConcessionPublisherThread.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/ConcessionPublisherThread.java index 4c74894..ca3844f 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/ConcessionPublisherThread.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/ConcessionPublisherThread.java @@ -26,7 +26,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; +import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.mongoConcessioni; @Slf4j @RequiredArgsConstructor diff --git a/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/MockFromFolder.java b/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/MockFromFolder.java index 802f845..e8f9ef7 100644 --- a/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/MockFromFolder.java +++ b/use-cases/src/test/java/org/gcube/application/cms/usecases/mocks/MockFromFolder.java @@ -4,21 +4,13 @@ import com.opencsv.CSVReader; import lombok.extern.slf4j.Slf4j; import org.gcube.application.cms.tests.TokenSetter; import org.gcube.application.cms.tests.model.concessioni.TestConcessioniModel; -import org.gcube.application.geoportal.client.utils.Serialization; -import org.gcube.application.geoportal.common.utils.FileSets; import org.gcube.application.geoportal.common.model.legacy.Concessione; -import org.gcube.application.geoportal.common.model.legacy.report.ValidationReport; -import org.gcube.application.geoportal.common.rest.MongoConcessioni; -import org.gcube.application.geoportal.common.utils.Files; -import org.gcube.application.geoportal.common.utils.StorageUtils; -import org.gcube.contentmanagement.blobstorage.report.Report; import java.io.*; import java.util.*; import java.util.function.Consumer; -import static org.gcube.application.geoportal.client.GeoportalAbstractPlugin.mongoConcessioni; import static org.junit.Assert.assertTrue; @Slf4j