From 350d97dd753cb4dc1e91aff7a1f2c474bb08dfb7 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 26 Apr 2022 17:21:13 +0200 Subject: [PATCH] #23157 CatalogueResolver enhancement --- CHANGELOG.md | 6 + pom.xml | 2 +- .../UriResolverManager.java | 24 ++- .../entity/GenericResolver.java | 22 ++- .../uriresolvermanager/entity/Resolver.java | 12 +- .../CatalogueResolverCallBuilder.java | 80 ++++++++- .../query/CatalogueResolverQueryString.java | 97 ++++++++++ .../CatalogueResolverQueryStringBuilder.java | 167 ++++++++++++++++++ .../util/UrlEncoderUtil.java | 21 +-- src/test/.gitignore | 1 + src/test/java/UriResolverManagerMain.java | 52 ++++-- src/test/java/UriResolverManagerTest.java | 64 ++++++- 12 files changed, 493 insertions(+), 55 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryString.java create mode 100644 src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryStringBuilder.java create mode 100644 src/test/.gitignore diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b768ed..c000fee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v1.6.0-SNAPSHOT] - 2022-04-20 + +**New** + +- [#23157] Enhanced to manage the CatalogueResolver with input query string + ## [v1.5.0] - 2021-11-05 #### Enhancement diff --git a/pom.xml b/pom.xml index de7e179..908350e 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ 4.0.0 org.gcube.portlets.user uri-resolver-manager - 1.5.0 + 1.6.0-SNAPSHOT jar uri-resolver-manager The URI Resolver Manager diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/UriResolverManager.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/UriResolverManager.java index f5f59c5..5403f65 100644 --- a/src/main/java/org/gcube/portlets/user/uriresolvermanager/UriResolverManager.java +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/UriResolverManager.java @@ -151,8 +151,10 @@ public class UriResolverManager { /** * Gets the link. * - * @param parameters the map of the parameters sent as HTTP query string - * @param shortLink if true the link is shorted otherwise none + * @param parameters the map of the parameters sent as HTTP query + * string + * @param queryStringParameters the query string parameters + * @param shortLink if true the link is shortened otherwise none * @return the link * @throws IllegalArgumentException the illegal argument exception * @throws UriResolverMapException the uri resolver map exception @@ -204,16 +206,20 @@ public class UriResolverManager { String baseURI = serviceAccessPoint.getServiceUrl(); + //SPECIALIZED IMPLEMENTATION OF RESOLVER try { link = resolver.getLink(baseURI, parameters); - if (shortLink) - return shortTheLink(link); + LOG.debug("Read specialized getLink: "+link); + if (shortLink) { + link = resolver.shortLink(link, parameters); + } return link; } catch (NotImplementedException e) { LOG.info("Specialized getLink not implemented, going to default implementation"); } + //GENERIC IMPLEMENTATION OF RESOLVER String linkDecoded = null; String queryString = null; @@ -242,9 +248,9 @@ public class UriResolverManager { link = String.format("%s?%s", baseURI, queryStringEncoded); LOG.info("Encoded link is: " + link); LOG.info("Shortner starts.."); - String shortedLink = shortTheLink(link); - LOG.info("Shorted link is: " + shortedLink); - if (shortedLink != null && shortedLink.equals(link)) { + String shortenedLink = shortTheLink(link); + LOG.info("Short link is: " + shortenedLink); + if (shortenedLink != null && shortenedLink.equals(link)) { // here the short link and the input link are identical // so the shortening did not work // I'm returning the decoded link because it is directly consumable via browser @@ -253,7 +259,7 @@ public class UriResolverManager { } else { // here the link is really shorted LOG.debug("The link is really shorted, returning it"); - link = shortedLink; + link = shortenedLink; } } catch (Exception e) { @@ -309,7 +315,7 @@ public class UriResolverManager { try { String scope = ScopeProvider.instance.get(); - LOG.info("SiscoveryServiceParameters is using scope: " + scope + ", read from ScopeProvider"); + LOG.info("DiscoveryServiceParameters is using scope: " + scope + ", read from ScopeProvider"); if (scope == null) throw new UriResolverMapException("Scope is null, set scope into ScopeProvider!"); diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/GenericResolver.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/GenericResolver.java index 6487929..5672b4b 100644 --- a/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/GenericResolver.java +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/GenericResolver.java @@ -64,18 +64,31 @@ public class GenericResolver implements Resolver { public void setEntryName(String entryName) { this.entryName = entryName; } - /** * Gets the link. * - * @param baseURI the base URI + * @param baseURI the base URI * @param parameters the parameters * @return the link * @throws Exception the exception */ - public String getLink(String baseURI, Map parameters) throws Exception{ - throw new NotImplementedException("getLink Method not Implement"); + @Override + public String getLink(String baseURI, Map parameters) throws Exception { + throw new NotImplementedException("getLink method not implemented"); + } + + /** + * Short link. + * + * @param theLink the the link + * @param parameters the parameters + * @return the string + * @throws Exception the exception + */ + @Override + public String shortLink(String theLink, Map parameters) throws Exception { + throw new NotImplementedException("shortLink method not implemented"); } /** @@ -98,4 +111,5 @@ public class GenericResolver implements Resolver { builder.append("]"); return builder.toString(); } + } diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/Resolver.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/Resolver.java index 9dfc8b7..a14a426 100644 --- a/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/Resolver.java +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/entity/Resolver.java @@ -28,11 +28,21 @@ public interface Resolver { /** * Gets the link. * - * @param baseURI the base URI + * @param baseURI the base URI * @param parameters the parameters * @return the link * @throws Exception the exception */ public String getLink(String baseURI, Map parameters) throws Exception; + /** + * Short link. + * + * @param theLink the the link + * @param parameters the parameters + * @return the string + * @throws Exception the exception + */ + public String shortLink(String theLink, Map parameters) throws Exception; + } diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/CatalogueResolverCallBuilder.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/CatalogueResolverCallBuilder.java index 2ad3e9e..4d8f256 100644 --- a/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/CatalogueResolverCallBuilder.java +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/CatalogueResolverCallBuilder.java @@ -11,6 +11,9 @@ import java.net.URL; import java.util.Map; import org.gcube.portlets.user.uriresolvermanager.entity.GenericResolver; +import org.gcube.portlets.user.uriresolvermanager.resolvers.query.CatalogueResolverQueryStringBuilder; +import org.gcube.portlets.user.uriresolvermanager.util.UrlEncoderUtil; +import org.gcube.portlets.user.urlshortener.UrlShortener; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,8 +50,8 @@ public class CatalogueResolverCallBuilder extends GenericResolver { */ @Override public String getLink(String baseURI, Map parameters) throws Exception { - LOG.debug("called getLink: " + baseURI + " parameters: "+parameters); - + LOG.debug("called getLink: " + baseURI + " parameters: " + parameters); + HttpURLConnection con = null; String theResponse = null; try { @@ -68,6 +71,11 @@ public class CatalogueResolverCallBuilder extends GenericResolver { jObj.put(key, parameters.get(key)); } +// if (queryStringParameters != null) { +// String queryString = UrlEncoderUtil.toQueryString(queryStringParameters); +// jObj.put(CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER, queryString); +// } + String toJSON = jObj.toString(); LOG.info("Submitting JSON: " + toJSON); Integer code = null; @@ -105,6 +113,74 @@ public class CatalogueResolverCallBuilder extends GenericResolver { } + @Override + public String shortLink(String theLink, Map parameters) throws Exception { + LOG.info("specific shortLink called"); + + String linkDecoded = theLink; + + String[] queryStringArray = theLink.split("\\?"); + if(queryStringArray.length>1) { + String queryString = queryStringArray[1]; + String queryStringEncoded = UrlEncoderUtil.encodeQuery(queryString); + theLink = String.format("%s?%s", queryStringArray[0], queryStringEncoded); + } + +// if (parameters != null) { +// LOG.debug("Trying to read the parameter: " + CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER); +// String queryStringParmeters = parameters.get(CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER); +// if (queryStringParmeters != null) { +// LOG.debug(CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER + " found"); +// queryString = UrlEncoderUtil.encodeQuery(queryStringParmeters); +// } +// } + + try { +// LOG.debug(CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER + " encoded is: " + queryString); +// if (queryString != null) { +// String queryStringEncoded = UrlEncoderUtil.encodeString(queryString); +// theLink = String.format("%s?%s", theLink, queryStringEncoded); +// } + LOG.info("Encoded link is: " + theLink); + LOG.info("Shortner starts.."); + String shortLink = shortTheLink(theLink); + LOG.info("Shorted link is: " + shortLink); + if (shortLink != null && shortLink.equals(theLink)) { + // here the short link and the input link are identical + // so the shortening did not work + // I'm returning the decoded link because it is directly consumable via browser + LOG.debug("Shorted link is equal to input link, returning decoded link: " + linkDecoded); + theLink = linkDecoded; + } else { + // here the link is really shorted + LOG.debug("The link is really short, returning it"); + theLink = shortLink; + } + + } catch (Exception e) { + LOG.warn("An error occurred during link shortening: ", e); + // here I'm returning the decoded link in case of error on shortening it + theLink = linkDecoded; + } + + return theLink; + + } + + private String shortTheLink(String link) { + + String toReturnLink = link; + try { + UrlShortener shortener = new UrlShortener(); + String shortedLink = shortener.shorten(link); + LOG.info("Shorted link is: " + shortedLink); + toReturnLink = shortedLink; + } catch (Exception e) { + LOG.warn("Returning source link, an error occurred during link shortening: ", e); + } + return toReturnLink; + } + /** * Read response. * diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryString.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryString.java new file mode 100644 index 0000000..2ef4749 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryString.java @@ -0,0 +1,97 @@ +package org.gcube.portlets.user.uriresolvermanager.resolvers.query; + +/** + * The Class CatalogueResolverQueryString. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Apr 26, 2022 + */ +public class CatalogueResolverQueryString { + + /** + * The Enum MODERATION_OP. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Apr 26, 2022 + */ + public static enum MODERATION_OP { + show + } + + private final String itemName; + private String itemId; + private String itemStatus; + private MODERATION_OP moderation; + + /** + * Instantiates a new catalogue resolver query string. + * + * @param builder the builder + */ + CatalogueResolverQueryString(CatalogueResolverQueryStringBuilder builder) { + this.itemName = builder.getItemName(); + this.itemId = builder.getItemId(); + this.itemStatus = builder.getItemStatus(); + this.moderation = builder.getModeration(); + + } + + /** + * Gets the item id. + * + * @return the item id + */ + public String getItemId() { + return itemId; + } + + /** + * Gets the moderation. + * + * @return the moderation + */ + public MODERATION_OP getModeration() { + return moderation; + } + + /** + * Gets the item name. + * + * @return the item name + */ + public String getItemName() { + return itemName; + } + + /** + * Gets the item status. + * + * @return the item status + */ + public String getItemStatus() { + return itemStatus; + } + + /** + * To string. + * + * @return the string + */ + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("CatalogueResolverQueryString [itemName="); + builder.append(itemName); + builder.append(", itemId="); + builder.append(itemId); + builder.append(", itemStatus="); + builder.append(itemStatus); + builder.append(", moderation="); + builder.append(moderation); + builder.append("]"); + return builder.toString(); + } + +} diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryStringBuilder.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryStringBuilder.java new file mode 100644 index 0000000..64e5c46 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/resolvers/query/CatalogueResolverQueryStringBuilder.java @@ -0,0 +1,167 @@ +/* + * + */ +package org.gcube.portlets.user.uriresolvermanager.resolvers.query; + +import java.util.HashMap; +import java.util.Map; + +import org.gcube.portlets.user.uriresolvermanager.resolvers.query.CatalogueResolverQueryString.MODERATION_OP; +import org.gcube.portlets.user.uriresolvermanager.util.UrlEncoderUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class CatalogueResolverQueryStringBuilder. + * + * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it + * + * Apr 26, 2022 + */ +public final class CatalogueResolverQueryStringBuilder { + + public static final Logger LOG = LoggerFactory.getLogger(CatalogueResolverQueryStringBuilder.class); + public static final String MODERATION_PARAMETER = "moderation"; + public static final String ITEM_NAME_PARAMETER = "item_name"; + public static final String ITEM_ID_PARAMETER = "item_id"; + public static final String STATUS_PARAMETER = "status"; + + public static final String QUERY_STRING_PARAMETER = "query_string"; + + private final String itemName; + private String itemId; + private String itemStatus; + private MODERATION_OP moderation; + + /** + * Instantiates a new catalogue resolver query string builder. + * + * @param itemName the item name + */ + public CatalogueResolverQueryStringBuilder(String itemName) { + this.itemName = itemName; + } + + /** + * Item id. + * + * @param itemId the item id + * @return the catalogue resolver query string builder + */ + public CatalogueResolverQueryStringBuilder itemId(String itemId) { + this.itemId = itemId; + return this; + } + + /** + * Moderation. + * + * @param moderation the moderation + * @return the catalogue resolver query string builder + */ + public CatalogueResolverQueryStringBuilder moderation(MODERATION_OP moderation) { + this.moderation = moderation; + return this; + } + + /** + * Item status. + * + * @param itemStatus the item status + * @return the catalogue resolver query string builder + */ + public CatalogueResolverQueryStringBuilder itemStatus(String itemStatus) { + this.itemStatus = itemStatus; + return this; + } + + /** + * Gets the item name. + * + * @return the item name + */ + public String getItemName() { + return itemName; + } + + /** + * Gets the item id. + * + * @return the item id + */ + public String getItemId() { + return itemId; + } + + /** + * Gets the item status. + * + * @return the item status + */ + public String getItemStatus() { + return itemStatus; + } + + /** + * Gets the moderation. + * + * @return the moderation + */ + public MODERATION_OP getModeration() { + return moderation; + } + + /** + * Builds the query parameters. + * + * @return the map + */ + public Map buildQueryParameters() { + + CatalogueResolverQueryString crQS = new CatalogueResolverQueryString(this); + + Map query = new HashMap(); + + if (crQS.getItemId() != null) { + query.put(ITEM_ID_PARAMETER, crQS.getItemId()); + } + + if (crQS.getItemName() != null) { + query.put(ITEM_NAME_PARAMETER, crQS.getItemName()); + } + + if (crQS.getItemStatus() != null) { + query.put(STATUS_PARAMETER, crQS.getItemStatus()); + } + + if (crQS.getModeration() != null) { + query.put(MODERATION_PARAMETER, crQS.getModeration().name()); + } + + return query; + + } + + /** + * Builds the query parameters to query string. + * + * @return the string + */ + public String buildQueryParametersToQueryString() { + + Map mapParameters = buildQueryParameters(); + return UrlEncoderUtil.toQueryString(mapParameters); + } + + /** + * Builds the query obj. + * + * @return the catalogue resolver query string + */ + public CatalogueResolverQueryString buildQueryObj() { + + return new CatalogueResolverQueryString(this); + + } + +} diff --git a/src/main/java/org/gcube/portlets/user/uriresolvermanager/util/UrlEncoderUtil.java b/src/main/java/org/gcube/portlets/user/uriresolvermanager/util/UrlEncoderUtil.java index f379d7e..3634c81 100644 --- a/src/main/java/org/gcube/portlets/user/uriresolvermanager/util/UrlEncoderUtil.java +++ b/src/main/java/org/gcube/portlets/user/uriresolvermanager/util/UrlEncoderUtil.java @@ -5,13 +5,12 @@ package org.gcube.portlets.user.uriresolvermanager.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -// TODO: Auto-generated Javadoc + /** * The Class UrlEncoderUtil. * @@ -153,23 +152,5 @@ public class UrlEncoderUtil { return string; } - /** - * The main method. - * - * @param args the arguments - */ - public static void main(String[] args) { - -// System.out.println(UrlEncoderUtil.encodeQuery("request=GetStyles", "layers=test Name", "service=WMS", "version=1.1.1")); - - HashMap parameters = new HashMap(); - - parameters.put("request", "GetStyles"); - parameters.put("layers", "test Name"); - parameters.put("version", "1.1.1"); - - System.out.println(UrlEncoderUtil.encodeQuery(parameters)); - - } } diff --git a/src/test/.gitignore b/src/test/.gitignore new file mode 100644 index 0000000..cb6eb2c --- /dev/null +++ b/src/test/.gitignore @@ -0,0 +1 @@ +/resources/ diff --git a/src/test/java/UriResolverManagerMain.java b/src/test/java/UriResolverManagerMain.java index d7296db..65f6902 100644 --- a/src/test/java/UriResolverManagerMain.java +++ b/src/test/java/UriResolverManagerMain.java @@ -1,6 +1,7 @@ import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portlets.user.uriresolvermanager.UriResolverManager; import org.gcube.portlets.user.uriresolvermanager.exception.UriResolverMapException; +import org.gcube.portlets.user.uriresolvermanager.util.UrlEncoderUtil; /** * @@ -15,23 +16,54 @@ public class UriResolverManagerMain { public static void main(String[] args) { try { - ScopeProvider.instance.set("/gcube"); - UriResolverManager resolver = new UriResolverManager("GIS"); - System.out.println(resolver.getCapabilities()); - System.out.println(resolver.getApplicationTypes()); + + String theLink = "https://data.dev.d4science.org/ctlg/devVRE/sarda-sarda"; + String[] queryStringArray = theLink.split("\\?"); + if(queryStringArray.length>1) { + String queryString = queryStringArray[1]; + String queryStringEncoded = UrlEncoderUtil.encodeQuery(queryString); + theLink = String.format("%s?%s", queryStringArray[0], queryStringEncoded); + } + + System.out.println(theLink); + +// ScopeProvider.instance.set("/gcube"); +// UriResolverManager resolver = new UriResolverManager("GIS"); +// System.out.println(resolver.getCapabilities()); +// System.out.println(resolver.getApplicationTypes()); // System.out.println(resolver.discoveryServiceParameters(resolver.getResolver("SMP-ID"))); // Map params = new HashMap(); // params.put("gis-UUID", "5ac49f44-999f-4efe-a32b-af71da2b39ac"); // params.put("scope", "/gcube/devsec/devVRE"); // String shortLink = resolver.getLink(params, true); -// System.out.println(shortLink); //true, link is shorted otherwise none - } catch (UriResolverMapException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - }catch (Exception e) { +//// System.out.println(shortLink); //true, link is shorted otherwise none +// } catch (UriResolverMapException e) { +// e.printStackTrace(); +// } catch (IllegalArgumentException e) { +// e.printStackTrace(); + } catch (Exception e) { e.printStackTrace(); } } + + /** + * The main method. + * + * @param args the arguments + */ +// public static void main(String[] args) { +// +//// System.out.println(UrlEncoderUtil.encodeQuery("request=GetStyles", "layers=test Name", "service=WMS", "version=1.1.1")); +// +// HashMap parameters = new HashMap(); +// +// parameters.put("request", "GetStyles"); +// parameters.put("layers", "test Name"); +// parameters.put("version", "1.1.1"); +// +// System.out.println(UrlEncoderUtil.encodeQuery(parameters)); +// +// } + } diff --git a/src/test/java/UriResolverManagerTest.java b/src/test/java/UriResolverManagerTest.java index 4b3f4e4..2dcd182 100644 --- a/src/test/java/UriResolverManagerTest.java +++ b/src/test/java/UriResolverManagerTest.java @@ -1,10 +1,17 @@ import java.util.HashMap; +import java.util.List; import java.util.Map; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.portlets.user.uriresolvermanager.UriResolverManager; +import org.gcube.portlets.user.uriresolvermanager.entity.Resolver; +import org.gcube.portlets.user.uriresolvermanager.entity.ServiceParameter; import org.gcube.portlets.user.uriresolvermanager.exception.IllegalArgumentException; import org.gcube.portlets.user.uriresolvermanager.exception.UriResolverMapException; +import org.gcube.portlets.user.uriresolvermanager.resolvers.query.CatalogueResolverQueryString.MODERATION_OP; +import org.gcube.portlets.user.uriresolvermanager.resolvers.query.CatalogueResolverQueryStringBuilder; +import org.gcube.portlets.user.uriresolvermanager.util.UrlEncoderUtil; +import org.junit.Test; /** * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it @@ -19,19 +26,28 @@ public class UriResolverManagerTest { try { ScopeProvider.instance.set("/gcube/devsec/devVRE"); manager = new UriResolverManager(); - System.out.println(manager.getCapabilities()); - System.out.println(manager.getApplicationTypes()); + System.out.println("Capabiities: " + manager.getCapabilities()); + System.out.println("ApplicationTypes: " + manager.getApplicationTypes()); + for (String applicationType : manager.getApplicationTypes()) { + Resolver resolver = manager.getResolver(applicationType); + System.out.println("ApplicationType: " + applicationType + " has: " + resolver); + List serviceParameters = manager.discoveryServiceParameters(resolver); + System.out.println("Parameters: " + serviceParameters); + } } catch (UriResolverMapException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } - // @Test + //@Test public void testCTLG() { try { @@ -53,7 +69,39 @@ public class UriResolverManagerTest { } } - // @Test + //@Test + public void testCTLGWithQueryString() { + + try { + ScopeProvider.instance.set("/gcube/devsec/devVRE"); + UriResolverManager resolver; + resolver = new UriResolverManager("CTLG"); + Map params = new HashMap(); + params.put("gcube_scope", "/gcube/devsec/devVRE"); + params.put("entity_context", "dataset"); + params.put("entity_name", "sarda-sarda"); + + CatalogueResolverQueryStringBuilder builder = new CatalogueResolverQueryStringBuilder("sarda-sarda"); + builder.itemStatus("pending").moderation(MODERATION_OP.show); + String queryString = builder.buildQueryParametersToQueryString(); + params.put(CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER, queryString); + // METHOD 1 - Query String as parameter of the getLink method + String shortLink = resolver.getLink(params, true); + + // METHOD 2 - Query String as parameter passed in the params +// String queryString = QueryStringUtil.toQueryString(queryStringParameters); +// params.put(CatalogueResolverQueryStringBuilder.QUERY_STRING_PARAMETER, queryString); + System.out.println(shortLink); + } catch (UriResolverMapException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Test public void testSHUB() { try { @@ -74,16 +122,16 @@ public class UriResolverManagerTest { } } - // @Test + //@Test public void testGIS() { try { - ScopeProvider.instance.set("/pred4s/preprod/preVRE"); + ScopeProvider.instance.set("/gcube/devsec/devVRE"); UriResolverManager resolver = new UriResolverManager("GIS"); Map params = new HashMap(); params.put("gis-UUID", "1a657005-29c6-4528-a115-69640c4c2900"); - params.put("scope", "/pred4s/preprod/preVRE"); - String shortLink = resolver.getLink(params, false); + params.put("scope", "/gcube/devsec/devVRE"); + String shortLink = resolver.getLink(params, true); System.out.println(shortLink); } catch (UriResolverMapException e) { e.printStackTrace();