diff --git a/deploy/aws/java11Exec/src/main/java/poseidon/App.java b/deploy/aws/java11Exec/src/main/java/poseidon/App.java index e916167..71f4a64 100644 --- a/deploy/aws/java11Exec/src/main/java/poseidon/App.java +++ b/deploy/aws/java11Exec/src/main/java/poseidon/App.java @@ -78,7 +78,7 @@ public class App implements RequestHandler files) throws IOException { File workspace = Files.createTempDirectory("workspace").toFile(); for (Map.Entry entry : files.entrySet()) { - File f = new File(workspace, entry.getKey()); + try { + File f = new File(entry.getKey()); - f.getParentFile().mkdirs(); - if (!f.getParentFile().exists()) { - throw new IOException("Cannot create parent directories."); + if (!f.isAbsolute()) { + f = new File(workspace, entry.getKey()); + } + + f.getParentFile().mkdirs(); + if (!f.getParentFile().exists()) { + throw new IOException("Cannot create parent directories."); + } + + f.createNewFile(); + if (!f.exists()) { + throw new IOException("Cannot create file."); + } + + Files.write(f.toPath(), Base64.getDecoder().decode(entry.getValue())); + } catch (IOException e) { + this.sendMessage(WebSocketMessageType.WebSocketOutputError, e.toString(), null); } - - f.createNewFile(); - if (!f.exists()) { - throw new IOException("Cannot create file."); - } - - Files.write(f.toPath(), Base64.getDecoder().decode(entry.getValue())); } return workspace; }