diff --git a/.gitignore b/.gitignore
index 2061c9e..73df60d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
target
.classpath
.project
+.settings
diff --git a/pom.xml b/pom.xml
index 5175b95..94dc263 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,6 +57,18 @@
org.gcube.common
gxHTTP
+
+
+ org.gcube.common
+ home-library-jcr
+ [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)
+
+
+ org.gcube.common
+ home-library
+ [2.0.0-SNAPSHOT,3.0.0-SNAPSHOT)
+
+
junit
diff --git a/src/main/java/org/gcube/storagehub/StorageHubManagement.java b/src/main/java/org/gcube/storagehub/StorageHubManagement.java
index ad9c5a2..4acfa5b 100644
--- a/src/main/java/org/gcube/storagehub/StorageHubManagement.java
+++ b/src/main/java/org/gcube/storagehub/StorageHubManagement.java
@@ -5,6 +5,14 @@ import java.io.StringWriter;
import java.net.URL;
import java.util.List;
+import org.gcube.common.homelibrary.home.Home;
+import org.gcube.common.homelibrary.home.HomeLibrary;
+import org.gcube.common.homelibrary.home.HomeManager;
+import org.gcube.common.homelibrary.home.HomeManagerFactory;
+import org.gcube.common.homelibrary.home.User;
+import org.gcube.common.homelibrary.home.workspace.Workspace;
+import org.gcube.common.homelibrary.home.workspace.WorkspaceSharedFolder;
+import org.gcube.common.homelibrary.home.workspace.usermanager.UserManager;
import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.common.scope.impl.ScopeBean.Type;
import org.gcube.common.storagehub.client.dsl.ContainerType;
@@ -13,6 +21,7 @@ import org.gcube.common.storagehub.client.dsl.FolderContainer;
import org.gcube.common.storagehub.client.dsl.ItemContainer;
import org.gcube.common.storagehub.client.dsl.ListResolver;
import org.gcube.common.storagehub.client.dsl.ListResolverTyped;
+import org.gcube.common.storagehub.client.dsl.OpenResolver;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
@@ -79,7 +88,25 @@ public class StorageHubManagement {
}
protected FolderContainer getWorkspaceRoot() {
- return storageHubClient.getWSRoot();
+ try {
+ return storageHubClient.getWSRoot();
+ } catch(Exception e) {
+ String username = ContextUtility.getUsername();
+ logger.info("Unable to obtain the Workspace Root for {}. Going to create it.", username);
+ try {
+ HomeManagerFactory factory = HomeLibrary.getHomeManagerFactory();
+ HomeManager manager = factory.getHomeManager();
+ User user = manager.createUser(username);
+ @SuppressWarnings("deprecation")
+ Home home = manager.getHome(user);
+ Workspace ws = home.getWorkspace();
+ ws.getRoot();
+ return storageHubClient.getWSRoot();
+ } catch(Exception ex) {
+ logger.info("Unable to create the Workspace Root for {}.", username);
+ throw e;
+ }
+ }
}
protected FolderContainer getOrCreateFolder(FolderContainer parent, String name, String description, boolean hidden)
@@ -116,7 +143,28 @@ public class StorageHubManagement {
break;
case VRE:
- destinationFolder = storageHubClient.openVREFolder();
+ String username = ContextUtility.getUsername();
+ try {
+ destinationFolder = storageHubClient.openVREFolder();
+ }catch (Exception e) {
+ try {
+
+ HomeManagerFactory factory = HomeLibrary.getHomeManagerFactory();
+ UserManager userManager = factory.getUserManager();
+ userManager.associateUserToGroup(currentContext, username);
+ HomeManager manager = factory.getHomeManager();
+ @SuppressWarnings("deprecation")
+ Home home = manager.getHome(username);
+ Workspace ws = home.getWorkspace();
+ WorkspaceSharedFolder vreFolder= ws.getVREFolderByScope(currentContext);
+ String id = vreFolder.getId();
+ // destinationFolder = storageHubClient.openVREFolder();
+ OpenResolver openResolver = storageHubClient.open(id);
+ destinationFolder = openResolver.asFolder();
+ }catch (Exception ex) {
+ throw e;
+ }
+ }
break;
default:
diff --git a/src/test/java/org/gcube/storagehub/ContextTest.java b/src/test/java/org/gcube/storagehub/ContextTest.java
index da297c9..5f04807 100644
--- a/src/test/java/org/gcube/storagehub/ContextTest.java
+++ b/src/test/java/org/gcube/storagehub/ContextTest.java
@@ -28,84 +28,39 @@ public class ContextTest {
private static final Logger logger = LoggerFactory.getLogger(ContextTest.class);
- protected static final String PROPERTIES_FILENAME = "token.properties";
+ protected static Properties properties;
+ protected static final String PROPERTIES_FILENAME = "token.properties";
- private static final String GCUBE_VARNAME = "GCUBE";
- public static final String GCUBE;
-
- private static final String GCUBE_DEVNEXT_VARNAME = "GCUBE_DEVNEXT";
- public static final String GCUBE_DEVNEXT;
-
- private static final String GCUBE_DEVNEXT_NEXTNEXT_VARNAME = "GCUBE_DEVNEXT_NEXTNEXT";
- public static final String GCUBE_DEVNEXT_NEXTNEXT;
-
- public static final String GCUBE_DEVSEC_VARNAME = "GCUBE_DEVSEC";
- public static final String GCUBE_DEVSEC;
-
- public static final String GCUBE_DEVSEC_DEVVRE_VARNAME = "GCUBE_DEVSEC_DEVVRE";
- public static final String GCUBE_DEVSEC_DEVVRE;
-
-
- private static final String GCUBE_DEVNEXT_ANOTHER_USER_VARNAME = "GCUBE_DEVNEXT_ANOTHER_USER";
- public static final String GCUBE_DEVNEXT_ANOTHER_USER;
-
- public static final String DEFAULT_TEST_SCOPE;
-
- public static final String GCUBE_PRE_PROD_PREVRE_VARNAME = "GCUBE_PRE_PROD_PREVRE";
- public static final String GCUBE_PRE_PROD_PREVRE;
-
- public static final String GCUBE_PRE_PROD_PARTHENOS_REGISTRY_VARNAME = "GCUBE_PRE_PROD_PARTHENOS_REGISTRY";
- public static final String GCUBE_PRE_PROD_PARTHENOS_REGISTRY;
-
-
- public static final String GCUBE_PRE_PROD_PREVRE_APP_TOKEN_VARNAME = "GCUBE_PRE_PROD_PREVRE_APP_TOKEN";
- public static final String GCUBE_PRE_PROD_PREVRE_APP_TOKEN;
-
- public static final String ROOT_VARNAME = "ROOT";
- public static final String ROOT;
+ public static final String DEFAULT_TEST_SCOPE_NAME;
static {
- Properties properties = new Properties();
+ properties = new Properties();
InputStream input = ContextTest.class.getClassLoader().getResourceAsStream(PROPERTIES_FILENAME);
-
+
try {
// load the properties file
properties.load(input);
- } catch (IOException e) {
+ } catch(IOException e) {
throw new RuntimeException(e);
}
- GCUBE = properties.getProperty(GCUBE_VARNAME);
-
- GCUBE_DEVNEXT = properties.getProperty(GCUBE_DEVNEXT_VARNAME);
- GCUBE_DEVNEXT_NEXTNEXT = properties.getProperty(GCUBE_DEVNEXT_NEXTNEXT_VARNAME);
-
- GCUBE_DEVSEC = properties.getProperty(GCUBE_DEVSEC_VARNAME);
- GCUBE_DEVSEC_DEVVRE = properties.getProperty(GCUBE_DEVSEC_DEVVRE_VARNAME);
-
- GCUBE_DEVNEXT_ANOTHER_USER = properties.getProperty(GCUBE_DEVNEXT_ANOTHER_USER_VARNAME);
-
- GCUBE_PRE_PROD_PARTHENOS_REGISTRY = properties.getProperty(GCUBE_PRE_PROD_PARTHENOS_REGISTRY_VARNAME);
- GCUBE_PRE_PROD_PREVRE = properties.getProperty(GCUBE_PRE_PROD_PREVRE_VARNAME);
-
- GCUBE_PRE_PROD_PREVRE_APP_TOKEN = properties.getProperty(GCUBE_PRE_PROD_PREVRE_APP_TOKEN_VARNAME);
-
-
- ROOT = properties.getProperty(ROOT_VARNAME);
-
- DEFAULT_TEST_SCOPE = GCUBE_PRE_PROD_PREVRE;
-
+ DEFAULT_TEST_SCOPE_NAME = "/pred4s/preprod/preVRE";
+ //DEFAULT_TEST_SCOPE_NAME = "/gcube/devNext/NextNext";
}
- public static String getCurrentScope(String token) throws ObjectNotFound, Exception{
+ public static String getCurrentScope(String token) throws ObjectNotFound, Exception {
AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token);
String context = authorizationEntry.getContext();
logger.info("Context of token {} is {}", token, context);
return context;
}
+ public static void setContextByName(String fullContextName) throws ObjectNotFound, Exception {
+ String token = ContextTest.properties.getProperty(fullContextName);
+ setContext(token);
+ }
- public static void setContext(String token) throws ObjectNotFound, Exception{
+ public static void setContext(String token) throws ObjectNotFound, Exception {
SecurityTokenProvider.instance.set(token);
AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token);
ClientInfo clientInfo = authorizationEntry.getClientInfo();
@@ -117,12 +72,12 @@ public class ContextTest {
}
@BeforeClass
- public static void beforeClass() throws Exception{
- setContext(DEFAULT_TEST_SCOPE);
+ public static void beforeClass() throws Exception {
+ setContextByName(DEFAULT_TEST_SCOPE_NAME);
}
@AfterClass
- public static void afterClass() throws Exception{
+ public static void afterClass() throws Exception {
SecurityTokenProvider.instance.reset();
ScopeProvider.instance.reset();
}
diff --git a/src/test/java/org/gcube/storagehub/StorageHubManagementTest.java b/src/test/java/org/gcube/storagehub/StorageHubManagementTest.java
index 38acbdd..dc14ca2 100644
--- a/src/test/java/org/gcube/storagehub/StorageHubManagementTest.java
+++ b/src/test/java/org/gcube/storagehub/StorageHubManagementTest.java
@@ -3,11 +3,20 @@ package org.gcube.storagehub;
import java.util.List;
import java.util.Map;
+import org.gcube.common.homelibrary.home.Home;
+import org.gcube.common.homelibrary.home.HomeLibrary;
+import org.gcube.common.homelibrary.home.HomeManager;
+import org.gcube.common.homelibrary.home.HomeManagerFactory;
+import org.gcube.common.homelibrary.home.User;
+import org.gcube.common.homelibrary.home.workspace.Workspace;
+import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
+import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.storagehub.client.dsl.FileContainer;
import org.gcube.common.storagehub.client.dsl.FolderContainer;
import org.gcube.common.storagehub.client.dsl.OpenResolver;
import org.gcube.common.storagehub.model.Metadata;
import org.gcube.common.storagehub.model.service.Version;
+import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -16,17 +25,37 @@ public class StorageHubManagementTest extends ContextTest {
private static final Logger logger = LoggerFactory.getLogger(StorageHubManagementTest.class);
//@Test
+ public void testHL() throws Exception {
+ ApplicationMode applicationMode = new ApplicationMode(ContextTest.properties.getProperty(DEFAULT_TEST_SCOPE_NAME));
+ applicationMode.start();
+ String username = ContextUtility.getUsername();
+ HomeManagerFactory factory = HomeLibrary.getHomeManagerFactory();
+ HomeManager manager = factory.getHomeManager();
+ User user = manager.createUser(username);
+ @SuppressWarnings("deprecation")
+ Home home = manager.getHome(user);
+ Workspace ws = home.getWorkspace();
+ WorkspaceFolder workspaceFolder = ws.getRoot();
+ workspaceFolder = ws.getVREFolderByScope(ContextUtility.getCurrentContext());
+ // logger.debug("VRE Folder ID : {} - Owner: {}", workspaceFolder.getId(), workspaceFolder.getOwner().getPortalLogin());
+ List workspaceItems = workspaceFolder.getChildren(true);
+ for(WorkspaceItem workspaceItem : workspaceItems) {
+ logger.debug("{} {}{} ID:{}", workspaceFolder.getType(), workspaceItem.getName(), workspaceItem.isHidden()? " (hidden)":"", workspaceItem.getId());
+ }
+ }
+
+ @Test
public void myTest() throws Exception {
- ApplicationMode applicationMode = new ApplicationMode(ContextTest.GCUBE_PRE_PROD_PREVRE_APP_TOKEN);
+ ApplicationMode applicationMode = new ApplicationMode(ContextTest.properties.getProperty(DEFAULT_TEST_SCOPE_NAME));
applicationMode.start();
StorageHubManagement storageHubManagement = new StorageHubManagement();
FolderContainer contextFolder = storageHubManagement.getContextFolder();
logger.debug("Context Folder ID : {} - Name : {}", contextFolder.getId(), contextFolder.get().getName());
}
- //@Test
+ @Test
public void test() throws Exception {
- ApplicationMode applicationMode = new ApplicationMode(ContextTest.GCUBE_PRE_PROD_PREVRE_APP_TOKEN);
+ ApplicationMode applicationMode = new ApplicationMode(ContextTest.properties.getProperty(DEFAULT_TEST_SCOPE_NAME));
applicationMode.start();
StorageHubManagement storageHubManagement = new StorageHubManagement();
OpenResolver openResolver = storageHubManagement.storageHubClient.open("71394bdc-296f-46d4-ab7b-ecc9abc36bdd");
@@ -42,7 +71,7 @@ public class StorageHubManagementTest extends ContextTest {
//@Test
public void listFolders() throws Exception {
- ApplicationMode applicationMode = new ApplicationMode(ContextTest.GCUBE_PRE_PROD_PREVRE_APP_TOKEN);
+ ApplicationMode applicationMode = new ApplicationMode(ContextTest.properties.getProperty(DEFAULT_TEST_SCOPE_NAME));
applicationMode.start();
StorageHubManagement storageHubManagement = new StorageHubManagement();
FolderContainer root = storageHubManagement.getWorkspaceRoot();
@@ -57,7 +86,7 @@ public class StorageHubManagementTest extends ContextTest {
//@Test
public void getFileInfo() throws Exception {
- ApplicationMode applicationMode = new ApplicationMode(ContextTest.GCUBE_PRE_PROD_PREVRE_APP_TOKEN);
+ ApplicationMode applicationMode = new ApplicationMode(ContextTest.properties.getProperty(DEFAULT_TEST_SCOPE_NAME));
applicationMode.start();
StorageHubManagement storageHubManagement = new StorageHubManagement();
String id = "71394bdc-296f-46d4-ab7b-ecc9abc36bdd";