diff --git a/pom.xml b/pom.xml index bd0fb1f..5426716 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ 4.0.0 org.gcube.data.access storagehub - 1.3.1 + 1.3.2-SNAPSHOT storagehub diff --git a/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java b/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java index 432db4e..685f724 100644 --- a/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/handlers/vres/VREManager.java @@ -8,6 +8,7 @@ import java.util.concurrent.Executors; import javax.inject.Inject; import javax.inject.Singleton; +import javax.jcr.ItemNotFoundException; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; @@ -101,14 +102,24 @@ public class VREManager { VRE vre = this.getVRE(groupName); if (vre!=null) return vre; else { - String query = String.format("SELECT * FROM [nthl:workspaceItem] As node WHERE node.[jcr:title] like '%s' AND ISDESCENDANTNODE('%s')",groupName, vrePath.toPath()); - Query jcrQuery = ses.getWorkspace().getQueryManager().createQuery(query, Constants.QUERY_LANGUAGE); - NodeIterator it = jcrQuery.execute().getNodes(); + + Node shareNode = ses.getNode(Constants.SHARED_FOLDER_PATH); + + NodeIterator it = shareNode.getNodes(); - if (!it.hasNext()) throw new BackendGenericError("vre folder not found for context "+groupName); + Node vreFolderNode = null; + + while (it.hasNext()) { + Node nextNode = it.nextNode(); + if (nextNode.hasProperty("jcr:title") && nextNode.getProperty("jcr:title").getString().equals(groupName)) { + vreFolderNode = nextNode; + break; + } + } + + if (vreFolderNode==null) throw new ItemNotFoundException("vre folder not found for context "+groupName); - Node folder = it.nextNode(); - Item vreFolder = node2Item.getItem(folder, excludes); + Item vreFolder = node2Item.getItem(vreFolderNode, excludes); return this.putVRE(vreFolder); } }