diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java index 76a66a2ab086215c4c6adf8e0c3ea604d1685258..08cd1d4d51aa854d5b1d2ee3ffd22058be38e978 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServiceProvider.java @@ -16,6 +16,8 @@ package ch.systemsx.cisd.openbis.generic.server; +import ch.systemsx.cisd.openbis.generic.shared.ISessionWorkspaceProvider; +import ch.systemsx.cisd.openbis.generic.shared.SessionWorkspaceProvider; import org.springframework.context.ApplicationContext; import ch.ethz.sis.openbis.generic.asapi.v3.plugin.service.IImportService; @@ -50,6 +52,10 @@ public class CommonServiceProvider .getBean(ResourceNames.COMMON_SERVER); } + public static ISessionWorkspaceProvider getSessionWorkspaceProvider() { + return (ISessionWorkspaceProvider) CommonServiceProvider.getApplicationContext().getBean(SessionWorkspaceProvider.INTERNAL_SERVICE_NAME); + } + public static IImportService getImportService() { return (IImportService) applicationContext.getBean(ResourceNames.IMPORT_SERVICE); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ISessionWorkspaceProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ISessionWorkspaceProvider.java index f56cb5851b5827ce9e9b9887e96c8a4bb0f13ccb..2ffa18f6ace124c77f8f779d14c42313fde47be7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ISessionWorkspaceProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/ISessionWorkspaceProvider.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.openbis.generic.shared; -import java.io.File; +import java.io.*; import java.util.Map; /** @@ -31,4 +31,10 @@ public interface ISessionWorkspaceProvider void deleteSessionWorkspace(String sessionToken); + void write(String sessionToken, String relativePathToFile, InputStream inputStream) throws IOException; + + InputStream read(String sessionToken, String relativePathToFile) throws IOException; + + void delete(String sessionToken, String relativePathToFile) throws IOException; + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/SessionWorkspaceProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/SessionWorkspaceProvider.java index b91828b094e38686e762c2e259d5d2faec9e7220..df835a991dcac37d1198d3b30b25caf5a9f91ac1 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/SessionWorkspaceProvider.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/SessionWorkspaceProvider.java @@ -16,8 +16,9 @@ package ch.systemsx.cisd.openbis.generic.shared; -import java.io.File; -import java.io.FileFilter; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; import java.util.Map; import java.util.Properties; import java.util.TreeMap; @@ -147,6 +148,27 @@ public class SessionWorkspaceProvider implements ISessionWorkspaceProvider } } + @Override + public void write(String sessionToken, String relativePathToFile, InputStream inputStream) throws IOException { + File sessionWorkspace = getSessionWorkspace(sessionToken); + File targetFile = new File(sessionWorkspace, relativePathToFile); + Files.copy(inputStream, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + + @Override + public InputStream read(String sessionToken, String relativePathToFile) throws IOException { + File sessionWorkspace = getSessionWorkspace(sessionToken); + File targetFile = new File(sessionWorkspace, relativePathToFile); + return Files.newInputStream(targetFile.toPath()); + } + + @Override + public void delete(String sessionToken, String relativePathToFile) throws IOException { + File sessionWorkspace = getSessionWorkspace(sessionToken); + File targetFile = new File(sessionWorkspace, relativePathToFile); + Files.delete(targetFile.toPath()); + } + @Resource(name = ExposablePropertyPlaceholderConfigurer.PROPERTY_CONFIGURER_BEAN_NAME) private void setServicePropertiesPlaceholder(ExposablePropertyPlaceholderConfigurer servicePropertiesPlaceholder) {