From b75f9d5f90d92ddaf10f6ef51df8b79b54f277fd Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 8 Apr 2019 09:55:21 +0000 Subject: [PATCH] Added classed to backward compatibility with the property URL_RESOLVER declared in the production CKanDataCatalogue endpoints [uri-resolver-hostname]/uri-resolver/catalogue git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@178897 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 3 ++ .../datatransfer/resolver/UriResolver.java | 3 +- .../resolver/UriResolverServices.java | 2 +- .../catalogue/ResourceCatalogueCodes.java | 2 +- .../requesthandler/RequestHandler.java | 32 +++++++++++++-- .../BackCatalogueResolver.java | 3 +- .../BackUriResolverCatalogueResolver.java | 40 +++++++++++++++++++ 7 files changed, 77 insertions(+), 8 deletions(-) rename src/main/java/org/gcube/datatransfer/resolver/services/{ => tobackward}/BackCatalogueResolver.java (89%) create mode 100644 src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackUriResolverCatalogueResolver.java diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index cfa6374..21f61b8 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -4,6 +4,9 @@ + + uses + diff --git a/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java b/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java index 76cd2a4..8cc867c 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java @@ -6,6 +6,7 @@ import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation; import org.gcube.datatransfer.resolver.init.UriResolverSmartGearManagerInit; import org.gcube.datatransfer.resolver.requesthandler.RequestHandler; import org.gcube.datatransfer.resolver.services.CatalogueResolver; +import org.gcube.datatransfer.resolver.services.tobackward.BackCatalogueResolver; import org.gcube.smartgears.annotations.ManagedBy; import org.glassfish.jersey.server.ResourceConfig; @@ -15,7 +16,7 @@ public class UriResolver extends ResourceConfig { public UriResolver() { // Register all resources present under the package. - packages(CatalogueResolver.class.getPackage().getName(), RequestHandler.class.getPackage().getName()); + packages(CatalogueResolver.class.getPackage().getName(), RequestHandler.class.getPackage().getName(), BackCatalogueResolver.class.getPackage().getName()); packages(DataMinerInvocation.class.getPackage().getName()); } } diff --git a/src/main/java/org/gcube/datatransfer/resolver/UriResolverServices.java b/src/main/java/org/gcube/datatransfer/resolver/UriResolverServices.java index ee0439b..a4f8051 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/UriResolverServices.java +++ b/src/main/java/org/gcube/datatransfer/resolver/UriResolverServices.java @@ -192,7 +192,7 @@ public class UriResolverServices { if(listResourcePath.isEmpty()){ log.info("Reference to the List of Resources/Services is empty, creating it..."); readResources(applicationClasses); - log.info("Hard-Coding the resource/s: "); + log.info("Hard-Coding the resource/s: "+ConstantsResolver.resourcesHardCoded); listResourcePath.addAll(Arrays.asList(ConstantsResolver.resourcesHardCoded)); } diff --git a/src/main/java/org/gcube/datatransfer/resolver/catalogue/ResourceCatalogueCodes.java b/src/main/java/org/gcube/datatransfer/resolver/catalogue/ResourceCatalogueCodes.java index d81c0f9..57fb069 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/catalogue/ResourceCatalogueCodes.java +++ b/src/main/java/org/gcube/datatransfer/resolver/catalogue/ResourceCatalogueCodes.java @@ -18,7 +18,7 @@ import java.util.List; public enum ResourceCatalogueCodes { CTLG("ctlg","dataset", "Catalogue Product/Dataset"), - CTLGP("ctlg-p","product", "Catalogue Product"), + //CTLGP("ctlg-p","product", "Catalogue Product"), CTLGD("ctlg-d","dataset", "Catalogue Dataset"), CTLGO("ctlg-o","organization", "Catalogue Organization"), CTLGG("ctlg-g","group", "Catalogue Group"); diff --git a/src/main/java/org/gcube/datatransfer/resolver/requesthandler/RequestHandler.java b/src/main/java/org/gcube/datatransfer/resolver/requesthandler/RequestHandler.java index cdd7bf8..431af94 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/requesthandler/RequestHandler.java +++ b/src/main/java/org/gcube/datatransfer/resolver/requesthandler/RequestHandler.java @@ -86,15 +86,39 @@ public class RequestHandler implements ContainerRequestFilter, ContainerResponse try { splittePath = path.split("/"); if(splittePath!=null && splittePath.length>0) { - String resourceName = splittePath[0]; - if(resourceName!=null && !resourceName.isEmpty()) { + String requestedResourceName = splittePath[0]; + log.debug("The resource requested is: {}",requestedResourceName); + + if(requestedResourceName!=null && !requestedResourceName.isEmpty()) { for (String resource : listOfPath) { - if(resource.startsWith(resourceName)) { - candidateResource = resourceName; + log.trace("Is resource '{}' starting with '{}' ?",resource,requestedResourceName); + if(resource.startsWith(requestedResourceName)) { + log.trace("Yes it starts!"); + candidateResource = requestedResourceName; + log.info("The candidate resource to manage the request is: {}",candidateResource); resourceToRedirectFound = true; break; } } + + //Try to manage as Catalogue Request ctlg, ctlg-p, etc. + if(!resourceToRedirectFound) { + log.info("Trying to manage as hard-coded case: {}", ConstantsResolver.resourcesHardCoded.toString()); + String[] hardCode = ConstantsResolver.resourcesHardCoded; + + for (String resource : hardCode) { + log.trace("Is requested resource '{}' starting with hard-coded resource '{}'?",requestedResourceName,resource); + if(requestedResourceName.startsWith(resource)) { + log.trace("Yes it starts!"); + candidateResource = resource; + log.info("The candidate resource to manage the request is the hard-coded resource: {}",candidateResource); + resourceToRedirectFound = true; + break; + } + } + + } + }else log.warn("It was not possible to get the resource name from the splitted path {}. No action performed", path); }else { diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/BackCatalogueResolver.java b/src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackCatalogueResolver.java similarity index 89% rename from src/main/java/org/gcube/datatransfer/resolver/services/BackCatalogueResolver.java rename to src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackCatalogueResolver.java index a02e08a..f989673 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/BackCatalogueResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackCatalogueResolver.java @@ -1,4 +1,4 @@ -package org.gcube.datatransfer.resolver.services; +package org.gcube.datatransfer.resolver.services.tobackward; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; @@ -11,6 +11,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.gcube.datatransfer.resolver.catalogue.CatalogueRequest; +import org.gcube.datatransfer.resolver.services.CatalogueResolver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackUriResolverCatalogueResolver.java b/src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackUriResolverCatalogueResolver.java new file mode 100644 index 0000000..a648f75 --- /dev/null +++ b/src/main/java/org/gcube/datatransfer/resolver/services/tobackward/BackUriResolverCatalogueResolver.java @@ -0,0 +1,40 @@ +package org.gcube.datatransfer.resolver.services.tobackward; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import org.gcube.datatransfer.resolver.catalogue.CatalogueRequest; +import org.gcube.datatransfer.resolver.services.CatalogueResolver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class CatalogueResolver. + * + * To Backward compatibility + * + * @author Francesco Mangiacrapa at ISTI-CNR (francesco.mangiacrapa@isti.cnr.it) + * Nov 16, 2018 + */ +@Path("uri-resolver/catalogue") +public class BackUriResolverCatalogueResolver { + + private static Logger logger = LoggerFactory.getLogger(BackUriResolverCatalogueResolver.class); + + @POST + @Path("") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.TEXT_PLAIN) + public Response postCatalogue(@Context HttpServletRequest req, CatalogueRequest jsonRequest) throws WebApplicationException{ + logger.info(this.getClass().getSimpleName()+" POST starts..."); + return new CatalogueResolver().postCatalogue(req, jsonRequest); + + } +}