diff --git a/src/main/java/org/gcube/application/framework/core/util/GenericResource.java b/src/main/java/org/gcube/application/framework/core/util/GenericResource.java index fe0218b..a6ea22d 100644 --- a/src/main/java/org/gcube/application/framework/core/util/GenericResource.java +++ b/src/main/java/org/gcube/application/framework/core/util/GenericResource.java @@ -142,7 +142,10 @@ public class GenericResource implements GenericResourceInfoI { */ protected List getGenericResource(QueryString query) { - return (List) (CachesManager.getInstance().getGenericResourceCache().get(query).getValue()); + List resList = (List) (CachesManager.getInstance().getGenericResourceCache().get(query).getValue()); + if(resList.isEmpty()) + logger.debug("no generic resources in cache "+query.get("name")); + return resList; } /** @@ -344,7 +347,7 @@ public class GenericResource implements GenericResourceInfoI { // } /** - * @return a list containing pairs of (name, id) of the available generic resources + * @return a list containing all generic resources * @throws RemoteException when an error has occurred while communicating with IS */ public List getAllGenericResources() throws RemoteException { @@ -462,18 +465,21 @@ public class GenericResource implements GenericResourceInfoI { query.put(CacheEntryConstants.vre, getDLName()); return getGenericResource(query); } - + + /** * @param name the name of the generic resource * @return a list containing the generic resources that have as name the given * @throws RemoteException when an error has occurred while communicating with IS */ - public List getGenericResourceByName(String name) - throws RemoteException { - QueryString query = new QueryString(); - query.put(CacheEntryConstants.name, name); - query.put(CacheEntryConstants.vre, getDLName()); - return getGenericResource(query); + public List getGenericResourceByName(String name) throws RemoteException{ + //caching is done by (id,vre) as key pairs. so we cannot use cache to retrieve objects. + List allRes = getAllGenericResources(); + List results = new ArrayList(); + for(org.gcube.common.resources.gcore.GenericResource res : allRes) + if(res.profile().name().equalsIgnoreCase(name)) + results.add(new ISGenericResource(res.id(),res.profile().name(),res.profile().description(),res.profile().bodyAsString(),res.profile().type())); + return results; }