--- /dev/null
+package org.argeo.slc.core.execution;
+
+import java.io.File;
+
+import org.argeo.slc.execution.ExecutionContext;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+
+public class FileExecutionResources implements ExecutionResources {
+ private File baseDir;
+ private ExecutionContext executionContext;
+
+ public FileExecutionResources() {
+ String osgiInstanceArea = System.getProperty("osgi.instance.area");
+ if (osgiInstanceArea != null) {
+ if (osgiInstanceArea.startsWith("file:"))
+ osgiInstanceArea = osgiInstanceArea.substring("file:".length());
+ baseDir = new File(osgiInstanceArea + File.separator
+ + "executionResources");
+ }
+
+ if (baseDir == null) {
+ String tempDir = System.getProperty("java.io.tmpdir");
+ baseDir = new File(tempDir + File.separator
+ + "slcExecutionResources");
+ }
+ }
+
+ public Resource getWritableResource(String relativePath) {
+ File file = getFile(relativePath);
+ file.getParentFile().mkdirs();
+ return new FileSystemResource(file);
+ }
+
+ public File getFile(String relativePath) {
+ File executionDir = new File(baseDir.getPath() + File.separator
+ + executionContext.getUuid());
+ if (!executionDir.exists())
+ executionDir.mkdirs();
+ return new File(executionDir.getPath() + File.separator + relativePath);
+ }
+
+ public void setBaseDir(File baseDir) {
+ this.baseDir = baseDir;
+ }
+
+ public void setExecutionContext(ExecutionContext executionContext) {
+ this.executionContext = executionContext;
+ }
+
+}