Work ultimated on Task #6262

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@141276 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2016-12-20 14:27:08 +00:00
parent b8368cd522
commit 4683ebb9f5
5 changed files with 116 additions and 134 deletions

View File

@ -49,6 +49,8 @@ public class UriResolverRewriteFilter implements Filter{
protected static final Logger logger = LoggerFactory.getLogger(UriResolverRewriteFilter.class); protected static final Logger logger = LoggerFactory.getLogger(UriResolverRewriteFilter.class);
private FilterConfig config; private FilterConfig config;
//private ApplicationProfileReaderForCatalogueResolver appPrfCatResolver = new ApplicationProfileReaderForCatalogueResolver(scope, useRootScope)
/** /**
* Gets the config. * Gets the config.
* *
@ -67,6 +69,7 @@ public class UriResolverRewriteFilter implements Filter{
logger.trace("run destroy"); logger.trace("run destroy");
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/ */
@ -96,8 +99,9 @@ public class UriResolverRewriteFilter implements Filter{
String newURI = SERVLET_CATALOGUE; String newURI = SERVLET_CATALOGUE;
if(pathSplit.length==5){ if(pathSplit.length==5){
logger.info("Resolving a clear URL to catalogue..."); logger.info("Resolving a clear URL to catalogue...");
logger.debug("found VRE name: "+pathSplit[2]); logger.debug("found VRE name: "+pathSplit[2]);
String gcubeScope = CatalogueRequestParameter.GCUBE_SCOPE.getKey() +"="+"/gcube/devNext/NextNext"; String gcubeScope = CatalogueRequestParameter.GCUBE_SCOPE.getKey() +"="+pathSplit[2];
String eC = CatalogueRequestParameter.ENTITY_CONTEXT.getKey() +"="+pathSplit[3]; String eC = CatalogueRequestParameter.ENTITY_CONTEXT.getKey() +"="+pathSplit[3];
logger.debug("found context name: "+eC); logger.debug("found context name: "+eC);
String eN = CatalogueRequestParameter.ENTITY_NAME.getKey() +"="+pathSplit[4]; String eN = CatalogueRequestParameter.ENTITY_NAME.getKey() +"="+pathSplit[4];
@ -166,7 +170,7 @@ public class UriResolverRewriteFilter implements Filter{
this.config = config; this.config = config;
} }
public static void main(String[] args) { /*public static void main(String[] args) {
String split = "/catalogue/NextNext/dataset/sarda-sarda"; String split = "/catalogue/NextNext/dataset/sarda-sarda";
@ -180,5 +184,5 @@ public class UriResolverRewriteFilter implements Filter{
System.out.println(array[2]); System.out.println(array[2]);
} }*/
} }

View File

@ -12,6 +12,7 @@ import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.gcube.common.resources.gcore.utils.XPathHelper; import org.gcube.common.resources.gcore.utils.XPathHelper;
import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.datatransfer.resolver.applicationprofile.GcubeQuery.FIELD_TYPE;
import org.gcube.resources.discovery.client.api.DiscoveryClient; import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.Query; import org.gcube.resources.discovery.client.queries.api.Query;
import org.gcube.resources.discovery.client.queries.impl.QueryBox; import org.gcube.resources.discovery.client.queries.impl.QueryBox;
@ -76,7 +77,7 @@ public class ApplicationProfileReader {
private ApplicationProfile readProfileFromInfrastrucure() { private ApplicationProfile readProfileFromInfrastrucure() {
ApplicationProfile appProf = new ApplicationProfile(); ApplicationProfile appProf = new ApplicationProfile();
String queryString = GcubeQuery.getGcubeGenericQueryString(secondaryType, appId); String queryString = GcubeQuery.getGcubeGenericResource(secondaryType, FIELD_TYPE.APP_ID, appId);
String originalScope = null; String originalScope = null;
try { try {

View File

@ -1,27 +1,50 @@
package org.gcube.datatransfer.resolver.applicationprofile; package org.gcube.datatransfer.resolver.applicationprofile;
/** /**
* The Class GcubeQuery. * The Class GcubeQuery.
* *
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Jan 14, 2016 * Dec 20, 2016
*/ */
public class GcubeQuery { public class GcubeQuery {
/** /**
* Gets the gcube generic query string. * The Enum FIELD_TYPE.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Dec 20, 2016
*/
public static enum FIELD_TYPE {RESOURCE_NAME, APP_ID}
/**
* Gets the gcube generic resource.
* *
* @param secondaryType the secondary type * @param secondaryType the secondary type
* @param appId the app id * @param type the type
* @return the gcube generic query string * @param fieldValue the field value
* @return the gcube generic resource
*/ */
public static String getGcubeGenericQueryString(String secondaryType, String appId){ public static String getGcubeGenericResource(String secondaryType, FIELD_TYPE type, String fieldValue){
return "for $profile in collection('/db/Profiles/GenericResource')//Resource " + String query = "for $profile in collection('/db/Profiles/GenericResource')//Resource " +
"where $profile/Profile/SecondaryType/string() eq '"+secondaryType+"' and $profile/Profile/Body/AppId/string() " + "where $profile/Profile/SecondaryType/string() eq '"+secondaryType+"'";
" eq '" + appId + "'" + switch (type) {
"return $profile"; case APP_ID:
query+= " and $profile/Profile/Body/AppId/string() eq '" + fieldValue + "'";
break;
case RESOURCE_NAME:
query+= " and $profile/Profile/Name/string() eq '" + fieldValue + "'";
break;
default:
break;
}
return query+=" return $profile";
} }
} }

View File

@ -1,20 +1,24 @@
/*
*
*/
package org.gcube.datatransfer.resolver.catalogue; package org.gcube.datatransfer.resolver.catalogue;
import static org.gcube.resources.discovery.icclient.ICFactory.client; import static org.gcube.resources.discovery.icclient.ICFactory.client;
import java.io.StringReader; import java.io.StringReader;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.gcube.common.resources.gcore.utils.XPathHelper; import org.gcube.common.resources.gcore.utils.XPathHelper;
import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.datatransfer.resolver.applicationprofile.ApplicationProfile;
import org.gcube.datatransfer.resolver.applicationprofile.ApplicationProfileNotFoundException; import org.gcube.datatransfer.resolver.applicationprofile.ApplicationProfileNotFoundException;
import org.gcube.datatransfer.resolver.applicationprofile.GcubeQuery; import org.gcube.datatransfer.resolver.applicationprofile.GcubeQuery;
import org.gcube.datatransfer.resolver.applicationprofile.GcubeQuery.FIELD_TYPE;
import org.gcube.datatransfer.resolver.applicationprofile.ScopeUtil; import org.gcube.datatransfer.resolver.applicationprofile.ScopeUtil;
import org.gcube.resources.discovery.client.api.DiscoveryClient; import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.Query; import org.gcube.resources.discovery.client.queries.api.Query;
@ -24,37 +28,36 @@ import org.xml.sax.InputSource;
/** /**
* The Class ApplicationProfileReader. * The Class ApplicationProfileReaderForCatalogueResolver.
* *
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
* Sep 6, 2016 * Dec 20, 2016
*/ */
public class ApplicationProfileReaderForCatalogueResolver { public class ApplicationProfileReaderForCatalogueResolver {
protected static final String RESOURCE_PROFILE_BODY_END_POINT_VRE_TEXT = "/Resource/Profile/Body/EndPoint/URL/text()"; public static final String SECONDARY_TYPE = "ApplicationProfile";
protected static final String RESOURCE_PROFILE_BODY_END_POINT_SCOPE_TEXT = "/Resource/Profile/Body/EndPoint/Scope/text()"; public static final String RESOURCE_NAME = "Catalogue-Resolver";
protected static final String RESOURCE_PROFILE_BODY_TEXT = "/Resource/Profile/Body/text()";
protected static final String RESOURCE_PROFILE_BODY_THUMBNAIL_URL_TEXT = "/Resource/Profile/Body/ThumbnailURL/text()";
protected static final String RESOURCE_PROFILE_BODY_APP_ID_TEXT = "/Resource/Profile/Body/AppId/text()";
protected static final String RESOURCE_PROFILE_DESCRIPTION_TEXT = "/Resource/Profile/Description/text()";
protected static final String RESOURCE_PROFILE_NAME_TEXT = "/Resource/Profile/Name/text()"; protected static final String RESOURCE_PROFILE_NAME_TEXT = "/Resource/Profile/Name/text()";
protected static final String RESOURCE_PROFILE_DESCRIPTION_TEXT = "/Resource/Profile/Description/text()";
protected static final String SECONDARY_TYPE = "ApplicationProfile"; protected static final String RESOURCE_PROFILE_BODY_END_POINT_SCOPE_TEXT = "/Resource/Profile/Body/EndPoint/SCOPE/text()";
protected static final String RESOURCE_NAME = "Catalogue-Resolver"; protected static final String RESOURCE_PROFILE_BODY_END_POINT_VRE_NAME_TEXT = "/Resource/Profile/Body/EndPoint/VRE_NAME/text()";
private Logger logger = Logger.getLogger(ApplicationProfileReaderForCatalogueResolver.class); private Logger logger = Logger.getLogger(ApplicationProfileReaderForCatalogueResolver.class);
private String secondaryType; private String secondaryType;
private String resourceName; private String resourceName;
private String scope; private String scope;
private ApplicationProfile applicationProfile;
private boolean useRootScope = false; private boolean useRootScope = false;
/** The hash vre name scope.
* Used by Catalogue Resolver for mapping VRE NAME with its SCOPE where to fetch the Data Catalogue Portlet so that resolve correctly URL of
* kind: http://[CATALOGUE_RESOLVER_SERVLET]/[VRE_NAME]/[entity_context value]/[entity_name value]
* */
private Map<String, String> hashVreNameScope = new HashMap<String, String>();
/** /**
* Instantiates a new application profile reader for catalogue resolver. * Instantiates a new application profile reader for catalogue resolver.
* *
* @param scope the scope * @param scope the scope
* @param portletClassName the portlet class name
* @param useRootScope the use root scope * @param useRootScope the use root scope
*/ */
public ApplicationProfileReaderForCatalogueResolver(String scope, boolean useRootScope) { public ApplicationProfileReaderForCatalogueResolver(String scope, boolean useRootScope) {
@ -62,27 +65,15 @@ public class ApplicationProfileReaderForCatalogueResolver {
this.secondaryType = SECONDARY_TYPE; this.secondaryType = SECONDARY_TYPE;
this.resourceName = RESOURCE_NAME; this.resourceName = RESOURCE_NAME;
this.useRootScope = useRootScope; this.useRootScope = useRootScope;
this.applicationProfile = readProfileFromInfrastrucure(); this.readProfileFromInfrastrucure();
} }
/** /**
* Gets the application profile. * Read profile from infrastrucure and fills the map {@link #hashVreNameScope}
*
* @return the application profile
*/ */
public ApplicationProfile getApplicationProfile() { private void readProfileFromInfrastrucure() {
return applicationProfile;
}
/** String queryString = GcubeQuery.getGcubeGenericResource(secondaryType, FIELD_TYPE.RESOURCE_NAME, resourceName);
* this method looks up the applicationProfile profile among the ones available in the infrastructure.
*
* @return the applicationProfile profile
*/
private ApplicationProfile readProfileFromInfrastrucure() {
ApplicationProfile appProf = new ApplicationProfile();
String queryString = GcubeQuery.getGcubeGenericQueryString(secondaryType, resourceName);
String originalScope = null; String originalScope = null;
try { try {
@ -90,97 +81,32 @@ public class ApplicationProfileReaderForCatalogueResolver {
originalScope = ScopeProvider.instance.get(); originalScope = ScopeProvider.instance.get();
String discoveryScope = useRootScope?ScopeUtil.getInfrastructureNameFromScope(scope):scope; String discoveryScope = useRootScope?ScopeUtil.getInfrastructureNameFromScope(scope):scope;
ScopeProvider.instance.set(discoveryScope); ScopeProvider.instance.set(discoveryScope);
logger.info("Trying to fetch ApplicationProfile in the infra scope: "+discoveryScope+", SecondaryType: " + secondaryType + ", AppId: " + resourceName); logger.info("Trying to fetch ApplicationProfile in the scope: "+discoveryScope+", SecondaryType: " + secondaryType + ", ResourceName: " + resourceName);
Query q = new QueryBox(queryString); Query q = new QueryBox(queryString);
DiscoveryClient<String> client = client(); DiscoveryClient<String> client = client();
List<String> appProfile = client.submit(q); List<String> appProfile = client.submit(q);
if (appProfile == null || appProfile.size() == 0) if (appProfile == null || appProfile.size() == 0)
throw new ApplicationProfileNotFoundException("ApplicationProfile with SecondaryType: " + secondaryType + ", AppId: " + resourceName +" is not registered in the infra scope: "+discoveryScope); throw new ApplicationProfileNotFoundException("ApplicationProfile with SecondaryType: " + secondaryType + ", ResourceName: " + resourceName +" is not registered in the scope: "+discoveryScope);
else { else {
try{
String elem = appProfile.get(0); String elem = appProfile.get(0);
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement(); Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement();
XPathHelper helper = new XPathHelper(node); XPathHelper helper = new XPathHelper(node);
List<String> scopes = helper.evaluate(RESOURCE_PROFILE_BODY_END_POINT_SCOPE_TEXT);
List<String> currValue = null; for (String scopeFound : scopes) {
currValue = helper.evaluate(RESOURCE_PROFILE_NAME_TEXT); List<String> vreName = helper.evaluate("/Resource/Profile/Body/EndPoint[SCOPE='"+scopeFound.toString()+"']/VRE_NAME/text()");
if (currValue != null && currValue.size() > 0) { logger.info("For scope: "+scopeFound+", found VRE_NAME "+vreName);
appProf.setName(currValue.get(0)); hashVreNameScope.put(vreName.get(0), scopeFound);
} }
else throw new ApplicationProfileNotFoundException("Your applicationProfile NAME was not found in the profile"); }catch(Exception e){
throw new ApplicationProfileNotFoundException("Error during parsing application profile with resource name: "+resourceName + " in the scope: "+scope.toString());
currValue = helper.evaluate(RESOURCE_PROFILE_DESCRIPTION_TEXT);
if (currValue != null && currValue.size() > 0) {
appProf.setDescription(currValue.get(0));
} }
else logger.warn("No Description exists for " + appProf.getName());
currValue = helper.evaluate(RESOURCE_PROFILE_BODY_APP_ID_TEXT);
if (currValue != null && currValue.size() > 0) {
appProf.setKey(currValue.get(0));
}
else throw new ApplicationProfileNotFoundException("Your applicationProfile ID n was not found in the profile, consider adding <AppId> element in <Body>");
currValue = helper.evaluate(RESOURCE_PROFILE_BODY_THUMBNAIL_URL_TEXT);
if (currValue != null && currValue.size() > 0) {
appProf.setImageUrl(currValue.get(0));
}
else{
logger.warn("Null or empty <ThumbnailURL> element in <Body>" + appProf.getName());
}
currValue = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/Scope/text()");
if (currValue != null && currValue.size() > 0) {
List<String> scopes = currValue;
String currentScope = scopes.get(0);
int slashCount = StringUtils.countMatches(currentScope, "/");
if(slashCount < 3){//CASE not VRE - set session scope
logger.info("Scope "+ scope.toString() + " is not a VRE");
List<String> listSessionScope = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/Sessionscope/text()"); //get session scope of i+1-mo scope
if(listSessionScope!=null && listSessionScope.size()>0){ //If sessions scope exists
logger.trace("setting session scope "+ listSessionScope.get(0));
appProf.setScope(listSessionScope.get(0));
}
else{
logger.trace("session scope not exists setting scope "+ scope.toString());
appProf.setScope(scope.toString());
}
}
else{ //CASE IS A VRE
logger.info("Scope "+ scope.toString() + " is a VRE");
appProf.setScope(scope.toString());
}
//RETRIEVE URL
currValue = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/URL/text()");
if (currValue != null && currValue.size() > 0) {
String url = currValue.get(0);
// System.out.println("URL "+url);
if(url!=null)
appProf.setUrl(url);
else
throw new ApplicationProfileNotFoundException("Your applicationProfile URL was not found in the profile for Scope: " + scope.toString());
}
else throw new ApplicationProfileNotFoundException("Your applicationProfile URL was not found in the profile for Scope: " + scope.toString());
}
else throw new ApplicationProfileNotFoundException("Your applicationProfile with scope "+scope.toString()+" was not found in the profile, consider adding <EndPoint><Scope> element in <Body>");
return appProf;
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("Error while trying to fetch applicationProfile profile from the infrastructure", e); logger.error("Error while trying to fetch applicationProfile profile from the infrastructure", e);
return null;
}finally{ }finally{
if(originalScope!=null && !originalScope.isEmpty()){ if(originalScope!=null && !originalScope.isEmpty()){
ScopeProvider.instance.set(originalScope); ScopeProvider.instance.set(originalScope);
@ -193,34 +119,44 @@ public class ApplicationProfileReaderForCatalogueResolver {
} }
/**
* @return the hashVreNameScope
*/
public Map<String, String> getHashVreNameScope() {
return hashVreNameScope;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see java.lang.Object#toString() * @see java.lang.Object#toString()
*/ */
@Override @Override
public String toString() { public String toString() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.append("ApplicationProfileReader [secondaryType="); builder.append("ApplicationProfileReaderForCatalogueResolver [logger=");
builder.append(logger);
builder.append(", secondaryType=");
builder.append(secondaryType); builder.append(secondaryType);
builder.append(", appId="); builder.append(", resourceName=");
builder.append(resourceName); builder.append(resourceName);
builder.append(", scope="); builder.append(", scope=");
builder.append(scope); builder.append(scope);
builder.append(", applicationProfile="); builder.append(", useRootScope=");
builder.append(applicationProfile); builder.append(useRootScope);
builder.append(", hashVreNameScope=");
builder.append(hashVreNameScope);
builder.append("]"); builder.append("]");
return builder.toString(); return builder.toString();
} }
/*
public static void main(String[] args) {
String portletClassName = "org.gcube.portlets.user.gisviewerapp.server.GisViewerAppServiceImpl"; /*public static void main(String[] args) {
String scope ="/gcube"; String scope ="/gcube";
String secondaryType = "ApplicationProfile"; ApplicationProfileReaderForCatalogueResolver reader = new ApplicationProfileReaderForCatalogueResolver(scope, true);
ApplicationProfileReader reader = new ApplicationProfileReader(scope, secondaryType, portletClassName);
System.out.println(reader); System.out.println(reader);
}*/ }*/
} }

View File

@ -51,6 +51,8 @@ public class CatalogueResolver extends HttpServlet{
/** The logger. */ /** The logger. */
private static final Logger logger = LoggerFactory.getLogger(CatalogueResolver.class); private static final Logger logger = LoggerFactory.getLogger(CatalogueResolver.class);
private ApplicationProfileReaderForCatalogueResolver appPrCatResolver;
/** The scope to enc decr. */ /** The scope to enc decr. */
private String scopeToEncDecr = null; private String scopeToEncDecr = null;
@ -77,10 +79,12 @@ public class CatalogueResolver extends HttpServlet{
return scopeToEncDecr; return scopeToEncDecr;
scopeToEncDecr = System.getenv(ENV_SCOPE); scopeToEncDecr = System.getenv(ENV_SCOPE);
logger.info("Reading Environment Variable "+ENV_SCOPE+" to get the scope for encrypt/descrypt"); logger.info("Reading Environment Variable "+ENV_SCOPE+" to get the scope for encrypt/descrypt; I read scope: "+scopeToEncDecr);
if(scopeToEncDecr == null || scopeToEncDecr.isEmpty()) if(scopeToEncDecr == null || scopeToEncDecr.isEmpty())
throw new ServletException(CatalogueResolver.class.getName() +" cannot work without set the Environment Variable: "+ENV_SCOPE); throw new ServletException(CatalogueResolver.class.getName() +" cannot work without set the Environment Variable: "+ENV_SCOPE);
appPrCatResolver = new ApplicationProfileReaderForCatalogueResolver(scopeToEncDecr, true);
logger.info("Reosurce for Catalogue Resolver: "+appPrCatResolver);
return scopeToEncDecr; return scopeToEncDecr;
} }
@ -95,14 +99,14 @@ public class CatalogueResolver extends HttpServlet{
String clearCatalogueQueryLink = req.getParameter(DIRECT_CATALOGUE_LINK_PARAM); String clearCatalogueQueryLink = req.getParameter(DIRECT_CATALOGUE_LINK_PARAM);
String encryptedCatalogueQueryLink = req.getParameter(ENC_CATALOGUE_LINK_PARAM); String encryptedCatalogueQueryLink = req.getParameter(ENC_CATALOGUE_LINK_PARAM);
boolean foundLink = false; boolean foundClearLink = false;
if(clearCatalogueQueryLink==null || clearCatalogueQueryLink.isEmpty()){ if(clearCatalogueQueryLink==null || clearCatalogueQueryLink.isEmpty()){
logger.info("Link is not a direct link to catalogue"); logger.info("Link is not a direct link to catalogue");
}else }else
foundLink = true; foundClearLink = true;
String queryStringToCat = ""; String queryStringToCat = "";
if(foundLink){ if(foundClearLink){
logger.info("Trying to resolve clear link to catalogue using query link: "+clearCatalogueQueryLink); logger.info("Trying to resolve clear link to catalogue using query link: "+clearCatalogueQueryLink);
queryStringToCat = clearCatalogueQueryLink; queryStringToCat = clearCatalogueQueryLink;
}else{ }else{
@ -152,6 +156,20 @@ public class CatalogueResolver extends HttpServlet{
return; return;
} }
/**
* I'm replacing VRE_NAME passed into parameter GCUBE_SCOPE with the scope read from ApplicationProfileReaderForCatalogueResolver#RESOURCE_NAME
* that is the full scope
*/
if(foundClearLink){
if(appPrCatResolver==null)
appPrCatResolver = new ApplicationProfileReaderForCatalogueResolver(scopeToEncDecr, true);
String fullScope = appPrCatResolver.getHashVreNameScope().get(scope);
logger.debug("Read fullScope: "+fullScope + " for VRE_NAME: "+scope +" from Map and overring it");
cer.addParameterToRequest(CatalogueRequestParameter.GCUBE_SCOPE.getKey(), fullScope);
scope = fullScope;
}
String ckanPorltetUrl = ""; String ckanPorltetUrl = "";
try{ try{
logger.info("Using scope "+scope+ " to search Ckan Portlet URL from IS"); logger.info("Using scope "+scope+ " to search Ckan Portlet URL from IS");