diff --git a/pom.xml b/pom.xml
index 581cc4e..997cec7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,7 +80,6 @@
ch.qos.logback
logback-classic
- 1.0.13
@@ -111,7 +110,6 @@
maven-compiler-plugin
- 2.3.2
1.8
diff --git a/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java b/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java
index 773baaf..2882614 100644
--- a/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java
+++ b/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java
@@ -1,5 +1,6 @@
package org.gcube.data.access.storagehub.fs;
+import java.awt.Container;
import java.nio.file.Paths;
import java.util.List;
@@ -54,23 +55,21 @@ public class PathUtils {
} else logger.trace("path "+path+" not in cache");
synchronized (this) {
- ItemContainer extends Item> retrievedItem = getPathRecursive(path, rootDirectory);
- if (retrievedItem!=null)cache.put(path, (ItemContainer- ) retrievedItem);
+ ItemContainer extends Item> retrievedItem = getByPath(path, rootDirectory);
+ if (retrievedItem!=null) {
+ cache.put(path, (ItemContainer
- ) retrievedItem);
+ logger.trace("retrieved container is of type {}",retrievedItem.getType());
+ }
+
return retrievedItem;
}
}
- public ItemContainer extends Item> getPathRecursive(String path, FolderContainer parentContainer) {
+ public ItemContainer extends Item> getByPath(String path, FolderContainer parentContainer) {
try {
- while (path.startsWith("/")) {
+ if (path.startsWith("/")) {
path = path.substring(1);
}
- if (!path.contains("/")) {
- logger.trace("seaching path "+path+" in "+parentContainer.get().getTitle());
- List> items = parentContainer.findByName(path).withContent().getContainers();
- logger.trace("found? "+(items.size()>0));
- return items.size()>0? items.get(0): null;
- }
if (path.startsWith(StorageHubFS.VREFOLDERS_NAME)) {
List> vreFolders = client.getVREFolders().getContainers();
String vreName = path.split("/")[1];
@@ -79,21 +78,13 @@ public class PathUtils {
if (veFolder.getDisplayName().equals(vreName)) {
String nextPath = path.replace(StorageHubFS.VREFOLDERS_NAME+"/"+veFolder.getDisplayName(), "");
if(nextPath.isEmpty()) return vreContainer;
- else return getPathRecursive(nextPath, (FolderContainer)vreContainer);
+ else return ((FolderContainer)vreContainer).openByRelativePath(nextPath).resolve();
}
}
- }
+ } else return parentContainer.openByRelativePath(path).resolve();
+
- String nextName = path.substring(0, path.indexOf("/"));
- String rest = path.substring(path.indexOf("/"));
-
- for (ItemContainer extends Item> container : parentContainer.findByName(nextName).withContent().getContainers()) {
- if (container instanceof FolderContainer) {
- logger.trace("seaching path "+rest+" in "+container.get().getTitle());
- return getPathRecursive(rest, (FolderContainer)container);
- }
- }
}catch(Exception e) {
logger.error("error in gpath recursive",e);
}
diff --git a/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java b/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java
index d80170b..9ed0f07 100644
--- a/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java
+++ b/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java
@@ -160,6 +160,7 @@ public class StorageHubFS extends FuseStubFS {
@Override
public synchronized int getattr(String path, FileStat stat) {
+
ScopeProvider.instance.set(scope);
SecurityTokenProvider.instance.set(token);
@@ -167,10 +168,10 @@ public class StorageHubFS extends FuseStubFS {
if (Objects.equals(path, "/") || path.contains("Trash") || path.equals("/"+VREFOLDERS_NAME)) {
stat.st_mode.set(FileStat.S_IFDIR | 0755);
stat.st_nlink.set(2);
- } else if(pathUtils.getLastComponent(path).startsWith(".")) {
+ }/* else if(pathUtils.getLastComponent(path).startsWith(".")) {
logger.trace("start with /.");
return super.getattr(path, stat);
- } else if (tempFiles.containsKey(path)){
+ } */else if (tempFiles.containsKey(path)){
return tempFiles.get(path).getAttr(stat);
}else {
logger.trace("trying items");
diff --git a/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java b/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java
index 2949804..a9a6136 100644
--- a/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java
+++ b/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java
@@ -11,7 +11,7 @@ public class FuseTest {
@Test
public void mount() {
- StorageHubFS memfs = new StorageHubFS("7c26a682-f47b-4e6e-90e0-6d101a4314cd-980114272","/pred4s/preprod/preVRE");
+ StorageHubFS memfs = new StorageHubFS("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548","/gcube");
try {
String path;
switch (Platform.getNativePlatform().getOS()) {
@@ -19,7 +19,7 @@ public class FuseTest {
path = "J:\\";
break;
default:
- path = "/home/lucio/javaMount/mnt";
+ path = "/home/lucio/java/mnt";
}
memfs.mount(Paths.get(path), true, true);
} finally {