diff --git a/.classpath b/.classpath index 5192f95..778528c 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -34,5 +34,5 @@ - + diff --git a/distro/changelog.xml b/distro/changelog.xml index 03eb1e7..1d8f401 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,8 @@ + + Updated to StorageHub [ticket #11725] + Support Java 8 compatibility [ticket #8541] diff --git a/pom.xml b/pom.xml index b242519..25af63a 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.widgets github-connector - 1.4.0-SNAPSHOT + 1.5.0-SNAPSHOT jar github-connector @@ -89,20 +89,10 @@ runtime - + org.gcube.common - home-library - runtime - - - org.gcube.common - home-library-jcr - runtime - - - org.gcube.common - home-library-model + storagehub-client-library runtime @@ -201,29 +191,14 @@ provided - - - - + org.gcube.common - home-library - provided - - - - org.gcube.common - home-library-jcr - provided - - - - org.gcube.common - home-library-model + storagehub-client-library provided + org.eclipse.mylyn.github diff --git a/src/main/java/org/gcube/portlets/widgets/githubconnector/server/git/GitConnectorService.java b/src/main/java/org/gcube/portlets/widgets/githubconnector/server/git/GitConnectorService.java index 3c8a4e1..9e51a82 100644 --- a/src/main/java/org/gcube/portlets/widgets/githubconnector/server/git/GitConnectorService.java +++ b/src/main/java/org/gcube/portlets/widgets/githubconnector/server/git/GitConnectorService.java @@ -167,7 +167,8 @@ public class GitConnectorService { + destinationFolderId + ", folderName=" + contents.getName() + ", folderDescription=" + contents.getName() + "]"); - String internalFolderId=StorageUtil.createFolderOnWorkspace(userName, destinationFolderId, + StorageUtil storageUtil=new StorageUtil(); + String internalFolderId=storageUtil.createFolderOnWorkspace(userName, destinationFolderId, contents.getName(), contents.getName()); createContent(internalFolderId, repository, contents.getPath()); @@ -198,7 +199,8 @@ public class GitConnectorService { .getBytes()); InputStream is = new ByteArrayInputStream(decodedBytes); - StorageUtil.saveOnWorkspace(userName, destinationFolderId, + StorageUtil storageUtil=new StorageUtil(); + storageUtil.saveOnWorkspace(userName, destinationFolderId, contents.getName(), contents.getName(), is); // logger.debug(new String(decodedBytes)); } diff --git a/src/main/java/org/gcube/portlets/widgets/githubconnector/server/storage/StorageUtil.java b/src/main/java/org/gcube/portlets/widgets/githubconnector/server/storage/StorageUtil.java index c25b478..9596c41 100644 --- a/src/main/java/org/gcube/portlets/widgets/githubconnector/server/storage/StorageUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/githubconnector/server/storage/StorageUtil.java @@ -3,18 +3,14 @@ package org.gcube.portlets.widgets.githubconnector.server.storage; import java.io.InputStream; import org.apache.log4j.Logger; -import org.gcube.common.homelibrary.home.HomeLibrary; -import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException; -import org.gcube.common.homelibrary.home.exceptions.InternalErrorException; -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.homelibrary.home.workspace.exceptions.InsufficientPrivilegesException; -import org.gcube.common.homelibrary.home.workspace.exceptions.ItemAlreadyExistException; -import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException; -import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException; -import org.gcube.common.homelibrary.home.workspace.exceptions.WrongDestinationException; -import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalFile; +import org.gcube.common.storagehub.client.dsl.FileContainer; +import org.gcube.common.storagehub.client.dsl.FolderContainer; +import org.gcube.common.storagehub.client.dsl.ItemContainer; +import org.gcube.common.storagehub.client.dsl.OpenResolver; +import org.gcube.common.storagehub.client.dsl.StorageHubClient; +import org.gcube.common.storagehub.model.items.AbstractFileItem; +import org.gcube.common.storagehub.model.items.FolderItem; +import org.gcube.common.storagehub.model.items.Item; import org.gcube.portlets.widgets.githubconnector.shared.exception.ServiceException; /** @@ -36,22 +32,21 @@ public class StorageUtil { * @throws ServiceException * service exception */ - public static void deleteItem(String user, String itemId) throws ServiceException { - Workspace ws; + public void deleteItem(String user, String itemId) throws ServiceException { try { - logger.debug("User: " + user + ", ItemId:" + itemId); - ws = HomeLibrary.getUserWorkspace(user); + logger.info("Delete Item: [User=" + user + ", ItemId=" + itemId + "]"); + StorageHubClient shc = new StorageHubClient(); + OpenResolver openResolver = shc.open(itemId); - ws.removeItems(itemId); + ItemContainer itemContainer = openResolver.asItem(); + itemContainer.delete(); return; - } catch (InsufficientPrivilegesException | WorkspaceFolderNotFoundException | InternalErrorException - | HomeNotFoundException | ItemNotFoundException e) { - e.printStackTrace(); + } catch (Throwable e) { + logger.error("Delete Item on workspace: " + e.getLocalizedMessage(), e); throw new ServiceException(e.getLocalizedMessage(), e); } - } /** @@ -68,65 +63,65 @@ public class StorageUtil { * @throws ServiceException * service exception */ - public static String createFolderOnWorkspace(String user, String destinationFolderId, String folderName, + public String createFolderOnWorkspace(String user, String destinationFolderId, String folderName, String folderDescription) throws ServiceException { try { - logger.debug("CreateFolderOnWorkspace: [User=" + user + ", FolderId:" + destinationFolderId - + ", folderName=" + folderName + ", folderDescription=" + folderDescription + "]"); - Workspace ws = HomeLibrary.getUserWorkspace(user); - WorkspaceFolder workspaceFolder = ws.createFolder(folderName, folderDescription, destinationFolderId); - return workspaceFolder.getId(); + logger.info("CreateFolderOnWorkspace: [User=" + user + ", FolderId:" + destinationFolderId + ", folderName=" + + folderName + ", folderDescription=" + folderDescription + "]"); - } catch (WorkspaceFolderNotFoundException | InternalErrorException | HomeNotFoundException - | InsufficientPrivilegesException | ItemAlreadyExistException | WrongDestinationException - | ItemNotFoundException e) { - logger.error("CreateFolderOnWorkspace: " + e.getLocalizedMessage()); - e.printStackTrace(); + StorageHubClient shc = new StorageHubClient(); + OpenResolver openResolver = shc.open(destinationFolderId); + + FolderContainer parentFolderContainer = openResolver.asFolder(); + FolderContainer folderContainer = parentFolderContainer.newFolder(folderName, folderDescription); + FolderItem folderItem = folderContainer.get(); + + logger.debug("Folder created: " + folderItem.getId()); + return folderItem.getId(); + } catch (Throwable e) { + logger.error("Error in create folder on workspace: " + e.getLocalizedMessage(), e); throw new ServiceException(e.getLocalizedMessage(), e); } + } /** * * @param user * user - * @param destinationFolderId + * @param folderId * destination folder id - * @param fileName + * @param name * file name - * @param fileDescription + * @param description * file description - * @param is + * @param inputStream * input stream * @return file id * @throws ServiceException * service exception */ - public static String saveOnWorkspace(String user, String destinationFolderId, String fileName, - String fileDescription, InputStream is) throws ServiceException { + public String saveOnWorkspace(String user, String folderId, String name, String description, + InputStream inputStream) throws ServiceException { try { - logger.debug("saveOnWorkspace: [User=" + user + ", FolderId:" + destinationFolderId + ", fileName=" - + fileName + ", fileDescription=" + fileDescription + "]"); - Workspace ws = HomeLibrary.getUserWorkspace(user); + logger.info("Save item on workspace: [user=" + user + ", name=" + name + ", description=" + description + + ", folderId=" + folderId + "]"); + StorageHubClient shc = new StorageHubClient(); + OpenResolver openResolver = shc.open(folderId); - WorkspaceItem workspaceItem = ws.getItem(destinationFolderId); - if (workspaceItem.isFolder()) { - ExternalFile externalfile = ws.createExternalFile(fileName, fileDescription, null, is, - destinationFolderId); - return externalfile.getId(); - } else { - throw new ServiceException("Invalid destination folder!"); - } + FolderContainer folderContainer = openResolver.asFolder(); + FileContainer fileContainer = folderContainer.uploadFile(inputStream, name, description); + AbstractFileItem abstractFileItem = fileContainer.get(); - } catch (WorkspaceFolderNotFoundException | InternalErrorException | HomeNotFoundException - | InsufficientPrivilegesException | ItemAlreadyExistException | WrongDestinationException - | ItemNotFoundException e) { - logger.error("SaveOnWorkspace: " + e.getLocalizedMessage()); - e.printStackTrace(); + logger.debug("File saved id: " + abstractFileItem.getId()); + return abstractFileItem.getId(); + } catch (Throwable e) { + logger.error("Save item on workspace: " + e.getLocalizedMessage(), e); throw new ServiceException(e.getLocalizedMessage(), e); } + } }