You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2018/05/08 13:48:10 UTC
incubator-taverna-language git commit: TAVERNA-1043: Path never ends
"/" (except root)
Repository: incubator-taverna-language
Updated Branches:
refs/heads/master 89407f060 -> 71b91b216
TAVERNA-1043: Path never ends "/" (except root)
.. for JDK8 and JDK9 compatibility
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/71b91b21
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/71b91b21
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/71b91b21
Branch: refs/heads/master
Commit: 71b91b2165c10e27ce66442ea20aff2ec387466f
Parents: 89407f0
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Thu Apr 26 09:30:43 2018 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Tue May 8 14:39:18 2018 +0100
----------------------------------------------------------------------
.../taverna/databundle/TestDataBundles.java | 2 +-
.../taverna/robundle/fs/BundleFileSystem.java | 16 +++++++-
.../apache/taverna/robundle/fs/BundlePath.java | 10 ++++-
.../taverna/robundle/manifest/Manifest.java | 42 +++++++-------------
.../apache/taverna/robundle/manifest/Proxy.java | 14 ++++++-
.../taverna/robundle/manifest/TestManifest.java | 28 ++++++-------
6 files changed, 65 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/71b91b21/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java
----------------------------------------------------------------------
diff --git a/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java b/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java
index 0a67b95..f378bee 100644
--- a/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java
+++ b/taverna-databundle/src/test/java/org/apache/taverna/databundle/TestDataBundles.java
@@ -436,7 +436,7 @@ public class TestDataBundles {
Path sublist1 = DataBundles.newListItem(list);
DataBundles.createList(sublist1);
- assertEquals(Arrays.asList("0/", "1/"), ls(list));
+ assertEquals(Arrays.asList("0", "1"), ls(list));
DataBundles.setStringValue(DataBundles.newListItem(sublist1),
"Hello");
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/71b91b21/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundleFileSystem.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundleFileSystem.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundleFileSystem.java
index 363b8cf..9d2cbae 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundleFileSystem.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundleFileSystem.java
@@ -189,6 +189,19 @@ public class BundleFileSystem extends FileSystem {
}
return ((BundlePath) bundlePath).getZipPath();
}
+
+ protected static Path withoutSlash(Path dir) {
+ if (dir == null) {
+ return null;
+ }
+ Path fname = dir.getFileName();
+ if (fname == null) // Root directory?
+ return dir;
+ String fnameStr = fname.toString();
+ if (! fnameStr.endsWith("/") && ! fnameStr.equals("/"))
+ return dir;
+ return dir.resolveSibling(fnameStr.replace("/", ""));
+ }
protected BundlePath wrap(Path zipPath) {
if (zipPath == null) {
@@ -198,7 +211,8 @@ public class BundleFileSystem extends FileSystem {
throw new IllegalArgumentException("Did not expect BundlePath: "
+ zipPath);
}
- return new BundlePath(this, zipPath);
+
+ return new BundlePath(this, withoutSlash(zipPath));
}
protected Iterator<Path> wrapIterator(final Iterator<Path> iterator) {
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/71b91b21/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundlePath.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundlePath.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundlePath.java
index 93da6c0..a908f67 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundlePath.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/fs/BundlePath.java
@@ -24,6 +24,7 @@ import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.WatchEvent.Kind;
@@ -41,7 +42,7 @@ public class BundlePath implements Path {
protected BundlePath(BundleFileSystem fs, Path zipPath) {
if (fs == null || zipPath == null) {
throw new NullPointerException();
- }
+ }
this.fs = fs;
this.zipPath = zipPath;
}
@@ -208,9 +209,14 @@ public class BundlePath implements Path {
@Override
public URI toUri() {
Path abs = zipPath.toAbsolutePath();
+ String absStr = abs.toString();
+ if (Files.isDirectory(abs) && ! absStr.endsWith("/")) {
+ absStr += "/";
+ }
+
URI pathRel;
try {
- pathRel = new URI(null, null, abs.toString(), null);
+ pathRel = new URI(null, null, absStr, null);
} catch (URISyntaxException e) {
throw new IllegalStateException("Can't create URL for " + zipPath,
e);
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/71b91b21/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java
index ba23bf1..ad073a9 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Manifest.java
@@ -99,20 +99,6 @@ public class Manifest {
return fromMillis(new GregorianCalendar().getTimeInMillis());
}
- protected static Path withSlash(Path dir) {
- if (dir == null)
- return null;
- if (isDirectory(dir)) {
- Path fname = dir.getFileName();
- if (fname == null)
- return dir;
- String fnameStr = fname.toString();
- if (fnameStr.endsWith("/"))
- return dir;
- return dir.resolveSibling(fnameStr + "/");
- }
- return dir;
- }
private Map<URI, PathMetadata> aggregates = new LinkedHashMap<>();
private List<PathAnnotation> annotations = new ArrayList<>();
@@ -288,11 +274,11 @@ public class Manifest {
metadata = new PathMetadata();
aggregates.put(uri, metadata);
}
- metadata.setFile(withSlash(dir));
- metadata.setFolder(withSlash(dir.getParent()));
+ metadata.setFile(dir);
+ metadata.setFolder(dir.getParent());
metadata.setProxy();
metadata.setCreatedOn(getLastModifiedTime(dir));
- potentiallyEmptyFolders.remove(withSlash(dir.getParent()));
+ potentiallyEmptyFolders.remove(dir.getParent());
return CONTINUE;
}
return CONTINUE;
@@ -303,8 +289,8 @@ public class Manifest {
BasicFileAttributes attrs) throws IOException {
if (dir.startsWith(RO) || dir.startsWith(META_INF))
return SKIP_SUBTREE;
- potentiallyEmptyFolders.add(withSlash(dir));
- potentiallyEmptyFolders.remove(withSlash(dir.getParent()));
+ potentiallyEmptyFolders.add(dir);
+ potentiallyEmptyFolders.remove(dir.getParent());
return CONTINUE;
}
@@ -312,7 +298,7 @@ public class Manifest {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
- potentiallyEmptyFolders.remove(withSlash(file.getParent()));
+ potentiallyEmptyFolders.remove(file.getParent());
if (file.startsWith(MIMETYPE))
return CONTINUE;
if (manifest.contains(file))
@@ -331,7 +317,7 @@ public class Manifest {
if (metadata.getMediatype() == null)
// Don't override if already set
metadata.setMediatype(guessMediaType(file));
- metadata.setFolder(withSlash(file.getParent()));
+ metadata.setFolder(file.getParent());
metadata.setProxy();
metadata.setCreatedOn(getLastModifiedTime(file));
potentiallyEmptyFolders.remove(file.getParent());
@@ -447,13 +433,13 @@ public class Manifest {
// Files.createFile(jsonld);
if (!getManifest().contains(jsonld))
getManifest().add(0, jsonld);
- ObjectMapper om = new ObjectMapper();
- om.addMixInAnnotations(Path.class, PathMixin.class);
- om.addMixInAnnotations(FileTime.class, FileTimeMixin.class);
- om.enable(INDENT_OUTPUT);
- om.disable(WRITE_EMPTY_JSON_ARRAYS);
- om.disable(FAIL_ON_EMPTY_BEANS);
- om.disable(WRITE_NULL_MAP_VALUES);
+ ObjectMapper om = new ObjectMapper()
+ .addMixIn(Path.class, PathMixin.class)
+ .addMixIn(FileTime.class, FileTimeMixin.class)
+ .enable(INDENT_OUTPUT)
+ .disable(WRITE_EMPTY_JSON_ARRAYS)
+ .disable(FAIL_ON_EMPTY_BEANS)
+ .disable(WRITE_NULL_MAP_VALUES);
om.setSerializationInclusion(Include.NON_NULL);
try (Writer w = newBufferedWriter(jsonld, Charset.forName("UTF-8"),
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/71b91b21/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
index b303bc8..2749e97 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/Proxy.java
@@ -25,6 +25,8 @@ import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.util.UUID;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonPropertyOrder(value = { "uri", "folder", "filename", "aggregatedBy",
@@ -49,10 +51,20 @@ public class Proxy {
return filename;
}
+ @JsonIgnore
public Path getFolder() {
return folder;
}
-
+
+ @JsonProperty("folder")
+ public String getFolderName() {
+ String folderName = getFolder().toString();
+ if (! folderName.endsWith("/")) {
+ return folderName + "/";
+ }
+ return folderName;
+ }
+
public URI getURI() {
return uri;
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/71b91b21/taverna-robundle/src/test/java/org/apache/taverna/robundle/manifest/TestManifest.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/test/java/org/apache/taverna/robundle/manifest/TestManifest.java b/taverna-robundle/src/test/java/org/apache/taverna/robundle/manifest/TestManifest.java
index 2c1221c..53c871c 100644
--- a/taverna-robundle/src/test/java/org/apache/taverna/robundle/manifest/TestManifest.java
+++ b/taverna-robundle/src/test/java/org/apache/taverna/robundle/manifest/TestManifest.java
@@ -72,7 +72,7 @@ public class TestManifest {
uris.add(s.getFile().toString());
Path path = s.getFile();
assertNotNull(path.getParent());
- assertEquals(Manifest.withSlash(path.getParent()), s.getFolder());
+ assertEquals(path.getParent(), s.getBundledAs().getFolder());
if (s.getFile().equals(URI.create("/f/nested/empty/"))) {
continue;
// Folder's don't need proxy and createdOn
@@ -90,7 +90,7 @@ public class TestManifest {
assertTrue(uris.remove("/f/file2.txt"));
assertTrue(uris.remove("/f/file3.txt"));
assertTrue(uris.remove("/f/nested/file1.txt"));
- assertTrue(uris.remove("/f/nested/empty/"));
+ assertTrue(uris.remove("/f/nested/empty"));
assertTrue(uris.isEmpty());
}
@@ -104,12 +104,12 @@ public class TestManifest {
// Second populate should not add additional entries
manifest.populateFromBundle();
- List<String> uris = new ArrayList<>();
+ List<String> paths = new ArrayList<>();
for (PathMetadata s : manifest.getAggregates()) {
- uris.add(s.getFile().toString());
Path path = s.getFile();
+ paths.add(s.toString());
assertNotNull(path.getParent());
- assertEquals(Manifest.withSlash(path.getParent()), s.getFolder());
+ assertEquals(path.getParent(), s.getBundledAs().getFolder());
if (s.getFile().equals(URI.create("/f/nested/empty/"))) {
continue;
// Folder's don't need proxy and createdOn
@@ -120,15 +120,15 @@ public class TestManifest {
assertEquals(s.getCreatedOn(), Files.getLastModifiedTime(path));
}
//System.out.println(uris);
- assertFalse(uris.contains("/mimetype"));
- assertFalse(uris.contains("/META-INF"));
- assertTrue(uris.remove("/hello.txt"));
- assertTrue(uris.remove("/f/file1.txt"));
- assertTrue(uris.remove("/f/file2.txt"));
- assertTrue(uris.remove("/f/file3.txt"));
- assertTrue(uris.remove("/f/nested/file1.txt"));
- assertTrue(uris.remove("/f/nested/empty/"));
- assertTrue("Unexpected uri: " + uris, uris.isEmpty());
+ assertFalse(paths.contains("/mimetype"));
+ assertFalse(paths.contains("/META-INF"));
+ assertTrue(paths.remove("/hello.txt"));
+ assertTrue(paths.remove("/f/file1.txt"));
+ assertTrue(paths.remove("/f/file2.txt"));
+ assertTrue(paths.remove("/f/file3.txt"));
+ assertTrue(paths.remove("/f/nested/file1.txt"));
+ assertTrue(paths.remove("/f/nested/empty/"));
+ assertTrue("Unexpected path: " + paths, paths.isEmpty());
}
private Path uri2path(URI base, URI uri) {