Revision: 19997
http://sourceforge.net/p/gate/code/19997
Author: markagreenwood
Date: 2017-01-26 18:04:47 +0000 (Thu, 26 Jan 2017)
Log Message:
-----------
creole:// URIs now work in such a way that they don't have to only refer to
maven based plugins :) -- there is a weird issue with neeing to add a . the
path that I need to think about further to check I've not missed anything but
this looks promising
Modified Paths:
--------------
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/ResourceReference.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java
2017-01-26 17:20:42 UTC (rev 19996)
+++
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java
2017-01-26 18:04:47 UTC (rev 19997)
@@ -1,15 +1,15 @@
/*
- * ResourceReference.java
+ * ResourceReference.java
*
- * Copyright (c) 2017, The University of Sheffield. See the file
- * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
+ * Copyright (c) 2017, The University of Sheffield. See the file COPYRIGHT.txt
+ * in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
*
- * This file is part of GATE (see http://gate.ac.uk/), and is free
- * software, licenced under the GNU Library General Public License,
- * Version 3, June 2007 (in the distribution as file licence.html,
- * and also available at http://gate.ac.uk/gate/licence.html).
+ * This file is part of GATE (see http://gate.ac.uk/), and is free software,
+ * licenced under the GNU Library General Public License, Version 3, June 2007
+ * (in the distribution as file licence.html, and also available at
+ * http://gate.ac.uk/gate/licence.html).
*
- * Mark A. Greenwood, 25th January 2017
+ * Mark A. Greenwood, 25th January 2017
*/
package gate.creole;
@@ -24,67 +24,71 @@
import gate.Gate;
-
public class ResourceReference {
-
- private URI uri;
-
- public ResourceReference(URL url) throws URISyntaxException {
- uri = url.toURI();
- }
-
- public ResourceReference(URI uri) {
- this.uri = uri;
- }
-
- 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 toURL().openStream();
- }
+ private URI uri;
- public URLConnection openConnection() throws IOException {
- 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();
+ public ResourceReference(URL url) throws URISyntaxException {
+ uri = url.toURI();
+ }
- 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;
- }
+ public ResourceReference(URI uri) {
+ this.uri = uri;
+ }
+
+ 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 toURL().openStream();
+ }
+
+ public URLConnection openConnection() throws IOException {
+ 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();
+
+ try {
+ URI base = new URI("creole", uri.getAuthority(), "/", null, null);
+ for(Plugin plugin : Gate.getCreoleRegister().getPlugins()) {
+ if(plugin.getBaseURI().equals(base)) {
+ // requiring the additional . seems like a hack but I can't figure
out
+ // any other way of doing it
+ return new URL(plugin.getBaseURL(), "." + uri.getPath());
+ }
+ }
+ } catch(URISyntaxException e) {
+ // this is impossible so ignore it
+ e.printStackTrace();
+ }
+
+ 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 17:20:42 UTC (rev 19996)
+++
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java
2017-01-26 18:04:47 UTC (rev 19997)
@@ -68,7 +68,8 @@
assertEquals("References do not match", url,
((ResourceReference)resource.getParameterValue("param")).toURL());
}
- public void testRelativeReferences() throws Exception {
+ @SuppressWarnings("serial")
+ public void testRelativeReferences() throws Exception {
URL testURL = new URL(TestDocument.getTestServerName() +
"tests/");
URL creoleURL = new URL(TestDocument.getTestServerName() +
"tests/creole.xml");
@@ -99,8 +100,7 @@
@Override
public Document getCreoleXML() throws Exception,
JDOMException {
Document doc = new Document();
- Element element;
- doc.addContent(element = new
Element("CREOLE-DIRECTORY"));
+ doc.addContent(new Element("CREOLE-DIRECTORY"));
return doc;
}
};
@@ -109,6 +109,6 @@
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());
+ assertEquals("URLs do not match (4)", creoleURL, 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