diff --git a/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java b/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java index ef086c2..8d82442 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/ItemsManager.java @@ -149,12 +149,22 @@ public class ItemsManager { try{ ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); authChecker.checkReadAuthorizationControl(ses, id); + + //NOT using the internal pattern matching of jcr because of title for shared folder NodeIterator it = ses.getNodeByIdentifier(id).getNodes(); while (it.hasNext()) { Node child= it.nextNode(); - Item item = node2Item.getItem(child, excludes); - if (item.getName().equalsIgnoreCase(name) || item.getTitle().equalsIgnoreCase(name)) - toReturn.add(item); + String nodeName = child.getName(); + if (!child.hasProperty(NodeProperty.TITLE.toString())) continue; + String title = child.getProperty(NodeProperty.TITLE.toString()).getString(); + + String cleanedName = name; + if (name.startsWith("*")) cleanedName = name.substring(1); + if (name.endsWith("*")) cleanedName = name.substring(0, name.length()-1); + + if ((name.startsWith("*") && (nodeName.endsWith(cleanedName) || title.endsWith(cleanedName))) || (name.endsWith("*") && (nodeName.startsWith(cleanedName) || title.startsWith(cleanedName))) + || (nodeName.equals(cleanedName) || title.equals(cleanedName))) + toReturn.add(node2Item.getItem(child, excludes)); } }catch(RepositoryException re){