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/11 10:44:39 UTC

[13/14] incubator-taverna-language git commit: TAVERNA-1047: Ensure annotations have /.ro/ relative URIs

TAVERNA-1047: Ensure annotations have /.ro/ relative URIs


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/3336e75e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/3336e75e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/3336e75e

Branch: refs/heads/master
Commit: 3336e75e396fad0594db3b761aea8d10a95d3a92
Parents: 71708bc
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri May 11 09:42:56 2018 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri May 11 09:42:56 2018 +0100

----------------------------------------------------------------------
 .../robundle/manifest/PathAnnotation.java       | 29 ++++++++++++++------
 1 file changed, 21 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3336e75e/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
----------------------------------------------------------------------
diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
index 17783f7..451be52 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/PathAnnotation.java
@@ -8,9 +8,9 @@ package org.apache.taverna.robundle.manifest;
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- * 
+ *
  *   http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -25,6 +25,7 @@ import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
@@ -87,15 +88,26 @@ public class PathAnnotation {
 	}
 
 	private URI relativizePath(Path path) {
-		return URI.create("/.ro/").relativize(
+		return relativizeUri(
 				URI.create(path.toUri().getRawPath()));
 	}
 
+	private URI relativizeUri(URI relativeOrAbsolute) {
+		// NOTE: We can't fix absolute URIs within the RO bundle here, as
+		// we don't know the root. We can however get rid of "/.ro/"
+		// if it is present.
+		return URI.create("/.ro/").relativize(relativeOrAbsolute);
+	}
+
 	public void setAbout(List<URI> about) {
 		if (about == null) {
 			throw new NullPointerException("about list can't be null");
 		}
-		this.about = about;
+		// Relativize if needed.
+		// Note: This will also ensure we make a copy of the list.
+		this.about = about.stream()
+				.map(this::relativizeUri)
+				.collect(Collectors.toList());
 	}
 
 	public void setAbout(Path path) {
@@ -105,7 +117,7 @@ public class PathAnnotation {
 	public void setAbout(URI about) {
 		this.about.clear();
 		if (about != null) {
-			this.about.add(about);
+			this.about.add(relativizeUri(about));
 		}
 	}
 
@@ -119,15 +131,16 @@ public class PathAnnotation {
 	}
 
 	public void setContent(URI content) {
-		this.content = content;
+		this.content = relativizeUri(content);
 	}
 
 	public void setUri(URI uri) {
-		this.uri = uri;
+		// Normally absolute urn:uuid: URIs, but just in case..
+		this.uri = relativizeUri(uri);
 	}
 
 	@Override
 	public String toString() {
-		return "Annotation: " + getContent() + " about " + getAbout();
+		return "Annotation: " + getContent() + " about " + getAboutList();
 	}
 }