Revision: 19995
http://sourceforge.net/p/gate/code/19995
Author: markagreenwood
Date: 2017-01-26 12:47:44 +0000 (Thu, 26 Jan 2017)
Log Message:
-----------
wip
Modified Paths:
--------------
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Plugin.java
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java
Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Plugin.java
===================================================================
--- gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Plugin.java
2017-01-26 05:09:13 UTC (rev 19994)
+++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Plugin.java
2017-01-26 12:47:44 UTC (rev 19995)
@@ -101,7 +101,7 @@
* This is the URL against which all relative URLs in the CREOLE
* metadata are resolved
*/
- protected transient URI baseURL;
+ protected transient URL baseURL;
protected transient String name;
@@ -158,15 +158,13 @@
}
public URL getBaseURL() {
- try {
- return baseURL.toURL();
- } catch(MalformedURLException e) {
- // this should be impossible because of the way we have got hold of the
- // URI
- throw new RuntimeException(e);
- }
+ return baseURL;
}
+ public URI getBaseURI() throws URISyntaxException {
+ return baseURL.toURI();
+ }
+
public boolean isValid() {
return valid;
}
@@ -376,13 +374,8 @@
public static class Directory extends Plugin {
- public Directory(URL directoryURL) {
- try {
- baseURL = Gate.normaliseCreoleUrl(directoryURL).toURI();
- } catch(URISyntaxException e) {
- //this should never happen but....
- throw new RuntimeException(e);
- }
+ public Directory(URL directoryURL) {
+ baseURL = Gate.normaliseCreoleUrl(directoryURL);
}
@Override
@@ -433,7 +426,12 @@
this.version = version;
name = group+":"+artifact+":"+version;
- }
+ }
+
+ @Override
+ public URI getBaseURI() throws URISyntaxException {
+ return new URI("creole://"+group+";"+artifact+";"+version+"/");
+ }
@Override
public int hashCode() {
@@ -542,7 +540,7 @@
+ artifactResult.getArtifact().getFile().toURI().toURL()
+ "!/");
- baseURL = artifactURL.toURI();
+ baseURL = artifactURL;
// check it has a creole.xml at the root
URL directoryXmlFileUrl = new URL(artifactURL, "creole.xml");
@@ -704,12 +702,7 @@
public Component(Class<? extends Resource> resourceClass) throws
MalformedURLException {
this.resourceClass = resourceClass;
- try {
- baseURL = (new
URL(resourceClass.getResource("/gate/creole/CreoleRegisterImpl.class"),
".")).toURI();
- } catch(URISyntaxException e) {
- //this should never happen
- throw new RuntimeException(e);
- }
+ baseURL = (new
URL(resourceClass.getResource("/gate/creole/CreoleRegisterImpl.class"), "."));
}
@Override
Modified:
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java
2017-01-26 05:09:13 UTC (rev 19994)
+++
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java
2017-01-26 12:47:44 UTC (rev 19995)
@@ -16,31 +16,75 @@
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
+import gate.Gate;
+
public class ResourceReference {
- private URL actualURL;
+ private URI uri;
- public ResourceReference(URL url) throws IOException {
- actualURL = url;
+ public ResourceReference(URL url) throws URISyntaxException {
+ uri = url.toURI();
}
- public ResourceReference(Plugin plugin, String path) throws IOException
{
- actualURL = new URL(plugin.getBaseURL(), path);
+ public ResourceReference(URI uri) {
+ this.uri = uri;
}
- public ResourceReference(ResourceReference base, String path) throws
IOException {
- //possibly use URI to do the resolving but keep inside the
plugin
+ public ResourceReference(Plugin plugin, String path) throws
URISyntaxException {
+ this(plugin.getBaseURI(),path);
}
+
+ public ResourceReference(URL context, String path) throws
URISyntaxException, MalformedURLException {
+ uri = (new URL(context,path)).toURI();
+ }
+
+ public ResourceReference(URI context, String path) {
+ uri = context.resolve(path);
+ }
+
+ public ResourceReference(ResourceReference context, String path) throws
IOException, URISyntaxException {
+ this(context.uri,path);
+ }
public InputStream openStream() throws IOException {
- return actualURL.openStream();
+ return toURL().openStream();
}
public URLConnection openConnection() throws IOException {
- return actualURL.openConnection();
+ return toURL().openConnection();
}
+
+ public URL toURL() throws IOException {
+
+ if (!uri.isAbsolute())
+ throw new IOException("Unable to access relative
resource reference: "+uri);
+
+ if (!uri.getScheme().equals("creole"))
+ return uri.toURL();
+
+ String authority = uri.getAuthority();
+ String[] data = authority.split(";");
+
+ Plugin plugin = new Plugin.Maven(data[0], data[1], data[2]);
+
+ for (Plugin p : Gate.getCreoleRegister().getPlugins()) {
+ System.out.println(p.getClass());
+ if (p.equals(plugin)) {
+ return new URL(p.getBaseURL(),uri.getPath());
+ }
+ }
+
+ throw new IOException("Unable to locate URI: "+uri);
+ }
+
+ public URI toURI() throws URISyntaxException {
+ return uri;
+ }
}
Modified:
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java
2017-01-26 05:09:13 UTC (rev 19994)
+++
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java
2017-01-26 12:47:44 UTC (rev 19995)
@@ -1,9 +1,13 @@
package gate.creole;
import java.io.InputStream;
+import java.net.URI;
import java.net.URL;
import org.apache.commons.io.IOUtils;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
import gate.Gate;
import gate.Resource;
@@ -58,13 +62,53 @@
}
};
- URL url =
getClass().getClassLoader().getResource("gate/resources/gate.ac.uk/creole/creole.xml");
+ URL url = new URL("http://gate.ac.uk");
resource.setParameterValue("param", url);
- try (InputStream in =
((ResourceReference)resource.getParameterValue("param")).openStream()) {
- String contents = IOUtils.toString(in);
-
- assertEquals("Length of data read not as expected", 98,
contents.length());
- }
+ assertEquals("References do not match", url,
((ResourceReference)resource.getParameterValue("param")).toURL());
}
+
+ public void testRelativeReferences() throws Exception {
+ URL testURL = new URL(TestDocument.getTestServerName() +
"tests/");
+ URL creoleURL = new URL(TestDocument.getTestServerName() +
"tests/creole.xml");
+
+ ResourceReference rr = new
ResourceReference(testURL,"./creole.xml");
+ assertEquals("References do not match (1)", creoleURL,
rr.toURL());
+
+ ResourceReference context = new ResourceReference(testURL);
+ rr = new ResourceReference(context,"./creole.xml");
+ assertEquals("References do not match (2)", creoleURL,
rr.toURL());
+
+ Plugin plugin = new Plugin.Directory(testURL);
+ context = new ResourceReference(plugin,"abc");
+ rr = new ResourceReference(context,"./creole.xml");
+ assertEquals("References do not match (3)", creoleURL,
rr.toURL());
+
+ context = new ResourceReference(plugin,"html/");
+ rr = new ResourceReference(context,"../creole.xml");
+ assertEquals("References do not match (3)", creoleURL,
rr.toURL());
+
+ URI creoleURI = new
URI("creole://ac.uk.gate.plugins;annie;9.0-SNAPSHOT/creole.xml");
+ plugin = new Plugin.Maven("ac.uk.gate.plugins", "annie",
"9.0-SNAPSHOT") {
+
+ @Override
+ public URL getBaseURL() {
+ return testURL;
+ }
+
+ @Override
+ public Document getCreoleXML() throws Exception,
JDOMException {
+ Document doc = new Document();
+ Element element;
+ doc.addContent(element = new
Element("CREOLE-DIRECTORY"));
+ return doc;
+ }
+ };
+
+ Gate.getCreoleRegister().registerPlugin(plugin);
+ context = new ResourceReference(plugin,"folder/");
+ rr = new ResourceReference(context,"../creole.xml");
+ assertEquals("References do not match (4)", creoleURI,
rr.toURI());
+ //System.out.println(rr.toURL());
+ }
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs