You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2013/01/20 00:55:43 UTC

svn commit: r1435763 - in /stanbol/trunk/enhancer/generic/nlp-json/src: main/java/org/apache/stanbol/enhancer/nlp/json/ main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ test/java/org/apache/stanbol/enhancer/nlp/json/

Author: rwesten
Date: Sat Jan 19 23:55:42 2013
New Revision: 1435763

URL: http://svn.apache.org/viewvc?rev=1435763&view=rev
Log:
STANBOL-878, STANBOL-893: Some API changes of the Parser related to the usage in the RESTful NLP Analysis engine

Modified:
    stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextParser.java
    stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeParserRegistry.java
    stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeSerializerRegistry.java
    stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextSerializerAndParserTest.java

Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextParser.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextParser.java?rev=1435763&r1=1435762&r2=1435763&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextParser.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextParser.java Sat Jan 19 23:55:42 2013
@@ -58,8 +58,7 @@ public class AnalyzedTextParser {
     public static final AnalyzedTextParser getDefaultInstance(){
         if(defaultInstance == null){
             defaultInstance = new AnalyzedTextParser(
-                ValueTypeParserRegistry.getInstance(),
-                AnalysedTextFactory.getDefaultInstance());
+                ValueTypeParserRegistry.getInstance());
         }
         return defaultInstance;
     }
