Revision: 19196
http://sourceforge.net/p/gate/code/19196
Author: markagreenwood
Date: 2016-04-04 17:29:08 +0000 (Mon, 04 Apr 2016)
Log Message:
-----------
a bit more tidying up and work on a better way of loading required plugins
Modified Paths:
--------------
gate/branches/sawdust2/src/main/gate/CreoleRegister.java
gate/branches/sawdust2/src/main/gate/Plugin.java
gate/branches/sawdust2/src/main/gate/creole/CreoleAnnotationHandler.java
gate/branches/sawdust2/src/main/gate/creole/CreoleRegisterImpl.java
Modified: gate/branches/sawdust2/src/main/gate/CreoleRegister.java
===================================================================
--- gate/branches/sawdust2/src/main/gate/CreoleRegister.java 2016-04-04
09:14:20 UTC (rev 19195)
+++ gate/branches/sawdust2/src/main/gate/CreoleRegister.java 2016-04-04
17:29:08 UTC (rev 19196)
@@ -102,6 +102,8 @@
public void registerPlugin(Plugin plugin) throws GateException;
+ public void registerPlugin(Plugin plugin, boolean loadDependencies) throws
GateException;
+
/**
* Register a single CREOLE directory. The <CODE>creole.xml</CODE> file at
the
* URL is parsed, and <CODE>CreoleData</CODE> objects added to the register.
Modified: gate/branches/sawdust2/src/main/gate/Plugin.java
===================================================================
--- gate/branches/sawdust2/src/main/gate/Plugin.java 2016-04-04 09:14:20 UTC
(rev 19195)
+++ gate/branches/sawdust2/src/main/gate/Plugin.java 2016-04-04 17:29:08 UTC
(rev 19196)
@@ -20,8 +20,10 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
@@ -54,6 +56,7 @@
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
+import org.jdom.xpath.XPath;
public abstract class Plugin {
@@ -74,13 +77,60 @@
*/
protected List<ResourceInfo> resourceInfoList = null;
- protected List<Plugin> requiredPlugins = null;
+ protected Set<Plugin> requiredPlugins = null;
public abstract org.jdom.Document getCreoleXML() throws Exception,
JDOMException;
public abstract String getName();
+
+ public Set<Plugin> getRequiredPlugins() {
+ if (requiredPlugins == null) parseCreole();
+ return requiredPlugins;
+ }
+
+ /*
+
+ XPath jarXPath =
+ XPath
+ .newInstance("//*[translate(local-name(), 'requires',
'REQUIRES') = 'REQUIRES']");
+ @SuppressWarnings("unchecked")
+ List<Element> requires = jarXPath.selectNodes(getCreoleXML());
+
+ String relativePathMarker = "$relpath$";
+ String gatehomePathMarker = "$gatehome$";
+ String gatepluginsPathMarker = "$gateplugins$";
+
+ for(Element required : requires) {
+
+ URL url = null;
+ String urlString = required.getTextTrim();
+ if(urlString.startsWith(relativePathMarker)) {
+ url =
+ new URL(getBaseURL(), urlString.substring(relativePathMarker
+ .length()));
+ } else if(urlString.startsWith(gatehomePathMarker)) {
+ URL gatehome = Gate.getGateHome().toURI().toURL();
+ url =
+ new URL(gatehome,
+ urlString.substring(gatehomePathMarker.length()));
+ } else if(urlString.startsWith(gatepluginsPathMarker)) {
+ URL gateplugins = Gate.getPluginsHome().toURI().toURL();
+ url =
+ new URL(gateplugins, urlString.substring(gatepluginsPathMarker
+ .length()));
+ } else {
+ url = new URL(getBaseURL(), urlString);
+ }
+
+ Gate.getCreoleRegister().registerDirectories(url);
+ }
+
+
+ return requiredPlugins;
+ }*/
+
@Override
public int hashCode() {
final int prime = 31;
@@ -118,7 +168,12 @@
protected void parseCreole() {
resourceInfoList = new ArrayList<ResourceInfo>();
+ requiredPlugins = new LinkedHashSet<Plugin>();
+ String relativePathMarker = "$relpath$";
+ String gatehomePathMarker = "$gatehome$";
+ String gatepluginsPathMarker = "$gateplugins$";
+
try {
org.jdom.Document creoleDoc = getCreoleXML();
@@ -158,7 +213,28 @@
}
}
else if(currentElem.getName().equalsIgnoreCase("REQUIRES")) {
- System.out.println("REQUIRES: " + currentElem.getTextTrim());
+ //System.out.println("REQUIRES: " + currentElem.getTextTrim());
+ URL url = null;
+ String urlString = currentElem.getTextTrim();
+ if(urlString.startsWith(relativePathMarker)) {
+ url =
+ new URL(getBaseURL(), urlString.substring(relativePathMarker
+ .length()));
+ } else if(urlString.startsWith(gatehomePathMarker)) {
+ URL gatehome = Gate.getGateHome().toURI().toURL();
+ url =
+ new URL(gatehome,
+ urlString.substring(gatehomePathMarker.length()));
+ } else if(urlString.startsWith(gatepluginsPathMarker)) {
+ URL gateplugins = Gate.getPluginsHome().toURI().toURL();
+ url =
+ new URL(gateplugins, urlString.substring(gatepluginsPathMarker
+ .length()));
+ } else {
+ url = new URL(getBaseURL(), urlString);
+ }
+
+ requiredPlugins.add(new Plugin.Directory(url));
}
else {
// this is some higher level element -> simulate recursion
@@ -576,8 +652,9 @@
Gate.init();
- Plugin annieDir = new Plugin.Directory(new
File("/home/mark/gate-top/externals/gate-ix/plugins/ANNIE").toURI().toURL());
+ Plugin annieDir = new Plugin.Directory(new
File("/home/mark/gate-top/externals/gate-ix/plugins/Tools").toURI().toURL());
System.out.println(annieDir.getResourceInfoList());
+ System.out.println(annieDir.getRequiredPlugins());
Plugin annieMaven = new Plugin.Maven("uk.ac.gate", "ANNIE", "9");
System.out.println(annieMaven.getResourceInfoList());
Modified:
gate/branches/sawdust2/src/main/gate/creole/CreoleAnnotationHandler.java
===================================================================
--- gate/branches/sawdust2/src/main/gate/creole/CreoleAnnotationHandler.java
2016-04-04 09:14:20 UTC (rev 19195)
+++ gate/branches/sawdust2/src/main/gate/creole/CreoleAnnotationHandler.java
2016-04-04 17:29:08 UTC (rev 19196)
@@ -103,6 +103,7 @@
*
* @param jdomDoc JDOM document representing a parsed creole.xml file.
*/
+ @Deprecated
public void loadRequiredPlugins(Document jdomDoc) throws IOException {
try {
XPath jarXPath =
Modified: gate/branches/sawdust2/src/main/gate/creole/CreoleRegisterImpl.java
===================================================================
--- gate/branches/sawdust2/src/main/gate/creole/CreoleRegisterImpl.java
2016-04-04 09:14:20 UTC (rev 19195)
+++ gate/branches/sawdust2/src/main/gate/creole/CreoleRegisterImpl.java
2016-04-04 17:29:08 UTC (rev 19196)
@@ -175,6 +175,11 @@
@Override
public void registerPlugin(Plugin plugin) throws GateException {
+ registerPlugin(plugin, true);
+ }
+
+ @Override
+ public void registerPlugin(Plugin plugin, boolean loadDependencies) throws
GateException {
if (!plugins.contains(plugin)) {
@@ -182,7 +187,7 @@
try {
parseDirectory(plugin, plugin.getCreoleXML(), plugin.getBaseURL(),
- new URL(plugin.getBaseURL(),"creole.xml"), true);
+ new URL(plugin.getBaseURL(),"creole.xml"), loadDependencies);
log.info("CREOLE plugin loaded: " + plugin.getName());
}
catch(Throwable e) {
@@ -257,7 +262,8 @@
new CreoleAnnotationHandler(plugin);
if (loadDependencies) {
- annotationHandler.loadRequiredPlugins(jdomDoc);
+ //TODO move this earlier I think
+ annotationHandler.loadRequiredPlugins(jdomDoc);
}
GateClassLoader gcl =
Gate.getClassLoader().getDisposableClassLoader(creoleFileUrl.toExternalForm());
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs