diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/CandidateSnapshot.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/CandidateSnapshot.java index 29aa917011..4c3aef49f8 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/CandidateSnapshot.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/CandidateSnapshot.java @@ -5,13 +5,10 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import uk.ac.ic.wlgitbridge.data.filestore.RawFile; import uk.ac.ic.wlgitbridge.data.filestore.RawDirectory; -import uk.ac.ic.wlgitbridge.util.Log; import uk.ac.ic.wlgitbridge.util.Util; import java.io.File; import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -80,7 +77,7 @@ public class CandidateSnapshot implements AutoCloseable { ); for (ServletFile file : files) { if (file.isChanged()) { - file.writeToDisk(attsDirectory); + file.writeToDiskWithName(attsDirectory, file.getUniqueIdentifier()); } } } @@ -118,16 +115,8 @@ public class CandidateSnapshot implements AutoCloseable { JsonObject jsonFile = new JsonObject(); jsonFile.addProperty("name", file.getPath()); if (file.isChanged()) { - String path = file.getPath(); - String encodedPath; - try { - encodedPath = URLEncoder.encode(path, "UTF-8"); - } catch (UnsupportedEncodingException e) { - // This should never happen - Log.error("Error while encoding file path: projectUrl={}, path={}", projectURL, path, e); - encodedPath = path; - } - String url = projectURL + "/" + encodedPath + "?key=" + postbackKey; + String identifier = file.getUniqueIdentifier(); + String url = projectURL + "/" + identifier + "?key=" + postbackKey; jsonFile.addProperty("url", url); } return jsonFile; diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ServletFile.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ServletFile.java index ed3216ae4d..cabd761a98 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ServletFile.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/ServletFile.java @@ -1,6 +1,7 @@ package uk.ac.ic.wlgitbridge.data; import uk.ac.ic.wlgitbridge.data.filestore.RawFile; +import java.util.UUID; /** * Created by Winston on 21/02/15. @@ -9,12 +10,16 @@ public class ServletFile extends RawFile { private final RawFile file; private final boolean changed; + private String uuid; public ServletFile(RawFile file, RawFile oldFile) { this.file = file; + this.uuid = UUID.randomUUID().toString(); changed = !equals(oldFile); } + public String getUniqueIdentifier() { return uuid; } + @Override public String getPath() { return file.getPath(); @@ -38,5 +43,4 @@ public class ServletFile extends RawFile { public String toString() { return getPath(); } - } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/filestore/RawFile.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/filestore/RawFile.java index d799843c6a..8c74f4de20 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/filestore/RawFile.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/data/filestore/RawFile.java @@ -20,7 +20,11 @@ public abstract class RawFile { public abstract long size(); public final void writeToDisk(File directory) throws IOException { - File file = new File(directory, getPath()); + writeToDiskWithName(directory, getPath()); + } + + public final void writeToDiskWithName(File directory, String name) throws IOException { + File file = new File(directory, name); file.getParentFile().mkdirs(); file.createNewFile(); OutputStream out = new FileOutputStream(file);