@@ -76,36 +75,32 @@ public class AnalyzedTextParser {
      * Usages outside an OSGI environment should prefer to use the
      * {@link #getDefaultInstance()} instance to obtain the singleton instance.
      * @param vtsr
-     * @param atf
      */
-    public AnalyzedTextParser(ValueTypeParserRegistry vtpr, AnalysedTextFactory atf){
+    public AnalyzedTextParser(ValueTypeParserRegistry vtpr){
         if(vtpr == null){
             throw new IllegalArgumentException("The parsed ValueTypeParserRegistry MUST NOT be NULL!");
         }
-        if(atf == null){
-            throw new IllegalArgumentException("The parsed AnalyzedTextFactory MUST NOT be NULL!");
-        }
         this.valueTypeParserRegistry = vtpr;
-        this.analysedTextFactory = atf;
     }
     
     @Reference
     protected ValueTypeParserRegistry valueTypeParserRegistry;
     
-    @Reference
-    protected AnalysedTextFactory analysedTextFactory;
     /**
-     * Parses an {@link AnalysedText} instance from the {@link InputStream}. The
-     * analyzed text needs also to be parsed as the serialized data to usually
-     * not include those information
-     * @param in
-     * @param charset
-     * @param blob The blob to create the AnalyzedText for. As the Blob is not
-     * part of the parsed data it must be provided
-     * @return
-     * @throws IOException
+     * Parses {@link AnalysedText} {@link Span}s including annotations from the 
+     * {@link InputStream}. The {@link AnalysedText} instance that is going to
+     * be enrichted with the parsed data needs to be parsed. In the simplest case
+     * the caller can create an empty instance by using a 
+     * {@link AnalysedTextFactory}.
+     * @param in The stream to read the data from
+     * @param charset the {@link Charset} used by the stream
+     * @param at The {@link AnalysedText} instance used to add the data to
+     * @return the parsed {@link AnalysedText} instance enrichted with the
+     * information parsed from the Stream
+     * @throws IOException on any Error while reading or parsing the data
+     * from the Stream
      */
-    public AnalysedText parse(InputStream in, Charset charset, final Blob blob) throws IOException {
+    public AnalysedText parse(InputStream in, Charset charset, final AnalysedText at) throws IOException {
         if(in == null){
             throw new IllegalArgumentException("The parsed InputStream MUST NOT be NULL!");
         }
@@ -124,10 +119,9 @@ public class AnalyzedTextParser {
             throw new IOException("The value of the 'span' field MUST BE an Json Array!");
         }
         boolean first = true;
-        AnalysedText at = null;
         while(parser.nextValue() == JsonToken.START_OBJECT){
             if(first){
-                at = parseAnalyzedTextSpan(parser.readValueAsTree(), blob);
+                parseAnalyzedTextSpan(parser.readValueAsTree(), at);
                 first = false;
             } else {
                 parseSpan(at, parser.readValueAsTree());
@@ -136,7 +130,7 @@ public class AnalyzedTextParser {
         return at;
     }
 
-    private AnalysedText parseAnalyzedTextSpan(JsonNode node, Blob blob) throws IOException {
+    private void parseAnalyzedTextSpan(JsonNode node, AnalysedText at) throws IOException {
         if(node.isObject()){
             ObjectNode jSpan = (ObjectNode)node;
             int[] spanPos = new int[]{-1,-1}; 
@@ -146,13 +140,11 @@ public class AnalyzedTextParser {
                 throw new IOException("The AnalyzedText span MUST have the SpanType 'text', a "
                         + "start position of '0' and an end position (ignored, json: "+jSpan);
             }
-            AnalysedText at = analysedTextFactory.createAnalysedText(blob);
             if(at.getEnd() != spanPos[1]){
                 throw new IOException("The size of the local text '"+at.getEnd()+"' does not "
                     + "match the span of the parsed AnalyzedText ["+spanPos[0]+","+spanPos[1]+"]!");
             }
             parseAnnotations(at, jAnnotations);
-            return at;
         } else {
             throw new IOException("Unable to parse AnalyzedText span form JsonNode "+node+" (expected JSON object)!");
         }

Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeParserRegistry.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeParserRegistry.java?rev=1435763&r1=1435762&r2=1435763&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeParserRegistry.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeParserRegistry.java Sat Jan 19 23:55:42 2013
@@ -173,7 +173,8 @@ public class ValueTypeParserRegistry {
             parserLock.writeLock().lock();
             try {
                 List<ServiceReference> refs = valueTypeParserRefs.get(vts.getType());
-                if(refs != null && refs.remove(reference) && refs.isEmpty()){
+                if(refs != null && refs.remove(reference) && refs.isEmpty() &&
+                        valueTypeParsers != null){ //not yet deactivated
                     valueTypeParsers.remove(vts.getType());
                 }
             } finally {

Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeSerializerRegistry.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeSerializerRegistry.java?rev=1435763&r1=1435762&r2=1435763&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeSerializerRegistry.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ValueTypeSerializerRegistry.java Sat Jan 19 23:55:42 2013
@@ -175,7 +175,8 @@ public class ValueTypeSerializerRegistry
             serializerLock.writeLock().lock();
             try {
                 List<ServiceReference> refs = valueTypeSerializerRefs.get(vts.getType());
-                if(refs != null && refs.remove(reference) && refs.isEmpty()){
+                if(refs != null && refs.remove(reference) && refs.isEmpty()
+                        && valueTypeSerializers != null){ //not yet deactivated
                     valueTypeSerializers.remove(vts.getType());
                 }
             } finally {

Modified: stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextSerializerAndParserTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextSerializerAndParserTest.java?rev=1435763&r1=1435762&r2=1435763&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextSerializerAndParserTest.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/AnalyzedTextSerializerAndParserTest.java Sat Jan 19 23:55:42 2013
@@ -176,7 +176,8 @@ public class AnalyzedTextSerializerAndPa
         Assert.assertTrue(serialized.contains("\"class\" : \"org.apache.stanbol.enhancer.nlp.morpho.MorphoFeatures\""));
         //deserialize
         AnalyzedTextParser parser = AnalyzedTextParser.getDefaultInstance();
-        AnalysedText parsedAt = parser.parse(new ByteArrayInputStream(data), null, textBlob.getValue());
+        AnalysedText parsedAt = parser.parse(new ByteArrayInputStream(data), null, 
+            atFactory.createAnalysedText(textBlob.getValue()));
         Assert.assertEquals(analysedTextWithData, parsedAt);
         Iterator<Span> origSpanIt = analysedTextWithData.getEnclosed(EnumSet.allOf(SpanTypeEnum.class));
         Iterator<Span> parsedSpanIt = parsedAt.getEnclosed(EnumSet.allOf(SpanTypeEnum.class));