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));