bug fixing GeonetworkResolver

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@173912 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2018-10-31 14:58:37 +00:00
parent 680d468dc9
commit 9b11cb352c
3 changed files with 169 additions and 117 deletions

View File

@ -393,7 +393,7 @@ public class GetResponseRecordFilter {
* @param metadataName the metadata name
* @return the metadata value by file identifier
*/
private static String getMetadataValueByFileIdentifier(String fileIdentifier, String geonetworkURL, String user, String pwd, String metadataName){
public static String getMetadataValueByFileIdentifier(String fileIdentifier, String geonetworkURL, String user, String pwd, String metadataName){
String response = requestXmlMetadataGet(fileIdentifier, geonetworkURL, user, pwd);

View File

@ -27,11 +27,9 @@ import javax.ws.rs.core.StreamingOutput;
import org.apache.commons.io.IOUtils;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.datatransfer.resolver.GeonetworkRequestFilterParameters;
import org.gcube.datatransfer.resolver.GeonetworkRequestFilterParameters.MODE;
import org.gcube.datatransfer.resolver.GeonetworkRequestFilterParameters.VISIBILITY;
import org.gcube.datatransfer.resolver.SingleFileStreamingOutput;
import org.gcube.datatransfer.resolver.Util;
import org.gcube.datatransfer.resolver.gis.GeonetworkAccessParameter;
import org.gcube.datatransfer.resolver.gis.GeonetworkInstance;
import org.gcube.datatransfer.resolver.gis.GeonetworkServiceInterface;
@ -60,11 +58,17 @@ import org.w3c.dom.Document;
@Path("geonetwork")
public class GeonetworkResolver {
/**
*
*/
public static final String REPLACED_A_PUBLIC_UUID_PLEASE_IGNORE = "Replaced a public UUID, please ignore";
public static final String REPLACED_UUID_BY_FILTER_PLEASE_IGNORE = "Replaced UUID by "+GeonetworkResolver.class.getSimpleName()+" filters, please ignore";
private static Logger logger = LoggerFactory.getLogger(GeonetworkResolver.class);
public static final String PATH_PARAM_MODE = "mode";
public static final String PATH_PARAM_REQUEST_DELIMITER = "requestDelimiter";
public static final String PATH_PARAM_OWNER = "owner";
// public static final String PATH_PARAM_OWNER = "owner";
private static final String PATH_PARAM_VISIBILITY = "visibility";
private static final String PATH_PARAM_SCOPE = "scope";
@ -80,6 +84,8 @@ public class GeonetworkResolver {
public static final String UUID = "uuid";
public static final String SCOPE_SEPARATOR = "|";
protected Map<String, GeonetworkInstance> cacheGNInstances;
private String help = "https://wiki.gcube-system.org/gcube/GCube_Resource_Catalogue#Geonetwork_Resolver";
@ -106,18 +112,19 @@ public class GeonetworkResolver {
*/
@GET
@Path("{"+PATH_PARAM_SCOPE+"}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{"+PATH_PARAM_OWNER+"}/$${"+PATH_PARAM_REMAINPATH+":(/[^?$]+)?}")
@Path("{"+PATH_PARAM_SCOPE+"}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{filterKey}/{filterValue}/$${"+PATH_PARAM_REMAINPATH+":(/[^?$]+)?}")
public Response submitGet(@Context HttpServletRequest req,
@PathParam(PATH_PARAM_SCOPE) @Nullable String scope,
@PathParam(PATH_PARAM_MODE) @Nullable String mode,
@PathParam(PATH_PARAM_VISIBILITY) @Nullable String visibility,
@PathParam(PATH_PARAM_OWNER) @Nullable String owner,
@PathParam("filterKey") @Nullable String filterKey,
@PathParam("filterValue") @Nullable String filterValue,
@PathParam(PATH_PARAM_REMAINPATH) @Nullable String remainPath,
@QueryParam(QUERY_PARAM_RESET_CACHE_PARAM) @Nullable String resetCache,
@QueryParam(QUERY_PARAM_RESET_CACHED_SCOPE_PARAM) @Nullable String resetScope) {
logger.info(this.getClass().getSimpleName()+" GET starts...");
logger.info("Params are [mode: "+mode+", scope: "+scope+", visibility: "+visibility+", owner: "+owner+", remainPath: "+remainPath+"]");
logger.info("Params are [mode: "+mode+", scope: "+scope+", visibility: "+visibility+", filterKey: "+filterKey+", filterValue: "+filterValue+", remainPath: "+remainPath+"]");
if(scope==null || scope.isEmpty()){
logger.error("Path Parameter 'scope' not found");
@ -129,6 +136,7 @@ public class GeonetworkResolver {
ExceptionManager.throwBadRequestException(req, "Missing mandatory path parameter 'mode'", GeonetworkResolver.class, help);
}
scope = scope.replaceAll("\\"+SCOPE_SEPARATOR, "/");
mode = mode.toUpperCase();
try{
MODE.valueOf(mode);
@ -165,13 +173,13 @@ public class GeonetworkResolver {
resetGeonetoworkInstanceCacheForScope(scope);
}
String fullURL = Util.getFullURL(req);
int index = fullURL.indexOf(GeonetworkRequestFilterParameters.REQUEST_DELIMITIER);
int delimiterIndex = index+GeonetworkRequestFilterParameters.REQUEST_DELIMITIER.length();
//BUILDING REMAINING PATH WITHOUT GeonetworkRequestFilterParameters.REQUEST_DELIMITIER
if(delimiterIndex<fullURL.length()){
remainPath = fullURL.substring(delimiterIndex, fullURL.length());
}
// String fullURL = Util.getFullURL(req);
// int index = fullURL.indexOf(GeonetworkRequestFilterParameters.REQUEST_DELIMITIER);
// int delimiterIndex = index+GeonetworkRequestFilterParameters.REQUEST_DELIMITIER.length();
// //BUILDING REMAINING PATH WITHOUT GeonetworkRequestFilterParameters.REQUEST_DELIMITIER
// if(delimiterIndex<fullURL.length()){
// remainPath = fullURL.substring(delimiterIndex, fullURL.length());
// }
logger.info("Remaining path is: "+remainPath);
String gnGetlURL = null;
@ -198,7 +206,8 @@ public class GeonetworkResolver {
logger.info("The base URL is: "+baseURL);
//newQueryString = purgeRemainFromQueryString(remainPath, newQueryString);
//logger.trace("Purged query string from "+remainPath+" is: "+newQueryString);
gnGetlURL = baseURL+"?"+req.getQueryString();
String queryString = req.getQueryString()==null || req.getQueryString().isEmpty()?"":"?"+req.getQueryString();
gnGetlURL = baseURL+queryString;
logger.info("Sending get request to URL: "+gnGetlURL);
HttpResponse proxedGNResponse = httpUtils.get(gnGetlURL);
@ -272,18 +281,18 @@ public class GeonetworkResolver {
// }, CACHE_RESET_DELAY, CACHE_RESET_TIME);
// }
/**
* Submit post.
*/
@SuppressWarnings("resource")
@POST
@Path("/{"+PATH_PARAM_SCOPE+":(/[^/?$]+)?}}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{"+PATH_PARAM_OWNER+"}/{"+PATH_PARAM_REQUEST_DELIMITER+"}")
@Path("{"+PATH_PARAM_SCOPE+"}/{"+PATH_PARAM_MODE+"}/{"+PATH_PARAM_VISIBILITY+"}/{filterKey}/{filterValue}/$${"+PATH_PARAM_REMAINPATH+":(/[^?$]+)?}")
public Response submitPost(@Context HttpServletRequest req,
@PathParam(PATH_PARAM_SCOPE) @Nullable String scope,
@PathParam(PATH_PARAM_MODE) @Nullable String mode,
@PathParam(PATH_PARAM_VISIBILITY) @Nullable String visibility,
@PathParam(PATH_PARAM_OWNER) @Nullable String owner,
@PathParam(PATH_PARAM_REQUEST_DELIMITER) @Nullable String requestDelimiter){
@PathParam("filterKey") @Nullable String filterKey,
@PathParam("filterValue") @Nullable String filterValue,
@PathParam(PATH_PARAM_REMAINPATH) @Nullable String remainPath,
@QueryParam(QUERY_PARAM_RESET_CACHE_PARAM) @Nullable String resetCache,
@QueryParam(QUERY_PARAM_RESET_CACHED_SCOPE_PARAM) @Nullable String resetScope) {
logger.info(this.getClass().getSimpleName()+" POST starts...");
if(scope==null || scope.isEmpty()){
@ -296,6 +305,7 @@ public class GeonetworkResolver {
ExceptionManager.throwBadRequestException(req, "Missing mandatory path parameter 'mode'", GeonetworkResolver.class, help);
}
scope = scope.replaceAll("\\"+SCOPE_SEPARATOR, "/");
mode = mode.toUpperCase();
try{
MODE.valueOf(mode);
@ -319,19 +329,27 @@ public class GeonetworkResolver {
ExceptionManager.throwWrongParameterException(req, "The 'visibility' parameter must be value of "+toPrint, GeonetworkResolver.class, help);
}
if(requestDelimiter==null || requestDelimiter.compareTo(VALUE_OF_REQUEST_DELIMITIER)!=0){
logger.error("Path Parameter to REQUEST_DELIMITIER '"+VALUE_OF_REQUEST_DELIMITIER+"' not found");
ExceptionManager.throwBadRequestException(req, "Path Parameter '"+VALUE_OF_REQUEST_DELIMITIER+"' not found as REQUEST DELIMITER", GeonetworkResolver.class, help);
// if(requestDelimiter==null || requestDelimiter.compareTo(VALUE_OF_REQUEST_DELIMITIER)!=0){
// logger.error("Path Parameter to REQUEST_DELIMITIER '"+VALUE_OF_REQUEST_DELIMITIER+"' not found");
// ExceptionManager.throwBadRequestException(req, "Path Parameter '"+VALUE_OF_REQUEST_DELIMITIER+"' not found as REQUEST DELIMITER", GeonetworkResolver.class, help);
// }
// String fullURL = Util.getFullURL(req);
// int index = fullURL.indexOf(GeonetworkRequestFilterParameters.REQUEST_DELIMITIER);
// int delimiterIndex = index+GeonetworkRequestFilterParameters.REQUEST_DELIMITIER.length();
//BUILDING REMAINING PATH WITHOUT GeonetworkRequestFilterParameters.REQUEST_DELIMITIER
// String remainPath = null;
// if(delimiterIndex<fullURL.length()){
// remainPath = fullURL.substring(delimiterIndex, fullURL.length());
// }
//HOW TO PASS MORE THAN ONE?
Map<String,String> filters = new HashMap<String, String>();
if(filterKey!=null && filterValue!=null){
filters.put(filterKey, filterValue);
logger.debug("Added filter parmas to map filters: "+filters);
}
String fullURL = Util.getFullURL(req);
int index = fullURL.indexOf(GeonetworkRequestFilterParameters.REQUEST_DELIMITIER);
int delimiterIndex = index+GeonetworkRequestFilterParameters.REQUEST_DELIMITIER.length();
//BUILDING REMAINING PATH WITHOUT GeonetworkRequestFilterParameters.REQUEST_DELIMITIER
String remainPath = null;
if(delimiterIndex<fullURL.length()){
remainPath = fullURL.substring(delimiterIndex, fullURL.length());
}
String gnCSWlURL = null;
try {
@ -393,12 +411,15 @@ public class GeonetworkResolver {
//HARVESTED LAYERS
}else{
logger.debug("Getting "+MODE.HARVEST+" layers, I'm using the owner: '"+owner +"' passed as parameter to filter layer/s returned..");
if(owner==null || owner.isEmpty()){
String error = "Harvest owner is missing. It is not possible to filter layers for the request "+MODE.HARVEST + " in the scope: "+scope+", without a valid owner as input";
logger.error(error);
ExceptionManager.throwBadRequestException(req, error, GeonetworkResolver.class, help);
}
// logger.debug("Getting "+MODE.HARVEST+" layers, I'm using the owner: '"+owner +"' passed as parameter to filter layer/s returned..");
// if(owner==null || owner.isEmpty()){
// String error = "Harvest owner is missing. It is not possible to filter layers for the request "+MODE.HARVEST + " in the scope: "+scope+", without a valid owner as input";
// logger.error(error);
// ExceptionManager.throwBadRequestException(req, error, GeonetworkResolver.class, help);
// }
filters.put("isHarvested", "y");
logger.debug("Getting "+MODE.HARVEST+" layers, I'm using filters ["+filters+"]");
}
if(account.getUser()!=null){
@ -413,16 +434,18 @@ public class GeonetworkResolver {
//VRE LAYERS
if(mode.equals(MODE.VRE)){
logger.debug("Getting "+MODE.VRE+" layers, the VRE account: "+account.getUser() +" will be used as owner user for filtering... Is it right?");
owner = account.getUser();
filters.put("ownername", account.getUser());
//HARVESTED LAYERS
}else{
logger.debug("Getting "+MODE.HARVEST+" layers, I'm using the owner: '"+owner +"' passed as parameter to filter layer/s returned..");
if(owner==null || owner.isEmpty()){
String error = "Harvest owner is missing. It is not possible to filter layers for the request "+MODE.HARVEST + " in the scope: "+scope+", without a valid owner as input";
logger.error(error);
ExceptionManager.throwBadRequestException(req, error, GeonetworkResolver.class, help);
}
// logger.debug("Getting "+MODE.HARVEST+" layers, I'm using the owner: '"+owner +"' passed as parameter to filter layer/s returned..");
// if(owner==null || owner.isEmpty()){
// String error = "Harvest owner is missing. It is not possible to filter layers for the request "+MODE.HARVEST + " in the scope: "+scope+", without a valid owner as input";
// logger.error(error);
// ExceptionManager.throwBadRequestException(req, error, GeonetworkResolver.class, help);
// }
filters.put("isHarvested", "y");
logger.debug("Getting "+MODE.HARVEST+" layers, I added 'isHarvested = y' to filters ["+filters+"]");
}
}
@ -446,33 +469,68 @@ public class GeonetworkResolver {
ReusableInputStream reus = new ReusableInputStream(in);
if(visibility.equals(VISIBILITY.PRV)){
logger.info("Private VISIBILITY performing so getting public file identifiers to apply filtering..");
logger.info("Private VISIBILITY requested, retrieving public file identifiers to apply filtering..");
FilterGetRecords filterGetRecords = new FilterGetRecords(byteArray.toString());
if(filterGetRecords.getFoundPublicIds()!=null && filterGetRecords.getFoundPublicIds().size()>0){
logger.info("I'm removing list of public IDs with "+filterGetRecords.getFoundPublicIds().size() +" item/s. Is it right?");
in = GetResponseRecordFilter.overrideResponseIdsByListIds(reus, filterGetRecords.getFoundPublicIds(), "Replaced a public UUID, please ignore");
in = GetResponseRecordFilter.overrideResponseIdsByListIds(reus, filterGetRecords.getFoundPublicIds(), REPLACED_A_PUBLIC_UUID_PLEASE_IGNORE);
}
}else {
}
// else {
//
// logger.info("Public VISIBILITY perfoming check on ownership...");
// Document doc = GetResponseRecordFilter.inputStreamToW3CDocument(reus);
// List<String> fileIdentifiers = GetResponseRecordFilter.getTextContentStringsForTagName(doc, "gmd:fileIdentifier");
// List<String> noMatchingOwner = new ArrayList<String>();
// for (String fileId : fileIdentifiers) {
// String own = GetResponseRecordFilter.getMetaCategoryByFileIdentifier(fileId, config.getGeoNetworkEndpoint(),config.getAdminAccount().getUser(), config.getAdminAccount().getPassword());
// //String own = GetResponseRecordFilter.getMetaOwnerNameByFileIdentifier(fileId, config.getGeoNetworkEndpoint(),config.getAdminAccount().getUser(), config.getAdminAccount().getPassword());
// if(own.compareTo(owner)!=0){
// logger.debug("Owner of file Identifier "+fileId+" not matching the owner passed: "+owner+", removing it..");
// noMatchingOwner.add(fileId);
// }
// }
// if(noMatchingOwner.size()>0){
// logger.info("Removing "+noMatchingOwner.size()+" layer/s not macthing the owner: "+owner);
// in = GetResponseRecordFilter.overrideResponseIdsByListIds(reus, noMatchingOwner, "Replaced UUID owned by another user, please ignore");
// }else{
// logger.info("No replace on UUIDs was applied for the owner: "+owner);
// in = reus;
// }
// }
logger.info("Public VISIBILITY perfoming check on ownership...");
if(filters.size()>0){
logger.info("Applying filtering on geonet:info... filter/s used: "+filters);
Document doc = GetResponseRecordFilter.inputStreamToW3CDocument(reus);
List<String> fileIdentifiers = GetResponseRecordFilter.getTextContentStringsForTagName(doc, "gmd:fileIdentifier");
List<String> noMatchingOwner = new ArrayList<String>();
List<String> noMatchingFilter = new ArrayList<String>();
for (String fileId : fileIdentifiers) {
String own = GetResponseRecordFilter.getMetaCategoryByFileIdentifier(fileId, config.getGeoNetworkEndpoint(),config.getAdminAccount().getUser(), config.getAdminAccount().getPassword());
//String own = GetResponseRecordFilter.getMetaOwnerNameByFileIdentifier(fileId, config.getGeoNetworkEndpoint(),config.getAdminAccount().getUser(), config.getAdminAccount().getPassword());
if(own.compareTo(owner)!=0){
logger.debug("Owner of file Identifier "+fileId+" not matching the owner passed: "+owner+", removing it..");
noMatchingOwner.add(fileId);
//CKECKING THE FILTERS
for (String fkey : filters.keySet()) {
String value = GetResponseRecordFilter.getMetadataValueByFileIdentifier(fileId, config.getGeoNetworkEndpoint(),config.getAdminAccount().getUser(), config.getAdminAccount().getPassword(), fkey);
//String own = GetResponseRecordFilter.getMetaOwnerNameByFileIdentifier(fileId, config.getGeoNetworkEndpoint(),config.getAdminAccount().getUser(), config.getAdminAccount().getPassword());
String fValue = filters.get(fkey);
if(value!=null && value.compareTo(fValue)!=0){
logger.trace(fkey +" of File Identifier "+fileId+" not matching the filter: "+fkey+" with value: "+fValue+", adding it to list to remove file identifier and exit from loop..");
noMatchingFilter.add(fileId);
//WHEN I ADD THE FILE IDENTIFIER TO FILTERED ID, I CAN EXIT FROM CKECKING FILTERS LOOP
break;
}
}
}
if(noMatchingOwner.size()>0){
logger.info("Removing "+noMatchingOwner.size()+" layer/s not macthing the owner: "+owner);
in = GetResponseRecordFilter.overrideResponseIdsByListIds(reus, noMatchingOwner, "Replaced UUID owned by another user, please ignore");
if(noMatchingFilter.size()>0){
logger.info("Removing "+noMatchingFilter.size()+" layer/s that not macthing the filters: "+filters);
//Document doc2 = GetResponseRecordFilter.inputStreamToW3CDocument(reus);
in = GetResponseRecordFilter.overrideResponseIdsByListIds(reus, noMatchingFilter, REPLACED_UUID_BY_FILTER_PLEASE_IGNORE);
//in = GetResponseRecordFilter.w3CDocumentToInputStream(doc);
}else{
logger.info("No replace on UUIDs was applied for the owner: "+owner);
logger.info("No replace on UUIDs was applied from filters: "+filters);
in = reus;
}
}
ReusableInputStream reusIs = new ReusableInputStream(in);
@ -484,11 +542,6 @@ public class GeonetworkResolver {
//.header(ConstantsResolver.CONTENT_DISPOSITION,"attachment; filename = \""+fileName+"\"")
.header(ConstantsResolver.CONTENT_TYPE, httpUtils.getLastContentType()).build();
//int bytes = IOUtils.copy(reusIs, out);
//logger.trace("POST - RETURN : "+IOUtils.toString(reusIs));
// if(bytes==0)
// logger.warn("ResponseBody is empty, returning empty resp");
}catch(Exception e){
logger.error("Error on copy the response to send to client: ", e);
ExceptionManager.throwInternalErrorException(req, "Error on copy the response!", GeonetworkResolver.class, help);
@ -518,31 +571,31 @@ public class GeonetworkResolver {
}
/**
* Purge remain from query string.
*
* @param remain_value the scope
* @param queryString the query string
* @return the string
*/
private static String purgeRemainFromQueryString(String remain_value, String queryString){
// SCOPE is: /gcube/devsec/devVRE
// [INFO ] 2016-04-05 15:01:42,808 org.gcube.datatransfer.resolver.gis.geonetwork.GeonetworkResolver -
// Query String is: scope=/gcube/devsec/devVRE&version=2.0.2&request=GetCapabilities&service=CSW
int start = queryString.indexOf(PATH_PARAM_REMAINPATH+"=");
if(start>=0){
int end = queryString.indexOf("&", start);
if(end==-1 && queryString.length()==(PATH_PARAM_REMAINPATH+"="+remain_value).length()){ //SCOPE IS THE UNIQUE PARAMETER INTO QUETY STRING
logger.debug("Scope is the unique parameter, returning empty query string");
return "";
}else if(end<queryString.length())
return queryString.substring(end+1, queryString.length());
}
return queryString;
}
// /**
// * Purge remain from query string.
// *
// * @param remain_value the scope
// * @param queryString the query string
// * @return the string
// */
// private static String purgeRemainFromQueryString(String remain_value, String queryString){
//// SCOPE is: /gcube/devsec/devVRE
//// [INFO ] 2016-04-05 15:01:42,808 org.gcube.datatransfer.resolver.gis.geonetwork.GeonetworkResolver -
//// Query String is: scope=/gcube/devsec/devVRE&version=2.0.2&request=GetCapabilities&service=CSW
// int start = queryString.indexOf(PATH_PARAM_REMAINPATH+"=");
//
// if(start>=0){
// int end = queryString.indexOf("&", start);
//
// if(end==-1 && queryString.length()==(PATH_PARAM_REMAINPATH+"="+remain_value).length()){ //SCOPE IS THE UNIQUE PARAMETER INTO QUETY STRING
// logger.debug("Scope is the unique parameter, returning empty query string");
// return "";
// }else if(end<queryString.length())
// return queryString.substring(end+1, queryString.length());
// }
//
// return queryString;
// }
/**
* Discovery geonetwork instance.
@ -558,31 +611,31 @@ public class GeonetworkResolver {
}
/**
* Purge scope from query string.
*
* @param scope_value the scope_value
* @param queryString the query string
* @return the string
*/
private static String purgeScopeFromQueryString(String scope_value, String queryString){
// SCOPE is: /gcube/devsec/devVRE
// [INFO ] 2016-04-05 15:01:42,808 org.gcube.datatransfer.resolver.gis.geonetwork.GeonetworkResolver -
// Query String is: scope=/gcube/devsec/devVRE&version=2.0.2&request=GetCapabilities&service=CSW
int start = queryString.indexOf(PATH_PARAM_SCOPE+"=");
if(start>=0){
int end = queryString.indexOf("&", start);
if(end==-1 && queryString.length()==(PATH_PARAM_SCOPE+"="+scope_value).length()){ //SCOPE IS THE UNIQUE PARAMETER INTO QUETY STRING
logger.debug("Scope is the unique parameter, returning empty query string");
return "";
}else if(end<queryString.length())
return queryString.substring(end+1, queryString.length());
}
return queryString;
}
// /**
// * Purge scope from query string.
// *
// * @param scope_value the scope_value
// * @param queryString the query string
// * @return the string
// */
// private static String purgeScopeFromQueryString(String scope_value, String queryString){
//// SCOPE is: /gcube/devsec/devVRE
//// [INFO ] 2016-04-05 15:01:42,808 org.gcube.datatransfer.resolver.gis.geonetwork.GeonetworkResolver -
//// Query String is: scope=/gcube/devsec/devVRE&version=2.0.2&request=GetCapabilities&service=CSW
// int start = queryString.indexOf(PATH_PARAM_SCOPE+"=");
//
// if(start>=0){
// int end = queryString.indexOf("&", start);
//
// if(end==-1 && queryString.length()==(PATH_PARAM_SCOPE+"="+scope_value).length()){ //SCOPE IS THE UNIQUE PARAMETER INTO QUETY STRING
// logger.debug("Scope is the unique parameter, returning empty query string");
// return "";
// }else if(end<queryString.length())
// return queryString.substring(end+1, queryString.length());
// }
//
// return queryString;
// }
/**
* Reset geonetowork instance cache for scope.

View File

@ -17,7 +17,6 @@ import java.util.Map;
import org.apache.commons.io.FilenameUtils;
import org.apache.http.HttpStatus;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -125,7 +124,7 @@ public class TestResolvers {
* Storage hub test.
* @throws Exception
*/
@Test
//@Test
public void catalogueResolverTest() throws Exception{
String entityName = "sarda-sarda";