You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(33) |
Nov
(96) |
Dec
(173) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(45) |
Feb
(46) |
Mar
(58) |
Apr
(83) |
May
(11) |
Jun
(62) |
Jul
(79) |
Aug
(62) |
Sep
(42) |
Oct
(105) |
Nov
(57) |
Dec
(73) |
2007 |
Jan
(187) |
Feb
(60) |
Mar
(313) |
Apr
(174) |
May
(74) |
Jun
(99) |
Jul
(132) |
Aug
(62) |
Sep
(65) |
Oct
(83) |
Nov
(63) |
Dec
(41) |
2008 |
Jan
(83) |
Feb
(82) |
Mar
(42) |
Apr
(88) |
May
(68) |
Jun
(67) |
Jul
(37) |
Aug
(69) |
Sep
(52) |
Oct
(85) |
Nov
(65) |
Dec
(49) |
2009 |
Jan
(50) |
Feb
(70) |
Mar
(95) |
Apr
(69) |
May
(122) |
Jun
(44) |
Jul
(217) |
Aug
(397) |
Sep
(307) |
Oct
(302) |
Nov
(131) |
Dec
(104) |
2010 |
Jan
(87) |
Feb
(102) |
Mar
(105) |
Apr
(141) |
May
(110) |
Jun
(85) |
Jul
(80) |
Aug
(110) |
Sep
(56) |
Oct
(63) |
Nov
(65) |
Dec
(45) |
2011 |
Jan
(58) |
Feb
(93) |
Mar
(86) |
Apr
(177) |
May
(82) |
Jun
(182) |
Jul
(91) |
Aug
(72) |
Sep
(70) |
Oct
(124) |
Nov
(154) |
Dec
(251) |
2012 |
Jan
(414) |
Feb
(211) |
Mar
(153) |
Apr
(69) |
May
(139) |
Jun
(50) |
Jul
(80) |
Aug
(48) |
Sep
(61) |
Oct
(101) |
Nov
(192) |
Dec
(52) |
2013 |
Jan
(48) |
Feb
(47) |
Mar
(75) |
Apr
(43) |
May
(32) |
Jun
(14) |
Jul
(39) |
Aug
(80) |
Sep
(128) |
Oct
(77) |
Nov
(105) |
Dec
(61) |
2014 |
Jan
(61) |
Feb
(224) |
Mar
(265) |
Apr
(154) |
May
(130) |
Jun
(88) |
Jul
(98) |
Aug
(57) |
Sep
(81) |
Oct
(58) |
Nov
(57) |
Dec
(34) |
2015 |
Jan
(38) |
Feb
(37) |
Mar
(26) |
Apr
(43) |
May
(73) |
Jun
(76) |
Jul
(38) |
Aug
(44) |
Sep
(39) |
Oct
(51) |
Nov
(36) |
Dec
(41) |
2016 |
Jan
(35) |
Feb
(51) |
Mar
(16) |
Apr
(106) |
May
(121) |
Jun
(58) |
Jul
(40) |
Aug
(71) |
Sep
(53) |
Oct
(100) |
Nov
(127) |
Dec
(66) |
2017 |
Jan
(130) |
Feb
(48) |
Mar
(1) |
Apr
(8) |
May
(16) |
Jun
(19) |
Jul
(12) |
Aug
(4) |
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
(3) |
2018 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
(2) |
May
(3) |
Jun
(3) |
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(1) |
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2023 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(2) |
May
(3) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2024 |
Jan
(1) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <mar...@us...> - 2017-02-01 10:10:23
|
Revision: 20046 http://sourceforge.net/p/gate/code/20046 Author: markagreenwood Date: 2017-02-01 10:10:20 +0000 (Wed, 01 Feb 2017) Log Message: ----------- when resources are persisted we now only save parameter values which differ from the default values. this simplifies saved applications but also means that if you upgrade a plugin etc. you'll be guaranteed to get the new behaviour rather than possible an exception Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PRPersistence.java gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/ResourcePersistence.java gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PRPersistence.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PRPersistence.java 2017-02-01 07:14:37 UTC (rev 20045) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PRPersistence.java 2017-02-01 10:10:20 UTC (rev 20046) @@ -20,6 +20,7 @@ import gate.ProcessingResource; import gate.Resource; import gate.creole.Parameter; +import gate.creole.ParameterException; import gate.creole.ParameterList; import gate.creole.ResourceData; import gate.creole.ResourceInstantiationException; @@ -65,12 +66,14 @@ Parameter parameter = parIter.next(); String parName = parameter.getName(); Object parValue = res.getParameterValue(parName); - ((FeatureMap)runtimeParams).put(parName,parValue); + if (storeParameterValue(parValue, parameter.getDefaultValue())) { + ((FeatureMap)runtimeParams).put(parName,parValue); + } } } runtimeParams = PersistenceManager. getPersistentRepresentation(runtimeParams); - }catch(ResourceInstantiationException rie){ + }catch(ResourceInstantiationException | ParameterException rie){ throw new PersistenceException(rie); } } Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/ResourcePersistence.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/ResourcePersistence.java 2017-02-01 07:14:37 UTC (rev 20045) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/ResourcePersistence.java 2017-02-01 10:10:20 UTC (rev 20046) @@ -19,6 +19,7 @@ import gate.Gate; import gate.Resource; import gate.creole.Parameter; +import gate.creole.ParameterException; import gate.creole.ParameterList; import gate.creole.ResourceData; import gate.creole.ResourceInstantiationException; @@ -69,7 +70,9 @@ Parameter parameter = parIter.next(); String parName = parameter.getName(); Object parValue = res.getParameterValue(parName); - ((FeatureMap)initParams).put(parName, parValue); + if (storeParameterValue(parValue, parameter.getDefaultValue())) { + ((FeatureMap)initParams).put(parName, parValue); + } } } initParams = PersistenceManager.getPersistentRepresentation(initParams); @@ -80,12 +83,40 @@ ((FeatureMap)features).putAll(res.getFeatures()); features = PersistenceManager.getPersistentRepresentation(features); } - }catch(ResourceInstantiationException rie){ + }catch(ResourceInstantiationException | ParameterException rie){ throw new PersistenceException(rie); } } + + /** + * Returns true if we should store the parameter value as it is different + * from the default value. + * + * @param value + * the value we might store + * @param defaultValue + * the default value + * @return true if we should store the parameter value as it is different + * from the default value, false otherwise + */ + protected static boolean storeParameterValue(Object value, Object defaultValue) { + // if both are null then we don't need to store the value + if (value == null && defaultValue == null) + return false; + // if only one of them is null then we do need to store + if (value == null || defaultValue == null) + return true; + // if neither are null and they are identical objects then we don't need + // to store + if (value == defaultValue) + return false; + + // only store if the two objects are truly differnet + return !value.equals(defaultValue); + } + @Override public Object createObject()throws PersistenceException, ResourceInstantiationException { 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-02-01 07:14:37 UTC (rev 20045) +++ gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java 2017-02-01 10:10:20 UTC (rev 20046) @@ -193,8 +193,8 @@ ResourceReference rr = new ResourceReference(txtFile.toURI()); checkPersistence(xgappFile, rr, "$relpath$test-file.txt"); - rr = new ResourceReference(creolePlugin,"resources/file.txt"); - checkPersistence(xgappFile, rr, "creole://group;artifact;version/resources/file.txt"); + rr = new ResourceReference(creolePlugin,"resources/test.txt"); + checkPersistence(xgappFile, rr, "creole://group;artifact;version/resources/test.txt"); rr = new ResourceReference(new URL("http://gate.ac.uk/resource/file.txt")); checkPersistence(xgappFile, rr, "http://gate.ac.uk/resource/file.txt"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 07:14:38
|
Revision: 20045 http://sourceforge.net/p/gate/code/20045 Author: markagreenwood Date: 2017-02-01 07:14:37 +0000 (Wed, 01 Feb 2017) Log Message: ----------- no longer do we need to suprress javadoc warnings Modified Paths: -------------- gate/branches/sawdust2/Plugin_Base/pom.xml Modified: gate/branches/sawdust2/Plugin_Base/pom.xml =================================================================== --- gate/branches/sawdust2/Plugin_Base/pom.xml 2017-02-01 07:10:51 UTC (rev 20044) +++ gate/branches/sawdust2/Plugin_Base/pom.xml 2017-02-01 07:14:37 UTC (rev 20045) @@ -97,17 +97,6 @@ </execution> </executions> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <version>2.9.1</version> - <configuration> - <!-- in theory we should only need one of these and it would be nice to get - rid of them alltogether but that's for another day --> - <failOnError>false</failOnError> - <additionalparam>-Xdoclint:none</additionalparam> - </configuration> - </plugin> </plugins> </build> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 07:10:53
|
Revision: 20044 http://sourceforge.net/p/gate/code/20044 Author: markagreenwood Date: 2017-02-01 07:10:51 +0000 (Wed, 01 Feb 2017) Log Message: ----------- last set (I think) of javadoc fixes Modified Paths: -------------- gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/Automaton.java gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfLabels.java gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfStrings.java Modified: gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/Automaton.java =================================================================== --- gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/Automaton.java 2017-02-01 07:03:01 UTC (rev 20043) +++ gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/Automaton.java 2017-02-01 07:10:51 UTC (rev 20044) @@ -280,7 +280,7 @@ * * @param finalities * finalities[f] is a State that has a finality f. - * @return + * @return the final Automaton */ public Automaton determinize(StatePDA[] finalities) { AutomatonBuildHelp bHelp = new AutomatonBuildHelp(alphabetLength); @@ -763,7 +763,7 @@ /** * Gets the number of transitions in the automaton * - * @return + * @return the number of transitions in the automaton */ public int getTransitionsStored() { return transitionsStored; @@ -771,9 +771,7 @@ /** * Converts the automaton into State[]. - * - * @param tripleTransitions - * @return + * @return the automaton converted into a State[] */ public StatePDA[] toFSM(TripleTransitions tripleTransitions) { StatePDA[] fsmStates = new StatePDA[statesStored]; Modified: gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfLabels.java =================================================================== --- gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfLabels.java 2017-02-01 07:03:01 UTC (rev 20043) +++ gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfLabels.java 2017-02-01 07:10:51 UTC (rev 20044) @@ -29,7 +29,7 @@ /** * Puts a transition in the closed hash. * - * @param t + * @param t the transition to store * @return the number of the transition */ public int put(TransitionPDA t) { @@ -40,7 +40,7 @@ * Gets an array of all transitions that are stored in the closed hash. A * change of one these transition will make the hash table inconsistent. * - * @return + * @return an array of all transitions currently in the closed hash */ public TransitionPDA[] getCopyOfTransitions() { TransitionPDA[] t = new TransitionPDA[objectsStored]; @@ -54,7 +54,7 @@ /** * Gets the number of transitions that are stored in the closed hash. * - * @return + * @return the number of transitions stored in the closed hash */ public int getTransitionsStored() { if (epsilon) { Modified: gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfStrings.java =================================================================== --- gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfStrings.java 2017-02-01 07:03:01 UTC (rev 20043) +++ gate/branches/sawdust2/plugins/JAPE_Plus/src/main/java/com/ontotext/jape/automaton/ClosedHashOfStrings.java 2017-02-01 07:10:51 UTC (rev 20044) @@ -24,7 +24,7 @@ /** * Puts a string in the closed hash. * - * @param s + * @param s the string to store * @return the number of the string */ public int put(String s) { @@ -34,7 +34,7 @@ /** * Gets an array of all strings that are stored in the closed hash. * - * @return + * @return an array of all strings that are stored in the closed hash */ public String[] getCopyOfStrings() { String[] s = new String[objectsStored]; @@ -48,7 +48,7 @@ /** * Gets the number of strings that are stored in the closed hash. * - * @return + * @return the number of strings stored in the closed hash */ public int getStringsStored() { return (objectsStored); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 07:03:04
|
Revision: 20043 http://sourceforge.net/p/gate/code/20043 Author: markagreenwood Date: 2017-02-01 07:03:01 +0000 (Wed, 01 Feb 2017) Log Message: ----------- yet more javadoc fixes Modified Paths: -------------- gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/GateGroovyMethods.java gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/ScriptPR.java Modified: gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/GateGroovyMethods.java =================================================================== --- gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/GateGroovyMethods.java 2017-02-01 06:57:31 UTC (rev 20042) +++ gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/GateGroovyMethods.java 2017-02-01 07:03:01 UTC (rev 20043) @@ -151,9 +151,9 @@ * whose end points are any numeric type, so as well as using integer * literals you can do <code>documentContent[ann.start()..ann.end()]</code> * (as start and end return Long). - * @param self - * @param range - * @return + * @param self the document content being accessed + * @param range the range to access + * @return a sub-section of the document content described by the given range */ public static DocumentContent getAt(DocumentContent self, Range<?> range) { if(range.getFrom() instanceof Number) { Modified: gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/ScriptPR.java =================================================================== --- gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/ScriptPR.java 2017-02-01 06:57:31 UTC (rev 20042) +++ gate/branches/sawdust2/plugins/Groovy/src/main/java/gate/groovy/ScriptPR.java 2017-02-01 07:03:01 UTC (rev 20043) @@ -293,7 +293,7 @@ /** * gets name of the output annotation set * - * @return + * @return the output annotation set name */ public String getOutputASName() { return outputASName; @@ -302,7 +302,7 @@ /** * sets name of the output annotaiton set * - * @param outputAS + * @param outputAS the output annotation set name */ @Optional @RunTime @@ -314,7 +314,7 @@ /** * gets name of the input annotation set * - * @return + * @return the input annotation set name */ public String getInputASName() { return inputASName; @@ -323,7 +323,7 @@ /** * sets name of the input annotaiton set * - * @param inputAS + * @param inputAS the input annotation set name */ @Optional @RunTime @@ -335,7 +335,7 @@ /** * gets URL of the Groovy script * - * @return + * @return the URL of the Groovy script */ public URL getScriptURL() { return scriptURL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 06:57:34
|
Revision: 20042 http://sourceforge.net/p/gate/code/20042 Author: markagreenwood Date: 2017-02-01 06:57:31 +0000 (Wed, 01 Feb 2017) Log Message: ----------- more javadoc fixes Modified Paths: -------------- gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Tagger.java gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Utils.java gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/matchers/CompoundMatcher.java Modified: gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Tagger.java =================================================================== --- gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Tagger.java 2017-02-01 06:50:42 UTC (rev 20041) +++ gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Tagger.java 2017-02-01 06:57:31 UTC (rev 20042) @@ -24,7 +24,7 @@ /** * Gets the annotation type this {@link Tagger} instance is used for. - * @return + * @return the annotation type this tagger uses */ public String getAnnotationType(); Modified: gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Utils.java =================================================================== --- gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Utils.java 2017-02-01 06:50:42 UTC (rev 20041) +++ gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/Utils.java 2017-02-01 06:57:31 UTC (rev 20042) @@ -53,8 +53,8 @@ * Given an input string matched by {@link #MWE_UPPER_INITIAL_PATTERN}, this * method returns the initials for constituent words of the multi-word * expression. - * @param input - * @return + * @param input the multi-word expression to process + * @return the initials of the multi-word expression */ public static final char[] initialsForMwe(String input) { // split on whitespace @@ -80,8 +80,8 @@ /** * Checks whether the input string is a multi-word reference as recognised by * {@link #MWE_UPPER_INITIAL_PATTERN}. - * @param text - * @return + * @param text the text to process + * @return true if the text is a multi-word expression */ public static final boolean isMwe(String text) { return MWE_UPPER_INITIAL_PATTERN.matcher(text).matches(); Modified: gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/matchers/CompoundMatcher.java =================================================================== --- gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/matchers/CompoundMatcher.java 2017-02-01 06:50:42 UTC (rev 20041) +++ gate/branches/sawdust2/plugins/Coref_Tools/src/main/java/gate/creole/coref/matchers/CompoundMatcher.java 2017-02-01 06:57:31 UTC (rev 20042) @@ -32,8 +32,6 @@ /** * Constructs a compound matcher from a list of sub-matchers. - * @param annotationType - * @param antecedentType * @throws ResourceInstantiationException if not all sub-matchers use the same * annotation type and antecedent type. */ @@ -42,9 +40,9 @@ } /** - * - * @param subMatchers - * @throws ResourceInstantiationException + * Constructs a compound matcher from an array of sub-matchers + * @throws ResourceInstantiationException if not all sub-matchers use the same + * annotation type and antecedent type. */ public CompoundMatcher(Matcher[] subMatchers) throws ResourceInstantiationException { super(subMatchers[0].getAnnotationType(), @@ -64,9 +62,6 @@ } } - /* (non-Javadoc) - * @see gate.creole.coref.matchers.AbstractMatcher#init(gate.creole.coref.CorefBase) - */ @Override public void init(CorefBase owner) throws ResourceInstantiationException { for(Matcher aMatcher : subMatchers) aMatcher.init(owner); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 06:50:44
|
Revision: 20041 http://sourceforge.net/p/gate/code/20041 Author: markagreenwood Date: 2017-02-01 06:50:42 +0000 (Wed, 01 Feb 2017) Log Message: ----------- fixed yet more javadoc Modified Paths: -------------- gate/branches/sawdust2/plugins/Copy_Annots_Between_Docs/src/main/java/gate/copyAS2AnoDoc/CopyAS2AnoDocMain.java Modified: gate/branches/sawdust2/plugins/Copy_Annots_Between_Docs/src/main/java/gate/copyAS2AnoDoc/CopyAS2AnoDocMain.java =================================================================== --- gate/branches/sawdust2/plugins/Copy_Annots_Between_Docs/src/main/java/gate/copyAS2AnoDoc/CopyAS2AnoDocMain.java 2017-02-01 06:46:01 UTC (rev 20040) +++ gate/branches/sawdust2/plugins/Copy_Annots_Between_Docs/src/main/java/gate/copyAS2AnoDoc/CopyAS2AnoDocMain.java 2017-02-01 06:50:42 UTC (rev 20041) @@ -41,8 +41,10 @@ private String inputASName; private String outputASName; private List<String> annotationTypes; - + File[] xmlFiles = null; + boolean [] fileNotUsedYet = null; + /** Initialise this resource, and return it. */ public gate.Resource init() throws ResourceInstantiationException { return this; @@ -51,10 +53,8 @@ /** * Run the resource. * - * @throws ExecutionException + * @throws ExecutionException if an error occurs while running the PR */ - File[] xmlFiles = null; - boolean [] fileNotUsedYet = null; public void execute() throws ExecutionException { // now we need to see if the corpus is provided @@ -220,4 +220,4 @@ } } - \ No newline at end of file + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 06:46:03
|
Revision: 20040 http://sourceforge.net/p/gate/code/20040 Author: markagreenwood Date: 2017-02-01 06:46:01 +0000 (Wed, 01 Feb 2017) Log Message: ----------- more javadoc fixes Modified Paths: -------------- gate/branches/sawdust2/plugins/Teamware_Tools/src/main/java/gate/qa/QAForTeamwarePR.java Modified: gate/branches/sawdust2/plugins/Teamware_Tools/src/main/java/gate/qa/QAForTeamwarePR.java =================================================================== --- gate/branches/sawdust2/plugins/Teamware_Tools/src/main/java/gate/qa/QAForTeamwarePR.java 2017-02-01 06:34:45 UTC (rev 20039) +++ gate/branches/sawdust2/plugins/Teamware_Tools/src/main/java/gate/qa/QAForTeamwarePR.java 2017-02-01 06:46:01 UTC (rev 20040) @@ -797,7 +797,7 @@ /** * Annotation types for which the stats should be calculated * - * @return + * @return the annotation types for which the states should be calculated */ public List<String> getAnnotationTypes() { return annotationTypes; @@ -806,7 +806,7 @@ /** * Annotation types for which the stats should be calculated * - * @param annotationTypes + * @param annotationTypes the annotation types for which stats should be calculated */ @RunTime @CreoleParameter @@ -817,7 +817,7 @@ /** * Features names for which the stats should be calculated * - * @return + * @return the feature names for which the states should be calculated */ public List<String> getFeatureNames() { return featureNames; @@ -826,7 +826,7 @@ /** * Features names for which the stats should be calculated * - * @param featureNames + * @param featureNames the feature names for which the stats should be calculayed */ @RunTime @Optional @@ -838,7 +838,7 @@ /** * Measure to use for stats calculation * - * @return + * @return the measure used for stats calculation */ public Measure getMeasure() { return measure; @@ -847,7 +847,7 @@ /** * Measure to use for stats calculation * - * @param measure + * @param measure the measure to use for the stats calculation */ @RunTime @CreoleParameter @@ -858,7 +858,7 @@ /** * URL of the folder to store output files into * - * @return + * @return the URL of the folder in which to store the output files */ public URL getOutputFolderUrl() { return outputFolderUrl; @@ -867,7 +867,7 @@ /** * URL of the folder to store output files into * - * @param outputFolderUrl + * @param outputFolderUrl the URL of the folder in which to store the output files */ @RunTime @CreoleParameter(suffixes = "html") @@ -878,7 +878,7 @@ /** * annotators to ignore when computing IAA * - * @return + * @return the list of annotators to ignore when cslculating IAA */ public List<String> getAnnotatorsToIgnore() { return annotatorsToIgnore; @@ -889,7 +889,7 @@ * least one value provided for the annotationSetNamesAsAnnotators, this * parameter will have no effect. * - * @param annotatorsToIgnore + * @param annotatorsToIgnore the list of annotators to ignore when doing the IAA calculation */ @RunTime @Optional This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 06:34:48
|
Revision: 20039 http://sourceforge.net/p/gate/code/20039 Author: markagreenwood Date: 2017-02-01 06:34:45 +0000 (Wed, 01 Feb 2017) Log Message: ----------- fixed more javadoc issues Modified Paths: -------------- gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/bank/AbstractTermbank.java gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Term.java gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Utilities.java Modified: gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/bank/AbstractTermbank.java =================================================================== --- gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/bank/AbstractTermbank.java 2017-02-01 06:24:12 UTC (rev 20038) +++ gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/bank/AbstractTermbank.java 2017-02-01 06:34:45 UTC (rev 20039) @@ -296,7 +296,7 @@ * TODO: This is not right (columns). * Should be overridden as necessary, for totals etc. * Must start with a newline. - * @return + * @return the assembled CSV snipper */ protected String getCsvSubheader() { StringBuilder sb = new StringBuilder(); Modified: gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Term.java =================================================================== --- gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Term.java 2017-02-01 06:24:12 UTC (rev 20038) +++ gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Term.java 2017-02-01 06:34:45 UTC (rev 20039) @@ -94,7 +94,7 @@ * Type and string must match; language code is ignored if either * is blank, but must match if both are non-blank. * @param other - * @return + * @return true if the terms match close enough, false otherwise */ public boolean closeMatch(Term other) { if (! this.termString.equals(other.termString)) { Modified: gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Utilities.java =================================================================== --- gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Utilities.java 2017-02-01 06:24:12 UTC (rev 20038) +++ gate/branches/sawdust2/plugins/TermRaider/src/main/java/gate/termraider/util/Utilities.java 2017-02-01 06:34:45 UTC (rev 20039) @@ -39,10 +39,10 @@ /** This is a little dodgy because it forces the new value * to be Integer; to be used carefully. - * @param map - * @param key - * @param increment - * @return + * @param map the map containing the term counts + * @param key the term we want to increment + * @param increment the amount to increment + * @return the new count for the term */ public static int incrementMap(Map<Term, Number> map, Term key, int increment) { int count = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 06:24:14
|
Revision: 20038 http://sourceforge.net/p/gate/code/20038 Author: markagreenwood Date: 2017-02-01 06:24:12 +0000 (Wed, 01 Feb 2017) Log Message: ----------- added the relative path to the parent pom, not sure why this was missing Modified Paths: -------------- gate/branches/sawdust2/plugins/Tagger_Numbers/pom.xml Modified: gate/branches/sawdust2/plugins/Tagger_Numbers/pom.xml =================================================================== --- gate/branches/sawdust2/plugins/Tagger_Numbers/pom.xml 2017-02-01 06:17:21 UTC (rev 20037) +++ gate/branches/sawdust2/plugins/Tagger_Numbers/pom.xml 2017-02-01 06:24:12 UTC (rev 20038) @@ -9,6 +9,7 @@ <artifactId>base-plugin</artifactId> <!-- this should be the version of GATE you wish to build against --> <version>9.0-SNAPSHOT</version> + <relativePath>../../Plugin_Base/pom.xml</relativePath> </parent> <!-- this is the description of this plugin --> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 06:17:23
|
Revision: 20037 http://sourceforge.net/p/gate/code/20037 Author: markagreenwood Date: 2017-02-01 06:17:21 +0000 (Wed, 01 Feb 2017) Log Message: ----------- fixed a few more javadoc issues and upgraded the javadoc plugin to the latest. also now any new issues are likely to fail the build Modified Paths: -------------- gate/branches/sawdust2/gate-core/pom.xml gate/branches/sawdust2/gate-core/src/main/java/gate/Factory.java gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java Removed Paths: ------------- gate/branches/sawdust2/gate-core/src/main/java/gate/creole/annic/apache/lucene/search/package.html Modified: gate/branches/sawdust2/gate-core/pom.xml =================================================================== --- gate/branches/sawdust2/gate-core/pom.xml 2017-02-01 04:51:37 UTC (rev 20036) +++ gate/branches/sawdust2/gate-core/pom.xml 2017-02-01 06:17:21 UTC (rev 20037) @@ -519,17 +519,6 @@ </execution> </executions> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-javadoc-plugin</artifactId> - <version>2.9.1</version> - <configuration> - <!-- in theory we should only need one of these and it would be nice to get - rid of them alltogether but that's for another day --> - <failOnError>false</failOnError> - <additionalparam>-Xdoclint:none</additionalparam> - </configuration> - </plugin> </plugins> <resources> Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/Factory.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/Factory.java 2017-02-01 04:51:37 UTC (rev 20036) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/Factory.java 2017-02-01 06:17:21 UTC (rev 20037) @@ -546,7 +546,7 @@ * <li>{@link Controller}</li> * <li>{@link CorpusController}</li> * <li>{@link ConditionalController}</li> - * <li>{@link Gazetteer}</li> + * <li>{@code Gazetteer}</li> * <li>{@link LanguageResource}</li> * <li>{@link gate.creole.ontology.Ontology}</li> * <li>{@link Document}</li> Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java 2017-02-01 04:51:37 UTC (rev 20036) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java 2017-02-01 06:17:21 UTC (rev 20037) @@ -1239,6 +1239,7 @@ * directory will be removed from memory. * * @param plugin the the plugin to remove from the list of known plugins + **/ public static void removeKnownPlugin(Plugin plugin) { //pluginURL = normaliseCreoleUrl(pluginURL); knownPlugins.remove(plugin); Deleted: gate/branches/sawdust2/gate-core/src/main/java/gate/creole/annic/apache/lucene/search/package.html =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/creole/annic/apache/lucene/search/package.html 2017-02-01 04:51:37 UTC (rev 20036) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/annic/apache/lucene/search/package.html 2017-02-01 06:17:21 UTC (rev 20037) @@ -1,15 +0,0 @@ -<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> -<html> -<head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <meta name="Author" content="Doug Cutting"> -</head> -<body> -Search over indices. - -Applications usually call {@link -org.apache.lucene.search.Searcher#search(Query)} or {@link -org.apache.lucene.search.Searcher#search(Query,Filter)}. - -</body> -</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 04:51:40
|
Revision: 20036 http://sourceforge.net/p/gate/code/20036 Author: markagreenwood Date: 2017-02-01 04:51:37 +0000 (Wed, 01 Feb 2017) Log Message: ----------- moved another class from core into a plugin where it belongs, and fixed some javadoc Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/main/java/gate/corpora/MimeType.java gate/branches/sawdust2/notes.txt Added Paths: ----------- gate/branches/sawdust2/plugins/Schema_Annotation_Editor/src/main/java/gate/gui/annedit/JNullableTextField.java Removed Paths: ------------- gate/branches/sawdust2/gate-core/src/main/java/gate/gui/annedit/JNullableTextField.java Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/corpora/MimeType.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/corpora/MimeType.java 2017-02-01 03:01:32 UTC (rev 20035) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/corpora/MimeType.java 2017-02-01 04:51:37 UTC (rev 20036) @@ -36,7 +36,7 @@ /** * Two MIME Types are equal if their types and subtypes coincide. - * @param other the othe MIME Type to be compared with this one. + * @param obj the othe MIME Type to be compared with this one. * @return true if the two MIME Types are the same. */ @Override @@ -57,7 +57,7 @@ /** * The hashcode is composed (by addition) from the hashcodes for the type and * subtype. - * @return and integer. + * @return an integer hashcode */ @Override public int hashCode() { Deleted: gate/branches/sawdust2/gate-core/src/main/java/gate/gui/annedit/JNullableTextField.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/gui/annedit/JNullableTextField.java 2017-02-01 03:01:32 UTC (rev 20035) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/gui/annedit/JNullableTextField.java 2017-02-01 04:51:37 UTC (rev 20036) @@ -1,230 +0,0 @@ -/* - * Copyright (c) 1995-2011, 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 2, June 1991 (in the distribution as file licence.html, - * and also available at http://gate.ac.uk/gate/licence.html). - - * Valentin Tablan, 15 Apr 2011 - * - * $Id$ - */ -package gate.gui.annedit; - -import gate.gui.MainFrame; - -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import javax.swing.AbstractAction; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; - -/** - * An encapsulation of {@link JTextField} and a {@link JButton} that allows - * the text value to be set to null by pressing the button. Provides the minimal - * API required for the needs of {@link SchemaFeaturesEditor}. - */ -public class JNullableTextField extends JPanel { - private static final long serialVersionUID = -1530694436281692216L; - - protected class NullifyTextAction extends AbstractAction { - private static final long serialVersionUID = -7807829141939910776L; - - public NullifyTextAction() { - super(null, MainFrame.getIcon("delete")); - putValue(SHORT_DESCRIPTION, "Removes this feature completely"); - } - - @Override - public void actionPerformed(ActionEvent e) { - textField.setText(null); - text = null; - fireRemoveUpdate(null); - } - } - - /** - * The button used to clear (nullify) the textual value. - */ - protected JButton nullifyButton; - - /** - * The text field used for editing the textual value. - */ - protected JTextField textField; - - /** - * The normal background colour for the text field. - */ - protected Color normalBgColor; - - /** - * The colour used for the text field's background when the value is null. - */ - protected Color nullBgColor = new Color(200, 250, 255); - - /** - * My document listeners. - */ - protected Set<DocumentListener> documentListeners; - - /** - * The text value, which can be null - */ - protected String text = null; - - /** - * Creates a new {@link JNullableTextField} widget. - */ - public JNullableTextField() { - initGui(); - initListeners(); - } - - /** - * Sets the value edited by this component. Will cause an insertUpdate - * notification to all {@link DocumentListener}s associated with this - * component (see {@link #addDocumentListener(DocumentListener)}. - * @param text - */ - public void setText(String text) { - textField.setText(text); - this.text = text; - fireInsertUpdate(null); - } - - /** - * Gets the value currently being edited. Unlike {@link JTextField}, this - * value may be null (if {@link #setText(String)} was called previously with - * a <code>null</code> value, of the delete button was pressed by the user). - */ - public String getText() { - return text; - } - - /** - * Sets the number of columns for the included {@link JTextField}, see - * {@link JTextField#setColumns(int)}. - */ - public void setColumns(int cols) { - textField.setColumns(cols); - } - - protected void initGui() { - setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); - - textField = new JTextField(); - add(textField); - add(Box.createHorizontalStrut(2)); - nullifyButton = new JButton(new NullifyTextAction()); - add(nullifyButton); - - normalBgColor = textField.getBackground(); - } - - protected void initListeners() { - documentListeners = Collections.synchronizedSet( - new HashSet<DocumentListener>()); - - final DocumentListener tfDocumentListener = new DocumentListener() { - @Override - public void removeUpdate(DocumentEvent e) { - text = textField.getText(); - fireRemoveUpdate(e); - } - - @Override - public void insertUpdate(DocumentEvent e) { - text = textField.getText(); - fireInsertUpdate(e); - } - - @Override - public void changedUpdate(DocumentEvent e) { - fireChangedUpdate(e); - } - }; - - textField.getDocument().addDocumentListener(tfDocumentListener); - - textField.addPropertyChangeListener("document", new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - textField.getDocument().addDocumentListener(tfDocumentListener); - } - }); - - // listen to our own events, and highlight null value - addDocumentListener(new DocumentListener() { - @Override - public void removeUpdate(DocumentEvent e) { - valueChanged(); - } - @Override - public void insertUpdate(DocumentEvent e) { - valueChanged(); - } - - @Override - public void changedUpdate(DocumentEvent e) { } - - private void valueChanged() { - if(getText() == null) { - textField.setBackground(nullBgColor); - } else { - textField.setBackground(normalBgColor); - } - } - }); - - } - - /** - * Registers a new {@link DocumentListener} with this component. The provided - * listener will be forwarded all the events generated by the encapsulated - * {@link JTextField}. An event will also be generated when the user presses - * the delete button, causing the text value to be nullified. - * @param listener - */ - public void addDocumentListener(DocumentListener listener) { - documentListeners.add(listener); - } - - /** - * Removes a previously registered listener (see - * {@link #addDocumentListener(DocumentListener)}). - * @param listener - */ - public void removeDocumentListener(DocumentListener listener) { - documentListeners.remove(listener); - } - - - protected void fireChangedUpdate(DocumentEvent e) { - for(DocumentListener aListener : documentListeners) - aListener.changedUpdate(e); - } - - protected void fireInsertUpdate(DocumentEvent e) { - for(DocumentListener aListener : documentListeners) - aListener.insertUpdate(e); - } - - protected void fireRemoveUpdate(DocumentEvent e) { - for(DocumentListener aListener : documentListeners) - aListener.removeUpdate(e); - } -} Modified: gate/branches/sawdust2/notes.txt =================================================================== --- gate/branches/sawdust2/notes.txt 2017-02-01 03:01:32 UTC (rev 20035) +++ gate/branches/sawdust2/notes.txt 2017-02-01 04:51:37 UTC (rev 20036) @@ -66,3 +66,4 @@ ================== alignment plugin has metadata in creole.xml not as annotations +do we want to drop binary jape and apps Copied: gate/branches/sawdust2/plugins/Schema_Annotation_Editor/src/main/java/gate/gui/annedit/JNullableTextField.java (from rev 20035, gate/branches/sawdust2/gate-core/src/main/java/gate/gui/annedit/JNullableTextField.java) =================================================================== --- gate/branches/sawdust2/plugins/Schema_Annotation_Editor/src/main/java/gate/gui/annedit/JNullableTextField.java (rev 0) +++ gate/branches/sawdust2/plugins/Schema_Annotation_Editor/src/main/java/gate/gui/annedit/JNullableTextField.java 2017-02-01 04:51:37 UTC (rev 20036) @@ -0,0 +1,230 @@ +/* + * Copyright (c) 1995-2011, 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 2, June 1991 (in the distribution as file licence.html, + * and also available at http://gate.ac.uk/gate/licence.html). + + * Valentin Tablan, 15 Apr 2011 + * + * $Id$ + */ +package gate.gui.annedit; + +import gate.gui.MainFrame; + +import java.awt.Color; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import javax.swing.AbstractAction; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; + +/** + * An encapsulation of {@link JTextField} and a {@link JButton} that allows + * the text value to be set to null by pressing the button. Provides the minimal + * API required for the needs of {@link SchemaFeaturesEditor}. + */ +public class JNullableTextField extends JPanel { + private static final long serialVersionUID = -1530694436281692216L; + + protected class NullifyTextAction extends AbstractAction { + private static final long serialVersionUID = -7807829141939910776L; + + public NullifyTextAction() { + super(null, MainFrame.getIcon("delete")); + putValue(SHORT_DESCRIPTION, "Removes this feature completely"); + } + + @Override + public void actionPerformed(ActionEvent e) { + textField.setText(null); + text = null; + fireRemoveUpdate(null); + } + } + + /** + * The button used to clear (nullify) the textual value. + */ + protected JButton nullifyButton; + + /** + * The text field used for editing the textual value. + */ + protected JTextField textField; + + /** + * The normal background colour for the text field. + */ + protected Color normalBgColor; + + /** + * The colour used for the text field's background when the value is null. + */ + protected Color nullBgColor = new Color(200, 250, 255); + + /** + * My document listeners. + */ + protected Set<DocumentListener> documentListeners; + + /** + * The text value, which can be null + */ + protected String text = null; + + /** + * Creates a new {@link JNullableTextField} widget. + */ + public JNullableTextField() { + initGui(); + initListeners(); + } + + /** + * Sets the value edited by this component. Will cause an insertUpdate + * notification to all {@link DocumentListener}s associated with this + * component (see {@link #addDocumentListener(DocumentListener)}. + * @param text + */ + public void setText(String text) { + textField.setText(text); + this.text = text; + fireInsertUpdate(null); + } + + /** + * Gets the value currently being edited. Unlike {@link JTextField}, this + * value may be null (if {@link #setText(String)} was called previously with + * a <code>null</code> value, of the delete button was pressed by the user). + */ + public String getText() { + return text; + } + + /** + * Sets the number of columns for the included {@link JTextField}, see + * {@link JTextField#setColumns(int)}. + */ + public void setColumns(int cols) { + textField.setColumns(cols); + } + + protected void initGui() { + setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); + + textField = new JTextField(); + add(textField); + add(Box.createHorizontalStrut(2)); + nullifyButton = new JButton(new NullifyTextAction()); + add(nullifyButton); + + normalBgColor = textField.getBackground(); + } + + protected void initListeners() { + documentListeners = Collections.synchronizedSet( + new HashSet<DocumentListener>()); + + final DocumentListener tfDocumentListener = new DocumentListener() { + @Override + public void removeUpdate(DocumentEvent e) { + text = textField.getText(); + fireRemoveUpdate(e); + } + + @Override + public void insertUpdate(DocumentEvent e) { + text = textField.getText(); + fireInsertUpdate(e); + } + + @Override + public void changedUpdate(DocumentEvent e) { + fireChangedUpdate(e); + } + }; + + textField.getDocument().addDocumentListener(tfDocumentListener); + + textField.addPropertyChangeListener("document", new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + textField.getDocument().addDocumentListener(tfDocumentListener); + } + }); + + // listen to our own events, and highlight null value + addDocumentListener(new DocumentListener() { + @Override + public void removeUpdate(DocumentEvent e) { + valueChanged(); + } + @Override + public void insertUpdate(DocumentEvent e) { + valueChanged(); + } + + @Override + public void changedUpdate(DocumentEvent e) { } + + private void valueChanged() { + if(getText() == null) { + textField.setBackground(nullBgColor); + } else { + textField.setBackground(normalBgColor); + } + } + }); + + } + + /** + * Registers a new {@link DocumentListener} with this component. The provided + * listener will be forwarded all the events generated by the encapsulated + * {@link JTextField}. An event will also be generated when the user presses + * the delete button, causing the text value to be nullified. + * @param listener + */ + public void addDocumentListener(DocumentListener listener) { + documentListeners.add(listener); + } + + /** + * Removes a previously registered listener (see + * {@link #addDocumentListener(DocumentListener)}). + * @param listener + */ + public void removeDocumentListener(DocumentListener listener) { + documentListeners.remove(listener); + } + + + protected void fireChangedUpdate(DocumentEvent e) { + for(DocumentListener aListener : documentListeners) + aListener.changedUpdate(e); + } + + protected void fireInsertUpdate(DocumentEvent e) { + for(DocumentListener aListener : documentListeners) + aListener.insertUpdate(e); + } + + protected void fireRemoveUpdate(DocumentEvent e) { + for(DocumentListener aListener : documentListeners) + aListener.removeUpdate(e); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-02-01 03:01:34
|
Revision: 20035 http://sourceforge.net/p/gate/code/20035 Author: markagreenwood Date: 2017-02-01 03:01:32 +0000 (Wed, 01 Feb 2017) Log Message: ----------- fixed a bunch of javadoc issues Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleAnnotationHandler.java gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Parameter.java gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Plugin.java gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java 2017-02-01 02:23:25 UTC (rev 20034) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/Gate.java 2017-02-01 03:01:32 UTC (rev 20035) @@ -1118,8 +1118,8 @@ /** * Adds the plugin to the list of known plugins. * - * @param pluginURL - * the URL for the new plugin. + * @param plugin + * the plugin to add to the list of known plugins. */ public static void addKnownPlugin(Plugin plugin) { if(knownPlugins.contains(plugin)) return; @@ -1166,8 +1166,8 @@ * Adds a new directory to the list of plugins that are loaded automatically * at start-up. * - * @param pluginUrl - * the URL for the new plugin. + * @param plugin + * the plugin to add to the list of autoload plugins. */ public static void addAutoloadPlugin(Plugin plugin) { @@ -1238,8 +1238,7 @@ * well - i.e. all the metadata relating to resources defined by this * directory will be removed from memory. * - * @param pluginURL - */ + * @param plugin the the plugin to remove from the list of known plugins public static void removeKnownPlugin(Plugin plugin) { //pluginURL = normaliseCreoleUrl(pluginURL); knownPlugins.remove(plugin); @@ -1253,8 +1252,8 @@ * loaded automatically at system start-up. This will be reflected in the * user's configuration data file. * - * @param pluginURL - * the URL to be removed. + * @param plugin + * the plugin to remove from the list of autoload plugins */ public static void removeAutoloadPlugin(Plugin plugin) { autoloadPlugins.remove(plugin); Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleAnnotationHandler.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleAnnotationHandler.java 2017-02-01 02:23:25 UTC (rev 20034) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleAnnotationHandler.java 2017-02-01 03:01:32 UTC (rev 20035) @@ -74,10 +74,10 @@ private Plugin plugin; /** - * Create an annotation handler for the given creole.xml file. + * Create an annotation handler for the given plugin * - * @param creoleFileUrl - * location of the creole.xml file. + * @param plugin + * the plugin we are to process */ public CreoleAnnotationHandler(Plugin plugin) { //this.creoleFileUrl = creoleFileUrl; Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Parameter.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Parameter.java 2017-02-01 02:23:25 UTC (rev 20034) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Parameter.java 2017-02-01 03:01:32 UTC (rev 20035) @@ -49,15 +49,11 @@ private static final long serialVersionUID = 6611664706992065985L; /** - * Constructor - * @param baseUrl the URL to the creole.xml file that defines the resource - * this parameter belongs to. This will be used a context when deriving - * default values for the parameters of type URL. - */ - /*public Parameter(URL baseUrl){ - this.baseURL = baseUrl; - }*/ - + * Construct a new Parameter for a resource in a given plugin. + * @param plugin the plugin that defines the resource + * this parameter belongs to. This will be used as context when deriving + * default values for the parameters of type URL oe ResourceReference. + */ public Parameter(Plugin plugin) { this.plugin = plugin; } 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-02-01 02:23:25 UTC (rev 20034) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/Plugin.java 2017-02-01 03:01:32 UTC (rev 20035) @@ -106,7 +106,7 @@ protected transient String name; /** - * The list of {@link Gate.ResourceInfo} objects within this plugin + * The list of {@link gate.Gate.ResourceInfo} objects within this plugin */ protected transient List<ResourceInfo> resourceInfoList = null; 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-02-01 02:23:25 UTC (rev 20034) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java 2017-02-01 03:01:32 UTC (rev 20035) @@ -203,7 +203,7 @@ } /** - * Creates a {@link java,net.URL URL} instance that can be used to access the + * Creates a {@link java.net.URL URL} instance that can be used to access the * underlying resource. It should be noted that the result is not guaranteed * to be valid long term and should never be persisted. If you want persistent * access then store the {@code ResourceReference} instance instead. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gat...@us...> - 2017-02-01 02:23:28
|
Revision: 20034 http://sourceforge.net/p/gate/code/20034 Author: gate-project Date: 2017-02-01 02:23:25 +0000 (Wed, 01 Feb 2017) Log Message: ----------- Build number update (build 5730) Modified Paths: -------------- gate/trunk/build/build.properties gate/trunk/build/build.txt Modified: gate/trunk/build/build.properties =================================================================== --- gate/trunk/build/build.properties 2017-01-31 17:40:16 UTC (rev 20033) +++ gate/trunk/build/build.properties 2017-02-01 02:23:25 UTC (rev 20034) @@ -1,4 +1,4 @@ #Build Number for ANT. Do not edit! -#Tue Jan 31 02:10:06 GMT 2017 +#Wed Feb 01 02:10:01 GMT 2017 cvs.version=$Id\: build.properties 7542 2006-07-17 14\:26\:51Z ian_roberts $ -build.number=5730 +build.number=5731 Modified: gate/trunk/build/build.txt =================================================================== --- gate/trunk/build/build.txt 2017-01-31 17:40:16 UTC (rev 20033) +++ gate/trunk/build/build.txt 2017-02-01 02:23:25 UTC (rev 20034) @@ -1 +1 @@ -5729 \ No newline at end of file +5730 \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 17:40:18
|
Revision: 20033 http://sourceforge.net/p/gate/code/20033 Author: markagreenwood Date: 2017-01-31 17:40:16 +0000 (Tue, 31 Jan 2017) Log Message: ----------- simplified the constructors slightly, updated the tests to match, and added a boat load of documentation 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-31 17:39:47 UTC (rev 20032) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/creole/ResourceReference.java 2017-01-31 17:40:16 UTC (rev 20033) @@ -17,133 +17,231 @@ import java.io.IOException; import java.io.InputStream; import java.io.Serializable; -import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; +import org.apache.log4j.Logger; + import gate.Gate; +/** + * This class provides a common way of referencing a resource regardless of + * where it is located. Specifically it allows resources stored within plugins + * to be referenced without needing to know where the resource is actually + * located as that information is determined when the resource is accessed. + * Previously most GATE components used {@link java.net.URL URL} instances to + * refer to resources and to aid in converting existing code to use + * {@code ResourceReference} instead the public API follows that of {@code URL} + * where possible. + */ public class ResourceReference implements Serializable { private static final long serialVersionUID = 2526144106607856721L; + protected static final Logger log = Logger.getLogger(ResourceReference.class); + + // internal we store the location of the resource as a URI, the exact format + // of the URI will depend on numerous factors and no specific URI scheme is + // assumed private URI uri; + /** + * Create a new instance that references a resource accessible via a known + * {@link java.net.URL URL}. While a useful constructor in it's own right this + * also allows old applications that contain URLs as parameters to PRs that + * now take a {@code ResourceReference} to continue to work as the URL will + * get passed into this constructor automatically as the application is + * reloaded. + * + * @param url + * the {@link java.net.URL URL} of the resource you wish to reference + * @throws URISyntaxException + * if the URL does not strictly conform to RFC 2396 or if it cannot + * be converted to an absolute URI + */ public ResourceReference(URL url) throws URISyntaxException { uri = url.toURI(); + + // we only support absolute URIs as there would be no way to access a + // resource at a relative URI as we wouldn't know what to resolve it against + if(!uri.isAbsolute()) + throw new URISyntaxException(uri.toString(), + "We only support absolute URIs"); } - public ResourceReference(URI uri) { + /** + * Create a new instance that references a resource described by a + * {@link java.net.URI URI}. + * + * @param uri + * the {@link java.net.URI URI} of the resource you wish to reference + * @throws URISyntaxException + * if the URI is not absolute + */ + public ResourceReference(URI uri) throws URISyntaxException { this.uri = uri; - } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((uri == null) ? 0 : uri.hashCode()); - return result; + // we only support absolute URIs as there would be no way to access a + // resource at a relative URI as we wouldn't know what to resolve it against + if(!uri.isAbsolute()) + throw new URISyntaxException(uri.toString(), + "We only support absolute URIs"); } - @Override - public boolean equals(Object obj) { - if(this == obj) return true; - if(obj == null) return false; - if(getClass() != obj.getClass()) return false; - ResourceReference other = (ResourceReference)obj; - if(uri == null) { - if(other.uri != null) return false; - } else if(!uri.equals(other.uri)) return false; - return true; - } - + /** + * Creates a new instance that references a resource within a given + * {@link gate.creole.Plugin Plugin}. + * + * @param plugin + * a {@link gate.creole.Plugin Plugin} against which to resolve the + * path. Can be null, but only if the path can be parsed as an + * absolute URI + * @param path + * the path to the resource which will be resolved against the + * {@link gate.creole.Plugin Plugin} + * @throws URISyntaxException + * if the reference cannot be converted to an absolute URI + */ public ResourceReference(Plugin plugin, String path) throws URISyntaxException { + + // if the path is null this causes problems later but it's safe to use the + // empty string instead so we'll do that if(path == null) path = ""; if(plugin != null) { + // if the plugin isn't null then we can simply resolve the path against + // it's base URI uri = plugin.getBaseURI().resolve(path); } else { + // there is no plugin so we just use the path to create the URI uri = new URI(path); } + // we only support absolute URIs as there would be no way to access a + // resource at a relative URI as we wouldn't know what to resolve it against if(!uri.isAbsolute()) - throw new URISyntaxException(path, - "Context is null and path is not absolute"); + throw new URISyntaxException(path, "We only support absolute URIs"); } - public ResourceReference(URL context, String path) - throws URISyntaxException, MalformedURLException { + /** + * Creates a new instance that references a resource identified by resolving + * the path against an existing {@code ResourceReference}. + * + * @param context + * a {@code ResourceReference} against which to resolve the path. Can + * be null, but only if the path can be parsed as an absolute URI + * @param path + * the path to the resource which will be resolved against the + * context. + * @throws URISyntaxException + * if the reference cannot be converted to an absolute URI + */ + public ResourceReference(ResourceReference context, String path) + throws URISyntaxException { - // not sure if we need this constructor as we could just assume people can - // do the right thing before calling the constructor - - uri = new URI(path); - - if(context != null && !uri.isAbsolute()) { - uri = (new URL(context, path)).toURI(); - } - - if(!uri.isAbsolute()) - throw new URISyntaxException(path, - "Context is null and path is not absolute"); - } - - public ResourceReference(URI context, String path) throws URISyntaxException { - - // not sure if we need this constructor as we could just assume people can - // do the right thing before calling the constructor - if(context != null) { - uri = context.resolve(path); - } else { - uri = new URI(path); - } - - if(!uri.isAbsolute()) - throw new URISyntaxException(path, - "Context is null and path is not absolute"); - } - - public ResourceReference(ResourceReference context, String path) - throws IOException, URISyntaxException { - if(context != null) { + // if a context is provided then try and resolve the path against the + // encapsulated URI uri = context.uri.resolve(path); } else { + // there is no context so we just use the path to create the URI uri = new URI(path); } + // we only support absolute URIs as there would be no way to access a + // resource at a relative URI as we wouldn't know what to resolve it against if(!uri.isAbsolute()) - throw new URISyntaxException(path, - "Context is null and path is not absolute"); + throw new URISyntaxException(path, "We only support absolute URIs"); } + /** + * Opens a connection to this {@code ResourceReference} and returns an + * {@code InputStream} for reading from that connection. This method is a + * shorthand for: <blockquote> + * + * <pre> + * toURL().openConnection().getInputStream() + * </pre> + * + * </blockquote> + * + * @return an input stream for reading from the URL connection. + * @exception IOException + * if an I/O exception occurs. + */ public InputStream openStream() throws IOException { return toURL().openStream(); } + /** + * Returns a {@link java.net.URLConnection URLConnection} instance that + * represents a connection to the resource referred to by this + * {@code ResourceReference}. + * <P> + * It should be noted that a URLConnection instance does not establish the + * actual network connection on creation. This will happen only when calling + * {@linkplain java.net.URLConnection#connect() URLConnection.connect()}. + * </P> + * This method is a shorthand for: <blockquote> + * + * <pre> + * toURL().openConnection() + * </pre> + * + * </blockquote> + * + * @return a {@link java.net.URLConnection URLConnection} linking to the + * underlying resource. + * @exception IOException + * if an I/O exception occurs. + */ public URLConnection openConnection() throws IOException { return toURL().openConnection(); } + /** + * Creates a {@link java,net.URL URL} instance that can be used to access the + * underlying resource. It should be noted that the result is not guaranteed + * to be valid long term and should never be persisted. If you want persistent + * access then store the {@code ResourceReference} instance instead. + * + * @return a {@link java.net.URL URL} that currently gives access to the + * referenced resource. + * @throws IOException + * if an I/O exception occurs. + */ public URL toURL() throws IOException { + // if the URI scheme is anything but creole then let java handle the + // conversion to a URL as it already knows how to do that if(!uri.getScheme().equals("creole")) return uri.toURL(); try { + // create a URI that should point to the base of the plugin in which this + // resource resides URI base = new URI("creole", uri.getAuthority(), "/", null, null); + for(Plugin plugin : Gate.getCreoleRegister().getPlugins()) { + // go through each plugin we know about until.... + if(plugin.getBaseURI().equals(base)) { - // requiring the additional . seems like a hack but I can't figure out - // any other way of doing it + // ... we find one with the base URI we are expecting and then + + // create a new URL using the base URL of the plugin and the path from + // the URI we know points to the resource + // NOTE: requiring the additional . seems like a hack return new URL(plugin.getBaseURL(), "." + uri.getPath()); } } + + // TODO if we can't find the plugin should we try loading it? + } catch(URISyntaxException e) { // this is impossible so ignore it - e.printStackTrace(); + log.debug("An impossible exception case happened, how?", e); } throw new IOException("Unable to locate URI: " + uri); @@ -161,4 +259,24 @@ public String toExternalForm() { return toString(); } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((uri == null) ? 0 : uri.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if(this == obj) return true; + if(obj == null) return false; + if(getClass() != obj.getClass()) return false; + ResourceReference other = (ResourceReference)obj; + if(uri == null) { + if(other.uri != null) return false; + } else if(!uri.equals(other.uri)) return false; + return true; + } } 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-31 17:39:47 UTC (rev 20032) +++ gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java 2017-01-31 17:40:16 UTC (rev 20033) @@ -124,17 +124,14 @@ URL creoleURL = new URL(TestDocument.getTestServerName() + "tests/creole.xml"); - ResourceReference rr = new ResourceReference(testURL, "./creole.xml"); + ResourceReference context = new ResourceReference(testURL); + ResourceReference rr = new ResourceReference(context, "./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()); + assertEquals("References do not match (2)", creoleURL, rr.toURL()); context = new ResourceReference(plugin, "html/"); rr = new ResourceReference(context, "../creole.xml"); @@ -154,27 +151,15 @@ ResourceReference rr = new ResourceReference((ResourceReference)null, path); assertEquals("String representations don't match (1)", path, rr.toString()); - rr = new ResourceReference((URL)null, path); + rr = new ResourceReference((Plugin)null, path); assertEquals("String representations don't match (2)", path, rr.toString()); - rr = new ResourceReference((URI)null, path); - assertEquals("String representations don't match (3)", path, rr.toString()); - - rr = new ResourceReference((Plugin)null, path); - assertEquals("String representations don't match (4)", path, rr.toString()); - rr = new ResourceReference( new ResourceReference(new URL("http://gate.ac.uk")), path); - assertEquals("String representations don't match (5)", path, rr.toString()); + assertEquals("String representations don't match (3)", path, rr.toString()); - rr = new ResourceReference(new URL("http://gate.ac.uk"), path); - assertEquals("String representations don't match (6)", path, rr.toString()); - - rr = new ResourceReference(new URI("http://gate.ac.uk"), path); - assertEquals("String representations don't match (7)", path, rr.toString()); - rr = new ResourceReference(creolePlugin, path); - assertEquals("String representations don't match (8)", path, rr.toString()); + assertEquals("String representations don't match (4)", path, rr.toString()); } public void testDefaultValue() throws Exception { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 17:39:50
|
Revision: 20032 http://sourceforge.net/p/gate/code/20032 Author: markagreenwood Date: 2017-01-31 17:39:47 +0000 (Tue, 31 Jan 2017) Log Message: ----------- make the log message a little more useful to aid in tracking down lib duplication Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/main/java/gate/util/GateClassLoader.java Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/util/GateClassLoader.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/util/GateClassLoader.java 2017-01-31 14:27:42 UTC (rev 20031) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/util/GateClassLoader.java 2017-01-31 17:39:47 UTC (rev 20032) @@ -188,7 +188,7 @@ URL url = findResource(name.replace('.', '/') + ".class"); if(url != null) log.warn(name - + " is available via both the system classpath and a plugin; the plugin classes will be ignored"); + + " is available via both the system classpath and a plugin; the plugin ("+getID()+") classes will be ignored"); // if we got to here then the class has been found via the // system This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 14:27:45
|
Revision: 20031 http://sourceforge.net/p/gate/code/20031 Author: markagreenwood Date: 2017-01-31 14:27:42 +0000 (Tue, 31 Jan 2017) Log Message: ----------- tided up the pom formatting Modified Paths: -------------- gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml Modified: gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml =================================================================== --- gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml 2017-01-31 14:24:12 UTC (rev 20030) +++ gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml 2017-01-31 14:27:42 UTC (rev 20031) @@ -1,7 +1,7 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - + <modelVersion>4.0.0</modelVersion> <parent> @@ -10,8 +10,8 @@ <!-- this should be the version of GATE you wish to build against --> <version>9.0-SNAPSHOT</version> <relativePath>../../Plugin_Base/pom.xml</relativePath> - </parent> - + </parent> + <!-- this is the description of this plugin --> <groupId>uk.ac.gate.plugins</groupId> <artifactId>stanford-corenlp</artifactId> @@ -29,7 +29,7 @@ <name>GATE</name> <url>http://gate.ac.uk</url> </organization> - + <developers> <developer> <id>gate-team</id> @@ -47,7 +47,6 @@ <artifactId>stanford-corenlp</artifactId> <version>3.6.0</version> <exclusions> - <exclusion> <!-- this is part of the JDK so stop confusing the GATE classloader --> <groupId>xml-apis</groupId> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 14:24:15
|
Revision: 20030 http://sourceforge.net/p/gate/code/20030 Author: markagreenwood Date: 2017-01-31 14:24:12 +0000 (Tue, 31 Jan 2017) Log Message: ----------- exclude xml-apis as this is part of the JDK so we don't need it Modified Paths: -------------- gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml Modified: gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml =================================================================== --- gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml 2017-01-31 13:43:37 UTC (rev 20029) +++ gate/branches/sawdust2/plugins/Stanford_CoreNLP/pom.xml 2017-01-31 14:24:12 UTC (rev 20030) @@ -46,6 +46,14 @@ <groupId>edu.stanford.nlp</groupId> <artifactId>stanford-corenlp</artifactId> <version>3.6.0</version> + <exclusions> + + <exclusion> + <!-- this is part of the JDK so stop confusing the GATE classloader --> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + </exclusion> + </exclusions> </dependency> </dependencies> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 13:43:39
|
Revision: 20029 http://sourceforge.net/p/gate/code/20029 Author: markagreenwood Date: 2017-01-31 13:43:37 +0000 (Tue, 31 Jan 2017) Log Message: ----------- the add ANNIE resources menu now does the right thing and pulls in via maven the right version of the plugin Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/main/java/gate/gui/MainFrame.java Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/gui/MainFrame.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/gui/MainFrame.java 2017-01-31 12:41:26 UTC (rev 20028) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/gui/MainFrame.java 2017-01-31 13:43:37 UTC (rev 20029) @@ -4317,10 +4317,7 @@ @Override public void actionPerformed(ActionEvent e) { try { - //TODO we should probably be pulling this in via Maven not a URL - URL pluginUrl = new File(Gate.getPluginsHome(), - ANNIEConstants.PLUGIN_DIR).toURI().toURL(); - Plugin anniePlugin = new Plugin.Directory(pluginUrl); + Plugin anniePlugin = new Plugin.Maven("uk.ac.gate.plugins", "annie", Main.version); Gate.getCreoleRegister().registerPlugin(anniePlugin); } catch(Exception ex) { log.error("Unable to load ANNIE plugin.", ex); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 12:41:28
|
Revision: 20028 http://sourceforge.net/p/gate/code/20028 Author: markagreenwood Date: 2017-01-31 12:41:26 +0000 (Tue, 31 Jan 2017) Log Message: ----------- switched from URLHolder to RRPersistence in the xgapp files which means that the creole:// entries are now URIs and not URLs which means that they work again and we can successfully access resources across plugins. On the downside it means PRs need to support ResourceReference rather than using URL as a param but in the long run I think that's a worthwhile change anyway Modified Paths: -------------- gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-en.xgapp gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-english-only.gapp Modified: gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-en.xgapp =================================================================== --- gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-en.xgapp 2017-01-31 12:39:36 UTC (rev 20027) +++ gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-en.xgapp 2017-01-31 12:41:26 UTC (rev 20028) @@ -348,9 +348,9 @@ <localMap> <entry> <string>listsURL</string> - <gate.util.persistence.PersistenceManager-URLHolder> - <urlString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/gazetteer/lists.def</urlString> - </gate.util.persistence.PersistenceManager-URLHolder> + <gate.util.persistence.PersistenceManager-RRPersistence> + <uriString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/gazetteer/lists.def</uriString> + </gate.util.persistence.PersistenceManager-RRPersistence> </entry> <entry> <string>caseSensitive</string> @@ -564,9 +564,9 @@ </entry> <entry> <string>grammarURL</string> - <gate.util.persistence.PersistenceManager-URLHolder> - <urlString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/NE/main-twitter.jape</urlString> - </gate.util.persistence.PersistenceManager-URLHolder> + <gate.util.persistence.PersistenceManager-RRPersistence> + <uriString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/NE/main-twitter.jape</uriString> + </gate.util.persistence.PersistenceManager-RRPersistence> </entry> </localMap> </initParams> Modified: gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-english-only.gapp =================================================================== --- gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-english-only.gapp 2017-01-31 12:39:36 UTC (rev 20027) +++ gate/branches/sawdust2/plugins/Twitter/src/main/resources/resources/twitie-english-only.gapp 2017-01-31 12:41:26 UTC (rev 20028) @@ -615,9 +615,9 @@ </entry> <entry> <string>listsURL</string> - <gate.util.persistence.PersistenceManager-URLHolder> - <urlString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/gazetteer/lists.def</urlString> - </gate.util.persistence.PersistenceManager-URLHolder> + <gate.util.persistence.PersistenceManager-RRPersistence> + <uriString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/gazetteer/lists.def</uriString> + </gate.util.persistence.PersistenceManager-RRPersistence> </entry> </localMap> </initParams> @@ -676,9 +676,9 @@ </entry> <entry> <string>grammarURL</string> - <gate.util.persistence.PersistenceManager-URLHolder> - <urlString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/NE/main-twitter.jape</urlString> - </gate.util.persistence.PersistenceManager-URLHolder> + <gate.util.persistence.PersistenceManager-RRPersistence> + <uriString>creole://uk.ac.gate.plugins;annie;9.0-SNAPSHOT/resources/NE/main-twitter.jape</uriString> + </gate.util.persistence.PersistenceManager-RRPersistence> </entry> <entry> <string>annotationAccessors</string> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 12:39:39
|
Revision: 20027 http://sourceforge.net/p/gate/code/20027 Author: markagreenwood Date: 2017-01-31 12:39:36 +0000 (Tue, 31 Jan 2017) Log Message: ----------- fix a cast that still assumed URLs were being used Modified Paths: -------------- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java 2017-01-31 12:35:53 UTC (rev 20026) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java 2017-01-31 12:39:36 UTC (rev 20027) @@ -123,14 +123,12 @@ if(e.getPath().getLastPathComponent() == null) return; try { - readJAPEFileContents(new URL((URL)transducer.getParameterValue("grammarURL"), e.getPath() + readJAPEFileContents(new URL(((ResourceReference)transducer.getParameterValue("grammarURL")).toURL(), e.getPath() .getLastPathComponent() + ".jape")); } - catch(MalformedURLException mue) { - mue.printStackTrace(); - } catch(ResourceInstantiationException rie) { - rie.printStackTrace(); + catch(IOException | ResourceInstantiationException ioe) { + ioe.printStackTrace(); } } }); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 12:35:56
|
Revision: 20026 http://sourceforge.net/p/gate/code/20026 Author: markagreenwood Date: 2017-01-31 12:35:53 +0000 (Tue, 31 Jan 2017) Log Message: ----------- while mostly we use URI internally it turns out you can't resolve against a jar uri as it is opaque so if the URI is opaque we try and convert it to a URL and then resolve against that to avoid any issues Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PersistenceManager.java Modified: gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PersistenceManager.java =================================================================== --- gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PersistenceManager.java 2017-01-31 11:42:34 UTC (rev 20025) +++ gate/branches/sawdust2/gate-core/src/main/java/gate/util/persistence/PersistenceManager.java 2017-01-31 12:35:53 UTC (rev 20026) @@ -535,7 +535,7 @@ //******** Helper methods just used inside the URLHolder class - private static URI combineContextAndRelative(URI context, String relative, boolean contextIsFile) { + public static URI combineContextAndRelative(URI context, String relative, boolean contextIsFile) { // make sure we always have a proper string if(relative==null) relative = ""; // we always want to interpret the part after the marker as a relative path, so @@ -563,14 +563,17 @@ return context.resolve("."); } else { // use the URL constructor to splice the two parts together - /*URL tmpUrl; - try { - tmpUrl = new URL(context,relative); - } catch (Exception ex) { - throw new GateRuntimeException("Could not create a URL from context "+context+" and relative part "+relative,ex); + if (context.isOpaque()) { + URL tmpUrl; + try { + tmpUrl = new URL(context.toURL(),relative); + return tmpUrl.toURI(); + } catch (Exception ex) { + throw new GateRuntimeException("Could not create a URL from context "+context+" and relative part "+relative,ex); + } } - return tmpUrl;*/ - return context.resolve(relative); + + return context.resolve(relative).normalize(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 11:42:36
|
Revision: 20025 http://sourceforge.net/p/gate/code/20025 Author: markagreenwood Date: 2017-01-31 11:42:34 +0000 (Tue, 31 Jan 2017) Log Message: ----------- helps if you update the subclasses as well Modified Paths: -------------- gate/branches/sawdust2/plugins/Tools/src/main/java/gate/creole/VPChunker.java Modified: gate/branches/sawdust2/plugins/Tools/src/main/java/gate/creole/VPChunker.java =================================================================== --- gate/branches/sawdust2/plugins/Tools/src/main/java/gate/creole/VPChunker.java 2017-01-31 11:30:47 UTC (rev 20024) +++ gate/branches/sawdust2/plugins/Tools/src/main/java/gate/creole/VPChunker.java 2017-01-31 11:42:34 UTC (rev 20025) @@ -70,7 +70,7 @@ defaultValue = "resources/VP/VerbGroups.jape" ) @Override - public void setGrammarURL(java.net.URL newGrammarURL) { + public void setGrammarURL(ResourceReference newGrammarURL) { super.setGrammarURL(newGrammarURL); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 11:30:49
|
Revision: 20024 http://sourceforge.net/p/gate/code/20024 Author: markagreenwood Date: 2017-01-31 11:30:47 +0000 (Tue, 31 Jan 2017) Log Message: ----------- Gazetteers now use ResourceReferences instead of URLs as well Modified Paths: -------------- gate/branches/sawdust2/plugins/ANNIE/src/main/java/com/ontotext/gate/gazetteer/HashGazetteer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/AbstractGazetteer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/DefaultGazetteer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/Gazetteer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/GazetteerEditor.java Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/com/ontotext/gate/gazetteer/HashGazetteer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/com/ontotext/gate/gazetteer/HashGazetteer.java 2017-01-31 11:13:40 UTC (rev 20023) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/com/ontotext/gate/gazetteer/HashGazetteer.java 2017-01-31 11:30:47 UTC (rev 20024) @@ -23,6 +23,7 @@ import gate.util.InvalidOffsetException; import gate.util.LuckyException; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -55,7 +56,12 @@ try { mapsList = new HashMap[1000]; definition = new LinearDefinition(); - definition.setURL(listsURL); + try { + definition.setURL(listsURL.toURL()); + } + catch (IOException e) { + throw new ResourceInstantiationException(e); + } definition.load(); int i = definition.size(); listsByNode = definition.loadLists(); Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/AbstractGazetteer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/AbstractGazetteer.java 2017-01-31 11:13:40 UTC (rev 20023) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/AbstractGazetteer.java 2017-01-31 11:30:47 UTC (rev 20024) @@ -15,16 +15,17 @@ */ package gate.creole.gazetteer; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + import gate.creole.AbstractLanguageAnalyser; import gate.creole.ResourceInstantiationException; +import gate.creole.ResourceReference; import gate.creole.metadata.CreoleParameter; import gate.creole.metadata.Optional; import gate.creole.metadata.RunTime; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - /**AbstractGazetteer * This class implements the common-for-all methods of the Gazetteer interface*/ public abstract class AbstractGazetteer @@ -46,7 +47,7 @@ * The value of this property is the URL that will be used for reading the * lists that define this Gazetteer */ - protected java.net.URL listsURL; + protected ResourceReference listsURL; /** * Should this gazetteer be case sensitive. The default value is true. @@ -112,13 +113,13 @@ } @Override - public java.net.URL getListsURL() { + public ResourceReference getListsURL() { return listsURL; } @Override @CreoleParameter(comment="The URL to the file with list of lists", suffixes="def", defaultValue="resources/gazetteer/lists.def") - public void setListsURL(java.net.URL newListsURL) { + public void setListsURL(ResourceReference newListsURL) { listsURL = newListsURL; } Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/DefaultGazetteer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/DefaultGazetteer.java 2017-01-31 11:13:40 UTC (rev 20023) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/DefaultGazetteer.java 2017-01-31 11:30:47 UTC (rev 20024) @@ -17,6 +17,8 @@ */ package gate.creole.gazetteer; +import java.io.IOException; +import java.io.IOException; import java.io.Serializable; import java.util.Arrays; import java.util.HashSet; @@ -115,7 +117,13 @@ } definition = new LinearDefinition(); definition.setSeparator(Strings.unescape(gazetteerFeatureSeparator)); - definition.setURL(listsURL); + try { + definition.setURL(listsURL.toURL()); + } + catch (IOException e) { + throw new ResourceInstantiationException(e); + } + definition.load(); int linesCnt = definition.size(); listsByNode = definition.loadLists(); Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/Gazetteer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/Gazetteer.java 2017-01-31 11:13:40 UTC (rev 20023) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/gazetteer/Gazetteer.java 2017-01-31 11:30:47 UTC (rev 20024) @@ -17,6 +17,8 @@ import java.util.Set; +import gate.creole.ResourceReference; + /**The Gazetteer interface defines the mandatory methods of a gazetteer PR. */ public interface Gazetteer extends gate.LanguageAnalyser,gate.ProcessingResource { @@ -47,11 +49,11 @@ /**Gets the url of the lists.def file * @return the url of the lists.def file */ - public java.net.URL getListsURL() ; + public ResourceReference getListsURL() ; /**Sets the url of the lists.def file * @param newListsURL the url of the lists.def file to be set */ - public void setListsURL(java.net.URL newListsURL) ; + public void setListsURL(ResourceReference newListsURL) ; /**Triggers case sensitive * @param newCaseSensitive turn on or off case sensitivity */ Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/GazetteerEditor.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/GazetteerEditor.java 2017-01-31 11:13:40 UTC (rev 20023) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/GazetteerEditor.java 2017-01-31 11:30:47 UTC (rev 20024) @@ -825,8 +825,15 @@ } // update file list name in the drop down list - File gazetteerDirectory = new File( - Files.fileFromURL(gazetteer.getListsURL()).getParent()); + File defFile = null; + try { + Files.fileFromURL(gazetteer.getListsURL().toURL()); + } + catch (IOException ioe) { + ioe.printStackTrace(); + return; + } + File gazetteerDirectory = new File(defFile.getParent()); File[] files = gazetteerDirectory.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 11:13:42
|
Revision: 20023 http://sourceforge.net/p/gate/code/20023 Author: markagreenwood Date: 2017-01-31 11:13:40 +0000 (Tue, 31 Jan 2017) Log Message: ----------- JAPE grammars are now created from ResourceReference instances and not URLs Modified Paths: -------------- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/ANNIETransducer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/Transducer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/jape/Compiler.java Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/ANNIETransducer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/ANNIETransducer.java 2017-01-31 10:41:20 UTC (rev 20022) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/ANNIETransducer.java 2017-01-31 11:13:40 UTC (rev 20023) @@ -67,7 +67,7 @@ defaultValue = "resources/NE/main.jape" ) @Override - public void setGrammarURL(java.net.URL newGrammarURL) { + public void setGrammarURL(ResourceReference newGrammarURL) { super.setGrammarURL(newGrammarURL); } Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/Transducer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/Transducer.java 2017-01-31 10:41:20 UTC (rev 20022) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/creole/Transducer.java 2017-01-31 11:13:40 UTC (rev 20023) @@ -114,7 +114,7 @@ } } else if(grammarURL != null) { if(encoding != null) { - batch = new Batch(grammarURL, encoding, new InternalStatusListener()); + batch = new Batch(grammarURL.toURL(), encoding, new InternalStatusListener()); if(enableDebugging != null) { batch.setEnableDebugging(enableDebugging.booleanValue()); } else { @@ -349,7 +349,7 @@ disjunction = "grammar", priority = 1 ) - public void setGrammarURL(java.net.URL newGrammarURL) { + public void setGrammarURL(ResourceReference newGrammarURL) { grammarURL = newGrammarURL; } @@ -358,7 +358,7 @@ * * @return a {@link java.net.URL} pointing to the grammar file. */ - public java.net.URL getGrammarURL() { + public ResourceReference getGrammarURL() { return grammarURL; } @@ -504,7 +504,7 @@ /** * The URL to the jape file used as grammar by this transducer. */ - protected java.net.URL grammarURL; + protected ResourceReference grammarURL; /** * The URL to the serialized jape file used as grammar by this transducer. Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java 2017-01-31 10:41:20 UTC (rev 20022) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/gui/jape/JapeViewer.java 2017-01-31 11:13:40 UTC (rev 20023) @@ -6,6 +6,7 @@ import gate.creole.AbstractProcessingResource; import gate.creole.AbstractVisualResource; import gate.creole.ResourceInstantiationException; +import gate.creole.ResourceReference; import gate.creole.metadata.CreoleResource; import gate.creole.metadata.GuiType; import gate.event.ProgressListener; @@ -223,9 +224,9 @@ URL japeFileURL = null; try { - japeFileURL = (URL)transducer.getParameterValue("grammarURL"); + japeFileURL = ((ResourceReference)transducer.getParameterValue("grammarURL")).toURL(); } - catch (ResourceInstantiationException rie) { + catch (ResourceInstantiationException | IOException rie) { //ignore this for now and let the null catch take over rie.printStackTrace(); } Modified: gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/jape/Compiler.java =================================================================== --- gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/jape/Compiler.java 2017-01-31 10:41:20 UTC (rev 20022) +++ gate/branches/sawdust2/plugins/ANNIE/src/main/java/gate/jape/Compiler.java 2017-01-31 11:13:40 UTC (rev 20023) @@ -19,6 +19,7 @@ import java.io.*; import java.net.URL; import gate.Gate; +import gate.creole.ResourceReference; import gate.creole.Transducer; /** @@ -70,7 +71,7 @@ public static void compile(URL jape, File ser) throws Exception { Transducer transducer = new Transducer(); - transducer.setGrammarURL(jape); + transducer.setGrammarURL(new ResourceReference(jape)); transducer.setEncoding(defaultEncoding); transducer.init(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2017-01-31 10:41:22
|
Revision: 20022 http://sourceforge.net/p/gate/code/20022 Author: markagreenwood Date: 2017-01-31 10:41:20 +0000 (Tue, 31 Jan 2017) Log Message: ----------- another test to check none file URLs are persisted properly inside ResourceReference instances Modified Paths: -------------- gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java 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-31 10:39:06 UTC (rev 20021) +++ gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestResourceReference.java 2017-01-31 10:41:20 UTC (rev 20022) @@ -210,6 +210,9 @@ rr = new ResourceReference(creolePlugin,"resources/file.txt"); checkPersistence(xgappFile, rr, "creole://group;artifact;version/resources/file.txt"); + + rr = new ResourceReference(new URL("http://gate.ac.uk/resource/file.txt")); + checkPersistence(xgappFile, rr, "http://gate.ac.uk/resource/file.txt"); } public void checkPersistence(File xgappFile, ResourceReference rr1, String expected) throws Exception { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |