starting #22385
This commit is contained in:
parent
13eee9eb15
commit
8d4b6d6c3f
13
.classpath
13
.classpath
|
@ -6,6 +6,12 @@
|
|||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="test" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="test" value="true"/>
|
||||
|
@ -13,12 +19,6 @@
|
|||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
|
@ -30,5 +30,6 @@
|
|||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="/home/francescomangiacrapa/config-work-isti/log4jconfiguration"/>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
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.5.0-SNAPSHOT] - 2021-11-05
|
||||
|
||||
### Enhancement
|
||||
|
||||
* [22385] Integrated with Catalogue Resolver
|
||||
|
||||
## [v1.4.2] - 2021-04-21
|
||||
|
||||
|
|
10
pom.xml
10
pom.xml
|
@ -11,7 +11,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.gcube.portlets.user</groupId>
|
||||
<artifactId>uri-resolver-manager</artifactId>
|
||||
<version>1.4.2</version>
|
||||
<version>1.5.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>uri-resolver-manager</name>
|
||||
<description>The URI Resolver Manager</description>
|
||||
|
@ -101,10 +101,16 @@
|
|||
<version>20090211</version>
|
||||
</dependency>
|
||||
|
||||
<!-- LOGGER -->
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
<version>1.6.4</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.6.4</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.gcube.portlets.user.uriresolvermanager.entity.Resolver;
|
|||
import org.gcube.portlets.user.uriresolvermanager.entity.ServiceAccessPoint;
|
||||
import org.gcube.portlets.user.uriresolvermanager.entity.ServiceParameter;
|
||||
import org.gcube.portlets.user.uriresolvermanager.exception.IllegalArgumentException;
|
||||
import org.gcube.portlets.user.uriresolvermanager.exception.NotImplementedException;
|
||||
import org.gcube.portlets.user.uriresolvermanager.exception.UriResolverMapException;
|
||||
import org.gcube.portlets.user.uriresolvermanager.readers.RuntimeResourceReader;
|
||||
import org.gcube.portlets.user.uriresolvermanager.readers.UriResolverMapReader;
|
||||
|
@ -25,20 +26,19 @@ import org.slf4j.LoggerFactory;
|
|||
/**
|
||||
* The Class UriResolverManager.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Sep 6, 2016
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Sep 6, 2016
|
||||
*/
|
||||
public class UriResolverManager {
|
||||
|
||||
/**
|
||||
* Time to reload Runtime Resource Configuration
|
||||
*/
|
||||
//public static int RESET_DELAY = 15*60*1000; //15 MINUTES
|
||||
// public static int RESET_DELAY = 15*60*1000; //15 MINUTES
|
||||
|
||||
/**
|
||||
* Time to reload Runtime Resource Configuration
|
||||
*/
|
||||
//public static int RESET_TIME = RESET_DELAY; //15 MINUTES
|
||||
// public static int RESET_TIME = RESET_DELAY; //15 MINUTES
|
||||
|
||||
private UriResolverMapReader uriResolverMapReader;
|
||||
private Map<String, Resolver> applicationTypes;
|
||||
|
@ -79,32 +79,34 @@ public class UriResolverManager {
|
|||
|
||||
public static final Logger logger = LoggerFactory.getLogger(UriResolverManager.class);
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new uri resolver manager.
|
||||
* Precondition: set the scope into ScopeProvider {@link ScopeProvider#get()}
|
||||
* The scope is used to look up the generic resource with name: {@link UriResolverMapReader#URI_RESOLVER_MAP_RESOURCE_NAME}, secondary type: {@link UriResolverMapReader#URIRESOLVERMAP_SECONDARY_TYPE} from IS to map ApplicationType with its Resolver
|
||||
* Instantiates a new uri resolver manager. Precondition: set the scope into
|
||||
* ScopeProvider {@link ScopeProvider#get()} The scope is used to look up the
|
||||
* generic resource with name:
|
||||
* {@link UriResolverMapReader#URI_RESOLVER_MAP_RESOURCE_NAME}, secondary type:
|
||||
* {@link UriResolverMapReader#URIRESOLVERMAP_SECONDARY_TYPE} from IS to map
|
||||
* ApplicationType with its Resolver
|
||||
*
|
||||
* @throws UriResolverMapException the uri resolver map exception
|
||||
* @throws IllegalArgumentException the illegal argument exception
|
||||
*/
|
||||
public UriResolverManager() throws UriResolverMapException, IllegalArgumentException{
|
||||
public UriResolverManager() throws UriResolverMapException, IllegalArgumentException {
|
||||
try {
|
||||
|
||||
String scope = ScopeProvider.instance.get();
|
||||
logger.info("UriResolverManager is using scope: "+scope+", read from ScopeProvider");
|
||||
logger.info("UriResolverManager is using scope: " + scope + ", read from ScopeProvider");
|
||||
|
||||
if(scope == null)
|
||||
if (scope == null)
|
||||
throw new UriResolverMapException("Scope is null, set scope into ScopeProvider!");
|
||||
|
||||
this.uriResolverMapReader = new UriResolverMapReader();
|
||||
this.applicationTypes = uriResolverMapReader.getApplicationTypes();
|
||||
//this.setTimerUriResolverReader(RESET_DELAY, RESET_TIME);
|
||||
} catch (UriResolverMapException e){
|
||||
logger.error("UriResolverMapException: ",e);
|
||||
// this.setTimerUriResolverReader(RESET_DELAY, RESET_TIME);
|
||||
} catch (UriResolverMapException e) {
|
||||
logger.error("UriResolverMapException: ", e);
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
logger.error("UriResolverManager: ",e);
|
||||
logger.error("UriResolverManager: ", e);
|
||||
throw new UriResolverMapException("Map Application Type - Resources not found in IS");
|
||||
}
|
||||
}
|
||||
|
@ -116,29 +118,30 @@ public class UriResolverManager {
|
|||
* @throws IllegalArgumentException the illegal argument exception
|
||||
*/
|
||||
public void setApplicationType(String applicationType) throws IllegalArgumentException {
|
||||
if(!this.applicationTypes.containsKey(applicationType)){
|
||||
throw new IllegalArgumentException("Application type '"+applicationType +"' not found in Application Types: "+getApplicationTypes());
|
||||
if (!this.applicationTypes.containsKey(applicationType)) {
|
||||
throw new IllegalArgumentException("Application type '" + applicationType
|
||||
+ "' not found in Application Types: " + getApplicationTypes());
|
||||
|
||||
}
|
||||
this.applicationType = applicationType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instance a UriResolverManager
|
||||
* Precondition: set the scope provider {@link ScopeProvider.instance.get()}
|
||||
* The scope is used to look up the generic resource {@link UriResolverMapReader#URI_RESOLVER_MAP} available in the infrastructure to map ApplicationType with its Resolver
|
||||
* Instance a UriResolverManager Precondition: set the scope provider
|
||||
* {@link ScopeProvider.instance.get()} The scope is used to look up the generic
|
||||
* resource {@link UriResolverMapReader#URI_RESOLVER_MAP} available in the
|
||||
* infrastructure to map ApplicationType with its Resolver
|
||||
*
|
||||
* @param applicationType a (valid) key Application Type {@link UriResolverManager#getApplicationTypes()}
|
||||
* @param applicationType a (valid) key Application Type
|
||||
* {@link UriResolverManager#getApplicationTypes()}
|
||||
* @throws UriResolverMapException the uri resolver map exception
|
||||
* @throws IllegalArgumentException the illegal argument exception
|
||||
*/
|
||||
public UriResolverManager(String applicationType) throws UriResolverMapException, IllegalArgumentException{
|
||||
public UriResolverManager(String applicationType) throws UriResolverMapException, IllegalArgumentException {
|
||||
this();
|
||||
setApplicationType(applicationType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Gets the link.
|
||||
*
|
||||
|
@ -149,7 +152,8 @@ public class UriResolverManager {
|
|||
* @throws IllegalArgumentException the illegal argument exception
|
||||
* @throws UriResolverMapException the uri resolver map exception
|
||||
*/
|
||||
public String getLink(String applicationType, Map<String, String> parameters, boolean shortLink) throws IllegalArgumentException, UriResolverMapException{
|
||||
public String getLink(String applicationType, Map<String, String> parameters, boolean shortLink)
|
||||
throws IllegalArgumentException, UriResolverMapException {
|
||||
this.applicationType = applicationType;
|
||||
return getLink(parameters, shortLink);
|
||||
}
|
||||
|
@ -163,97 +167,109 @@ public class UriResolverManager {
|
|||
* @throws IllegalArgumentException the illegal argument exception
|
||||
* @throws UriResolverMapException the uri resolver map exception
|
||||
*/
|
||||
public String getLink(Map<String, String> parameters, boolean shortLink) throws IllegalArgumentException, UriResolverMapException{
|
||||
public String getLink(Map<String, String> parameters, boolean shortLink)
|
||||
throws IllegalArgumentException, UriResolverMapException {
|
||||
|
||||
if(applicationType==null)
|
||||
if (applicationType == null)
|
||||
throw new IllegalArgumentException("Application type is null");
|
||||
|
||||
Resolver resolver = this.applicationTypes.get(applicationType);
|
||||
String link;
|
||||
|
||||
if(parameters==null)
|
||||
if (parameters == null)
|
||||
throw new IllegalArgumentException("Input Map parameters is null");
|
||||
|
||||
try {
|
||||
|
||||
//lockReader();
|
||||
// lockReader();
|
||||
|
||||
if(reader==null){
|
||||
if (reader == null) {
|
||||
logger.info("Runtime Resource Reader is null, istancing...");
|
||||
reader = new RuntimeResourceReader(resolver.getResourceName());
|
||||
}
|
||||
|
||||
if(resolver.getEntryName()==null || resolver.getEntryName().isEmpty()){
|
||||
logger.warn("The entryname to "+resolver.getResourceName() +" is null or empty, reading first Access Point!!");
|
||||
if (resolver.getEntryName() == null || resolver.getEntryName().isEmpty()) {
|
||||
logger.warn("The entryname to " + resolver.getResourceName()
|
||||
+ " is null or empty, reading first Access Point!!");
|
||||
serviceAccessPoint = reader.getServiceAccessPoints().get(0);
|
||||
}else{
|
||||
logger.warn("Reading Access Point for Entry Name: "+resolver.getEntryName());
|
||||
} else {
|
||||
logger.warn("Reading Access Point for Entry Name: " + resolver.getEntryName());
|
||||
serviceAccessPoint = reader.getServiceAccessPointForEntryName(resolver.getEntryName());
|
||||
if(serviceAccessPoint==null)
|
||||
throw new UriResolverMapException("Entry Name "+resolver.getEntryName() +" not found in Resource name: "+resolver.getResourceName());
|
||||
if (serviceAccessPoint == null)
|
||||
throw new UriResolverMapException("Entry Name " + resolver.getEntryName()
|
||||
+ " not found in Resource name: " + resolver.getResourceName());
|
||||
}
|
||||
|
||||
List<ServiceParameter> resourceParameters = serviceAccessPoint.getServiceParameters();
|
||||
|
||||
//CHECK PARAMETERS
|
||||
// CHECK PARAMETERS
|
||||
for (ServiceParameter serviceParameter : resourceParameters) {
|
||||
if(serviceParameter.isMandatory()){
|
||||
if(!parameters.containsKey(serviceParameter.getKey())){
|
||||
throw new IllegalArgumentException("Mandatory service key (parameter) '"+serviceParameter.getKey() +"' not found into input map");
|
||||
if (serviceParameter.isMandatory()) {
|
||||
if (!parameters.containsKey(serviceParameter.getKey())) {
|
||||
throw new IllegalArgumentException("Mandatory service key (parameter) '"
|
||||
+ serviceParameter.getKey() + "' not found into input map");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String baseURI = serviceAccessPoint.getServiceUrl();
|
||||
//Encoding only the query string
|
||||
|
||||
try {
|
||||
return resolver.getLink(baseURI, parameters);
|
||||
} catch (NotImplementedException e) {
|
||||
logger.info("Get Link not implemented, going to default implementation by GET Request");
|
||||
}
|
||||
|
||||
// Encoding only the query string
|
||||
|
||||
String linkDecoded = null;
|
||||
String queryString = null;
|
||||
if(!shortLink) {
|
||||
//not shortening so returning the link with the query string with only the parameters encoded
|
||||
if (!shortLink) {
|
||||
// not shortening so returning the link with the query string with only the
|
||||
// parameters encoded
|
||||
queryString = UrlEncoderUtil.encodeQuery(parameters);
|
||||
String toReturn = String.format("%s?%s", baseURI,queryString);
|
||||
logger.info("returning link with encoded parameters in the query string: "+toReturn);
|
||||
String toReturn = String.format("%s?%s", baseURI, queryString);
|
||||
logger.info("returning link with encoded parameters in the query string: " + toReturn);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
queryString = UrlEncoderUtil.toQueryString(parameters);
|
||||
linkDecoded = String.format("%s?%s", baseURI,queryString);
|
||||
linkDecoded = String.format("%s?%s", baseURI, queryString);
|
||||
link = linkDecoded;
|
||||
logger.info("Created HTTP URI request (link): "+link);
|
||||
if(shortLink){
|
||||
try{
|
||||
logger.info("Created HTTP URI request (link): " + link);
|
||||
if (shortLink) {
|
||||
try {
|
||||
String queryStringEncoded = UrlEncoderUtil.encodeString(queryString);
|
||||
link = String.format("%s?%s", baseURI,queryStringEncoded);
|
||||
logger.info("Encoded link is: "+link);
|
||||
link = String.format("%s?%s", baseURI, queryStringEncoded);
|
||||
logger.info("Encoded link is: " + link);
|
||||
logger.info("Shortner start..");
|
||||
UrlShortener shortener = new UrlShortener();
|
||||
String shortedLink = shortener.shorten(link);
|
||||
logger.info("Shorted link is: "+shortedLink);
|
||||
if(shortedLink!=null && shortedLink.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
|
||||
logger.debug("Shorted link is equal to input link, returning decoded link: "+linkDecoded);
|
||||
logger.info("Shorted link is: " + shortedLink);
|
||||
if (shortedLink != null && shortedLink.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
|
||||
logger.debug("Shorted link is equal to input link, returning decoded link: " + linkDecoded);
|
||||
link = linkDecoded;
|
||||
}else {
|
||||
//here the link is really shorted
|
||||
} else {
|
||||
// here the link is really shorted
|
||||
logger.debug("The link is really shorted, returning it");
|
||||
link = shortedLink;
|
||||
}
|
||||
|
||||
}catch(Exception e){
|
||||
logger.warn("An error occurred during link shortening: ",e);
|
||||
//here I'm returning the decoded link in case of error on shortening it
|
||||
} catch (Exception e) {
|
||||
logger.warn("An error occurred during link shortening: ", e);
|
||||
// here I'm returning the decoded link in case of error on shortening it
|
||||
link = linkDecoded;
|
||||
}
|
||||
}
|
||||
} catch (IllegalArgumentException e){
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.error("Uri Resolver IllegalArgumentException: ", e);
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
logger.error("Uri Resolver Exception: ", e);
|
||||
throw new UriResolverMapException("Uri Resolver error: " +e.getMessage());
|
||||
throw new UriResolverMapException("Uri Resolver error: " + e.getMessage());
|
||||
}
|
||||
|
||||
return link;
|
||||
|
@ -264,7 +280,7 @@ public class UriResolverManager {
|
|||
*
|
||||
* @return the Application Types available
|
||||
*/
|
||||
public Set<String> getApplicationTypes(){
|
||||
public Set<String> getApplicationTypes() {
|
||||
return this.applicationTypes.keySet();
|
||||
}
|
||||
|
||||
|
@ -276,35 +292,38 @@ public class UriResolverManager {
|
|||
* @throws IllegalArgumentException the illegal argument exception
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public List<ServiceParameter> discoveryServiceParameters(Resolver resolver) throws IllegalArgumentException, Exception{
|
||||
public List<ServiceParameter> discoveryServiceParameters(Resolver resolver)
|
||||
throws IllegalArgumentException, Exception {
|
||||
try {
|
||||
|
||||
String scope = ScopeProvider.instance.get();
|
||||
logger.info("SiscoveryServiceParameters is using scope: "+scope+", read from ScopeProvider");
|
||||
logger.info("SiscoveryServiceParameters is using scope: " + scope + ", read from ScopeProvider");
|
||||
|
||||
if(scope == null)
|
||||
if (scope == null)
|
||||
throw new UriResolverMapException("Scope is null, set scope into ScopeProvider!");
|
||||
|
||||
if(resolver == null)
|
||||
if (resolver == null)
|
||||
throw new IllegalArgumentException("Resolver is null, set Resolver");
|
||||
|
||||
RuntimeResourceReader reader = new RuntimeResourceReader(resolver.getResourceName());
|
||||
|
||||
ServiceAccessPoint serviceAccessPoint = null;
|
||||
if(resolver.getEntryName()==null || resolver.getEntryName().isEmpty()){
|
||||
logger.warn("The entryname to "+resolver.getResourceName() +" is null or empty, reading first Access Point!!");
|
||||
if (resolver.getEntryName() == null || resolver.getEntryName().isEmpty()) {
|
||||
logger.warn("The entryname to " + resolver.getResourceName()
|
||||
+ " is null or empty, reading first Access Point!!");
|
||||
serviceAccessPoint = reader.getServiceAccessPoints().get(0);
|
||||
}else{
|
||||
logger.info("Reading Access Point for entryname: "+resolver.getEntryName());
|
||||
} else {
|
||||
logger.info("Reading Access Point for entryname: " + resolver.getEntryName());
|
||||
serviceAccessPoint = reader.getServiceAccessPointForEntryName(resolver.getEntryName());
|
||||
if(serviceAccessPoint==null)
|
||||
throw new UriResolverMapException("Entry Name "+resolver.getEntryName() +" not found in Resource name: "+resolver.getResourceName());
|
||||
if (serviceAccessPoint == null)
|
||||
throw new UriResolverMapException("Entry Name " + resolver.getEntryName()
|
||||
+ " not found in Resource name: " + resolver.getResourceName());
|
||||
}
|
||||
|
||||
return serviceAccessPoint.getServiceParameters();
|
||||
} catch (Exception e) {
|
||||
logger.error("Uri Resolver error: ", e);
|
||||
throw new UriResolverMapException("Uri Resolver error: " +e.getMessage());
|
||||
throw new UriResolverMapException("Uri Resolver error: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -314,7 +333,7 @@ public class UriResolverManager {
|
|||
* @param applicationType the application type
|
||||
* @return the resolver
|
||||
*/
|
||||
public Resolver getResolver(String applicationType){
|
||||
public Resolver getResolver(String applicationType) {
|
||||
return this.applicationTypes.get(applicationType);
|
||||
}
|
||||
|
||||
|
@ -323,7 +342,7 @@ public class UriResolverManager {
|
|||
*
|
||||
* @return a map Application Type - Resolver
|
||||
*/
|
||||
public Map<String, Resolver> getCapabilities(){
|
||||
public Map<String, Resolver> getCapabilities() {
|
||||
return this.applicationTypes;
|
||||
}
|
||||
|
||||
|
@ -344,43 +363,35 @@ public class UriResolverManager {
|
|||
public void run() {
|
||||
logger.info("Timer Reset Runtime Resource running..");
|
||||
int counters = countReaders();
|
||||
if(counters==0){
|
||||
if (counters == 0) {
|
||||
logger.info("Reader not locked, resetting");
|
||||
reader = null;
|
||||
}else
|
||||
logger.info("Reader locked, counters is/are:"+counters+", skipping");
|
||||
} else
|
||||
logger.info("Reader locked, counters is/are:" + counters + ", skipping");
|
||||
|
||||
}
|
||||
}, delay, period);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Cancel timer uri resolver reader.
|
||||
*/
|
||||
public void cancelTimerUriResolverReader(){
|
||||
if(timer!=null)
|
||||
public void cancelTimerUriResolverReader() {
|
||||
if (timer != null)
|
||||
timer.cancel();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Invalid uri resolver reader.
|
||||
*/
|
||||
public void invalidUriResolverReader(){
|
||||
public void invalidUriResolverReader() {
|
||||
reader = null;
|
||||
}
|
||||
|
||||
/*
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
UriResolverManager manager = new UriResolverManager();
|
||||
System.out.println(manager.getCapabilities());
|
||||
System.out.println(manager.getApplicationTypes());
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}*/
|
||||
* public static void main(String[] args) { try { UriResolverManager manager =
|
||||
* new UriResolverManager(); System.out.println(manager.getCapabilities());
|
||||
* System.out.println(manager.getApplicationTypes()); } catch (Exception e) { //
|
||||
* TODO Auto-generated catch block e.printStackTrace(); } }
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.uriresolvermanager.entity;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.uriresolvermanager.exception.NotImplementedException;
|
||||
|
||||
/**
|
||||
* The Class Resolver.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it May 4, 2015
|
||||
*/
|
||||
public class GenericResolver implements Resolver {
|
||||
|
||||
private String resourceName;
|
||||
private String entryName;
|
||||
|
||||
/**
|
||||
* Instantiates a new resolver.
|
||||
*
|
||||
* @param resourceName the resource name
|
||||
* @param entryName the entry name
|
||||
*/
|
||||
public GenericResolver(String resourceName, String entryName) {
|
||||
super();
|
||||
this.resourceName = resourceName;
|
||||
this.entryName = entryName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the resource name.
|
||||
*
|
||||
* @return the resourceName
|
||||
*/
|
||||
public String getResourceName() {
|
||||
return resourceName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the entry name.
|
||||
*
|
||||
* @return the entryName
|
||||
*/
|
||||
public String getEntryName() {
|
||||
return entryName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the resource name.
|
||||
*
|
||||
* @param resourceName the resourceName to set
|
||||
*/
|
||||
public void setResourceName(String resourceName) {
|
||||
this.resourceName = resourceName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the entry name.
|
||||
*
|
||||
* @param entryName the entryName to set
|
||||
*/
|
||||
public void setEntryName(String entryName) {
|
||||
this.entryName = entryName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the link.
|
||||
*
|
||||
* @param baseURI the base URI
|
||||
* @param parameters the parameters
|
||||
* @return the link
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public String getLink(String baseURI, Map<String, String> parameters) throws Exception{
|
||||
throw new NotImplementedException("getLink Method not Implement");
|
||||
}
|
||||
|
||||
/**
|
||||
* To string.
|
||||
*
|
||||
* @return the string
|
||||
*/
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("Resolver [resourceName=");
|
||||
builder.append(resourceName);
|
||||
builder.append(", entryName=");
|
||||
builder.append(entryName);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
|
@ -1,78 +1,38 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.uriresolvermanager.entity;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* The Class Resolver.
|
||||
* The Interface Resolver.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* May 4, 2015
|
||||
*/
|
||||
public class Resolver {
|
||||
|
||||
private String resourceName;
|
||||
private String entryName;
|
||||
|
||||
/**
|
||||
* Instantiates a new resolver.
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* @param resourceName the resource name
|
||||
* @param entryName the entry name
|
||||
* Nov 5, 2021
|
||||
*/
|
||||
public Resolver(String resourceName, String entryName) {
|
||||
super();
|
||||
this.resourceName = resourceName;
|
||||
this.entryName = entryName;
|
||||
}
|
||||
public interface Resolver {
|
||||
|
||||
/**
|
||||
* Gets the resource name.
|
||||
*
|
||||
* @return the resourceName
|
||||
* @return the resource name
|
||||
*/
|
||||
public String getResourceName() {
|
||||
return resourceName;
|
||||
}
|
||||
public String getResourceName();
|
||||
|
||||
/**
|
||||
* Gets the entry name.
|
||||
*
|
||||
* @return the entryName
|
||||
* @return the entry name
|
||||
*/
|
||||
public String getEntryName() {
|
||||
return entryName;
|
||||
}
|
||||
public String getEntryName();
|
||||
|
||||
/**
|
||||
* Sets the resource name.
|
||||
* Gets the link.
|
||||
*
|
||||
* @param resourceName the resourceName to set
|
||||
* @param baseURI the base URI
|
||||
* @param parameters the parameters
|
||||
* @return the link
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
public void setResourceName(String resourceName) {
|
||||
this.resourceName = resourceName;
|
||||
}
|
||||
public String getLink(String baseURI, Map<String, String> parameters) throws Exception;
|
||||
|
||||
/**
|
||||
* Sets the entry name.
|
||||
*
|
||||
* @param entryName the entryName to set
|
||||
*/
|
||||
public void setEntryName(String entryName) {
|
||||
this.entryName = entryName;
|
||||
}
|
||||
/* (non-Javadoc)
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("Resolver [resourceName=");
|
||||
builder.append(resourceName);
|
||||
builder.append(", entryName=");
|
||||
builder.append(entryName);
|
||||
builder.append("]");
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package org.gcube.portlets.user.uriresolvermanager.exception;
|
||||
|
||||
/**
|
||||
* The Class NotImplementedException.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Nov 5, 2021
|
||||
*/
|
||||
public class NotImplementedException extends Exception {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7350078577553202213L;
|
||||
|
||||
/**
|
||||
* Instantiates a new not implemented exception.
|
||||
*/
|
||||
public NotImplementedException() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new not implemented exception.
|
||||
*
|
||||
* @param message the message
|
||||
*/
|
||||
public NotImplementedException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
|
@ -63,7 +63,7 @@ public class RuntimeResourceReader {
|
|||
|
||||
try{
|
||||
String scope = ScopeProvider.instance.get();
|
||||
logger.info("Tentative read resource: "+resourceName+", scope: "+scope);
|
||||
logger.info("Trying to read resource: "+resourceName+", in the scope: "+scope);
|
||||
|
||||
this.resourceName = resourceName;
|
||||
|
||||
|
|
|
@ -12,7 +12,9 @@ import javax.xml.parsers.DocumentBuilderFactory;
|
|||
|
||||
import org.gcube.common.resources.gcore.utils.XPathHelper;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.portlets.user.uriresolvermanager.entity.GenericResolver;
|
||||
import org.gcube.portlets.user.uriresolvermanager.entity.Resolver;
|
||||
import org.gcube.portlets.user.uriresolvermanager.resolvers.CatalogueResolverCaller;
|
||||
import org.gcube.resources.discovery.client.api.DiscoveryClient;
|
||||
import org.gcube.resources.discovery.client.queries.api.Query;
|
||||
import org.gcube.resources.discovery.client.queries.impl.QueryBox;
|
||||
|
@ -21,12 +23,10 @@ import org.slf4j.LoggerFactory;
|
|||
import org.w3c.dom.Node;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
|
||||
/**
|
||||
* The Class UriResolverMapReader.
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* May 4, 2015
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it May 4, 2015
|
||||
*/
|
||||
public class UriResolverMapReader {
|
||||
|
||||
|
@ -37,13 +37,13 @@ public class UriResolverMapReader {
|
|||
public static final String URI_RESOLVER_MAP_RESOURCE_NAME = "Uri-Resolver-Map";
|
||||
|
||||
// private Logger logger = LoggerFactory.getLogger(UriResolverMapReader.class);
|
||||
//TODO TEMP SOLUTION IN ORDER TO PRINT USING ALSO LOG4J INTO GEOEXPLORER PORTLET
|
||||
// TODO TEMP SOLUTION IN ORDER TO PRINT USING ALSO LOG4J INTO GEOEXPLORER
|
||||
// PORTLET
|
||||
private Logger logger = LoggerFactory.getLogger(UriResolverMapReader.class);
|
||||
private String secondaryType;
|
||||
private String scope;
|
||||
private String resourceName;
|
||||
private Map<String, Resolver> applicationTypes; //A map ApplicationType - Resolver
|
||||
|
||||
private Map<String, Resolver> applicationTypes; // A map ApplicationType - Resolver
|
||||
|
||||
/**
|
||||
* Instantiates a new uri resolver map reader.
|
||||
|
@ -57,10 +57,11 @@ public class UriResolverMapReader {
|
|||
readProfileFromInfrastrucure();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* this method looks up the generic resource among the ones available in the infrastructure using scope provider {@link ScopeProvider.instance.get()}
|
||||
* resource name {@value #URI_RESOLVER_MAP_RESOURCE_NAME} and secondaryType {@value #URIRESOLVERMAP_SECONDARY_TYPE}
|
||||
* this method looks up the generic resource among the ones available in the
|
||||
* infrastructure using scope provider {@link ScopeProvider.instance.get()}
|
||||
* resource name {@value #URI_RESOLVER_MAP_RESOURCE_NAME} and secondaryType
|
||||
* {@value #URIRESOLVERMAP_SECONDARY_TYPE}
|
||||
*
|
||||
* @return the applicationProfile profile
|
||||
* @throws Exception the exception
|
||||
|
@ -69,7 +70,8 @@ public class UriResolverMapReader {
|
|||
|
||||
String queryString = getGcubeGenericQueryString(secondaryType, resourceName);
|
||||
|
||||
logger.info("Trying to fetch in the scope: "+ScopeProvider.instance.get()+" the Generic Resouce with name: "+resourceName + " secondary type: "+secondaryType);
|
||||
logger.info("Trying to fetch in the scope: " + ScopeProvider.instance.get() + " the Generic Resouce with name: "
|
||||
+ resourceName + " secondary type: " + secondaryType);
|
||||
logger.info(queryString);
|
||||
try {
|
||||
|
||||
|
@ -77,14 +79,17 @@ public class UriResolverMapReader {
|
|||
logger.debug("new query box works");
|
||||
|
||||
DiscoveryClient<String> client = client();
|
||||
logger.info("submitting query is: "+queryString);
|
||||
logger.info("submitting query is: " + queryString);
|
||||
List<String> appUriResolverMap = client.submit(q);
|
||||
logger.debug("submit query works");
|
||||
|
||||
if (appUriResolverMap == null || appUriResolverMap.size() == 0){
|
||||
logger.error("ApplicationProfile with secondaryType: "+secondaryType+" and name: "+resourceName+" is not registered in the infrastructure, scope: "+ScopeProvider.instance.get());
|
||||
throw new ApplicationProfileException("ApplicationProfile with secondaryType: "+secondaryType+" and name: "+resourceName+" is not registered in the scope: "+ScopeProvider.instance.get());
|
||||
}else {
|
||||
if (appUriResolverMap == null || appUriResolverMap.size() == 0) {
|
||||
logger.error("ApplicationProfile with secondaryType: " + secondaryType + " and name: " + resourceName
|
||||
+ " is not registered in the infrastructure, scope: " + ScopeProvider.instance.get());
|
||||
throw new ApplicationProfileException(
|
||||
"ApplicationProfile with secondaryType: " + secondaryType + " and name: " + resourceName
|
||||
+ " is not registered in the scope: " + ScopeProvider.instance.get());
|
||||
} else {
|
||||
logger.info("Building map applications type - resource");
|
||||
logger.debug("Building new DocumentBuilder..");
|
||||
String elem = appUriResolverMap.get(0);
|
||||
|
@ -96,28 +101,39 @@ public class UriResolverMapReader {
|
|||
logger.debug("Evaluating XPath..");
|
||||
currValue = helper.evaluate("/Resource/Profile/Body/access_point/application_type/text()");
|
||||
if (currValue != null && currValue.size() > 0) {
|
||||
logger.info("Application Types are: "+currValue.size());
|
||||
logger.info("Application Types are: " + currValue.size());
|
||||
applicationTypes = new HashMap<String, Resolver>(currValue.size());
|
||||
// List<String> appTypes = currValue;
|
||||
//FOR EACH APPLICATION TYPE
|
||||
// FOR EACH APPLICATION TYPE
|
||||
for (String at : currValue) {
|
||||
logger.info("Application Type "+at);
|
||||
logger.info("Application Type " + at);
|
||||
// currValue = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/Scope/text()");
|
||||
List<String> resources = helper.evaluate("/Resource/Profile/Body/access_point[application_type='"+at+"']/resource/text()");
|
||||
List<String> entryNames = helper.evaluate("/Resource/Profile/Body/access_point[application_type='"+at+"']/entryname/text()");
|
||||
if(resources!=null && resources.size()>0){
|
||||
Resolver resolver = new Resolver(resources.get(0), entryNames.get(0));
|
||||
List<String> resources = helper.evaluate(
|
||||
"/Resource/Profile/Body/access_point[application_type='" + at + "']/resource/text()");
|
||||
List<String> entryNames = helper.evaluate(
|
||||
"/Resource/Profile/Body/access_point[application_type='" + at + "']/entryname/text()");
|
||||
if (resources != null && resources.size() > 0) {
|
||||
String resoureName = resources.get(0);
|
||||
String entryName = entryNames.get(0);
|
||||
Resolver resolver;
|
||||
if (entryName.equals("ctlg")) {
|
||||
resolver = new CatalogueResolverCaller(resoureName, entryName);
|
||||
} else
|
||||
resolver = new GenericResolver(resoureName, entryName);
|
||||
|
||||
applicationTypes.put(at, resolver);
|
||||
logger.info("Stored: "+at +" -> Resolver: "+ resolver);
|
||||
}else
|
||||
logger.warn("Skipping Type "+at+" mapping to runtime resource not found!");
|
||||
logger.info("Stored: " + at + " -> Resolver: " + resolver);
|
||||
} else
|
||||
logger.warn("Skipping Type " + at + " mapping to runtime resource not found!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("Error while trying to fetch Generic Resource with secondaryType: "+secondaryType+" and name "+resourceName+" from the infrastructure", e);
|
||||
throw new ApplicationProfileException("Error while trying to fetch Generic Resourc with secondaryType: "+secondaryType+" and name "+resourceName+" from the infrastructure");
|
||||
logger.error("Error while trying to fetch Generic Resource with secondaryType: " + secondaryType
|
||||
+ " and name " + resourceName + " from the infrastructure", e);
|
||||
throw new ApplicationProfileException("Error while trying to fetch Generic Resourc with secondaryType: "
|
||||
+ secondaryType + " and name " + resourceName + " from the infrastructure");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -129,12 +145,11 @@ public class UriResolverMapReader {
|
|||
* @param name the name
|
||||
* @return the gcube generic query string
|
||||
*/
|
||||
public static String getGcubeGenericQueryString(String secondaryType, String name){
|
||||
public static String getGcubeGenericQueryString(String secondaryType, String name) {
|
||||
|
||||
return "for $profile in collection('/db/Profiles/GenericResource')//Resource " +
|
||||
"where $profile/Profile/SecondaryType/string() eq '"+secondaryType+"' and $profile/Profile/Name/string() " +
|
||||
" eq '" + name + "'" +
|
||||
"return $profile";
|
||||
return "for $profile in collection('/db/Profiles/GenericResource')//Resource "
|
||||
+ "where $profile/Profile/SecondaryType/string() eq '" + secondaryType
|
||||
+ "' and $profile/Profile/Name/string() " + " eq '" + name + "'" + "return $profile";
|
||||
|
||||
}
|
||||
|
||||
|
@ -156,7 +171,6 @@ public class UriResolverMapReader {
|
|||
return secondaryType;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the scope.
|
||||
*
|
||||
|
@ -175,7 +189,9 @@ public class UriResolverMapReader {
|
|||
return resourceName;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
package org.gcube.portlets.user.uriresolvermanager.resolvers;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.Map;
|
||||
|
||||
import org.gcube.portlets.user.uriresolvermanager.entity.GenericResolver;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
/**
|
||||
* The Class CatalogueResolverCaller.
|
||||
*
|
||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
* Nov 5, 2021
|
||||
*/
|
||||
public class CatalogueResolverCaller extends GenericResolver {
|
||||
|
||||
public static final Logger LOG = LoggerFactory.getLogger(CatalogueResolverCaller.class);
|
||||
|
||||
/**
|
||||
* Instantiates a new catalogue resolver wrapper.
|
||||
*
|
||||
* @param resourceName the resource name
|
||||
* @param entryName the entry name
|
||||
*/
|
||||
public CatalogueResolverCaller(String resourceName, String entryName) {
|
||||
super(resourceName, entryName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the link.
|
||||
*
|
||||
* @param baseURI the base URI
|
||||
* @param parameters the parameters
|
||||
* @return the link
|
||||
* @throws Exception the exception
|
||||
*/
|
||||
@Override
|
||||
public String getLink(String baseURI, Map<String, String> parameters) throws Exception {
|
||||
|
||||
HttpURLConnection con = null;
|
||||
String theResponse = null;
|
||||
try {
|
||||
|
||||
URL urlObj = new URL(baseURI);
|
||||
con = (HttpURLConnection) urlObj.openConnection();
|
||||
con.setRequestMethod("POST");
|
||||
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
||||
//con.setRequestProperty("Accept", "application/json");
|
||||
|
||||
con.setDoOutput(true);
|
||||
con.setReadTimeout(60000);
|
||||
con.setConnectTimeout(60000);
|
||||
|
||||
JSONObject jObj = new org.json.JSONObject();
|
||||
for (String key : parameters.keySet()) {
|
||||
jObj.put(key, parameters.get(key));
|
||||
}
|
||||
|
||||
String toJSON = jObj.toString();
|
||||
LOG.info("Submitting JSON: "+toJSON);
|
||||
Integer code = null;
|
||||
try {
|
||||
|
||||
OutputStream os = con.getOutputStream();
|
||||
os.write(toJSON.getBytes("UTF-8"));
|
||||
os.close();
|
||||
|
||||
code = con.getResponseCode();
|
||||
theResponse = readResponse(con.getInputStream());
|
||||
|
||||
if (!((200 <= code) && (code <= 208))) {
|
||||
throw new Exception("CatalogueResolver returned code: " + code + ". Response is: " + theResponse);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
theResponse = readResponse(con.getInputStream());
|
||||
LOG.error("CatalogueResolver returned code: " + code + ". Response is: " + theResponse);
|
||||
throw e;
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
} finally {
|
||||
try {
|
||||
if (con != null)
|
||||
con.disconnect();
|
||||
} catch (Exception e) {
|
||||
// silent
|
||||
}
|
||||
}
|
||||
LOG.info("Got Link: " + theResponse);
|
||||
return theResponse;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Read response.
|
||||
*
|
||||
* @param ris the ris
|
||||
* @return the string
|
||||
* @throws IOException Signals that an I/O exception has occurred.
|
||||
*/
|
||||
private String readResponse(InputStream ris) throws IOException {
|
||||
// Receive the response from the server
|
||||
InputStream in = new BufferedInputStream(ris);
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
result.append(line);
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.uriresolvermanager.resolvers;
|
||||
|
||||
|
||||
/**
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* @Oct 14, 2014
|
||||
*
|
||||
*/
|
||||
public class GisResolverManager implements LinkResolver{
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.user.uriresolvermanager.LinkResolver#getLink()
|
||||
*/
|
||||
public String getLink() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.user.uriresolvermanager.resolvers;
|
||||
|
||||
/**
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* @Oct 14, 2014
|
||||
*
|
||||
*/
|
||||
public interface LinkResolver {
|
||||
String getLink();
|
||||
}
|
|
@ -5,6 +5,7 @@ import org.gcube.common.scope.api.ScopeProvider;
|
|||
import org.gcube.portlets.user.uriresolvermanager.UriResolverManager;
|
||||
import org.gcube.portlets.user.uriresolvermanager.exception.IllegalArgumentException;
|
||||
import org.gcube.portlets.user.uriresolvermanager.exception.UriResolverMapException;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -21,7 +22,7 @@ public class UriResolverManagerTest {
|
|||
public void testUriResolverManger(){
|
||||
UriResolverManager manager;
|
||||
try {
|
||||
ScopeProvider.instance.set("/d4science.research-infrastructures.eu/gCubeApps/BiodiversityLab");
|
||||
ScopeProvider.instance.set("/gcube/devsec/devVRE");
|
||||
manager = new UriResolverManager();
|
||||
System.out.println(manager.getCapabilities());
|
||||
System.out.println(manager.getApplicationTypes());
|
||||
|
@ -35,6 +36,29 @@ public class UriResolverManagerTest {
|
|||
|
||||
}
|
||||
|
||||
//@Test
|
||||
public void testCTLG(){
|
||||
|
||||
try {
|
||||
ScopeProvider.instance.set("/gcube/devsec/devVRE");
|
||||
UriResolverManager resolver;
|
||||
resolver = new UriResolverManager("CTLG");
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
params.put("gcube_scope","/gcube/devsec/devVRE");
|
||||
params.put("entity_context","dataset");
|
||||
params.put("entity_name","sarda-sarda");
|
||||
String shortLink = resolver.getLink(params, true); //true, link is shorted otherwise none
|
||||
System.out.println(shortLink);
|
||||
} catch (UriResolverMapException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalArgumentException e) {
|
||||
e.printStackTrace();
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//@Test
|
||||
public void testGIS() {
|
||||
|
||||
|
|
Loading…
Reference in New Issue