ATransformationPipelet: don't produces single-value output sequences, but only values. HtmlToTextPipelet: Don't fail on empty input attribute.
diff --git a/core/org.eclipse.smila.processing.pipelets.test/code/src/org/eclipse/smila/processing/pipelets/test/TestHtmlToTextPipelet.java b/core/org.eclipse.smila.processing.pipelets.test/code/src/org/eclipse/smila/processing/pipelets/test/TestHtmlToTextPipelet.java
index 13b1460..41bd845 100644
--- a/core/org.eclipse.smila.processing.pipelets.test/code/src/org/eclipse/smila/processing/pipelets/test/TestHtmlToTextPipelet.java
+++ b/core/org.eclipse.smila.processing.pipelets.test/code/src/org/eclipse/smila/processing/pipelets/test/TestHtmlToTextPipelet.java
@@ -93,10 +93,7 @@
anyMap.put(pipelet.getInputName(), anyMap.getFactory().createStringValue("<html>Hello World!</html>"));
pipelet.process(getBlackboard(), new String[] { id });
anyMap = getBlackboard().getMetadata(id);
- final AnySeq output = anyMap.getSeq(pipelet.getOutputName());
- assertNotNull(output);
- assertEquals(1, output.size());
- assertEquals("Hello World!", output.getStringValue(0));
+ assertEquals("Hello World!", anyMap.getStringValue(pipelet.getOutputName()));
}
/**
@@ -113,10 +110,7 @@
.put(pipelet.getInputName(), anyMap.getFactory().createStringValue("<html>Hällo Wörld!</html>"));
pipelet.process(getBlackboard(), new String[] { id });
anyMap = getBlackboard().getMetadata(id);
- final AnySeq output = anyMap.getSeq(pipelet.getOutputName());
- assertNotNull(output);
- assertEquals(1, output.size());
- assertEquals("H\u00e4llo W\u00f6rld!", output.getStringValue(0));
+ assertEquals("H\u00e4llo W\u00f6rld!", anyMap.getStringValue(pipelet.getOutputName()));
}
/**
@@ -310,10 +304,7 @@
ConfigUtils.getConfigStream(CONFIG_BUNDLE, CONFIG_DATADIR + "/headers.html"));
pipeletRemove.process(getBlackboard(), new String[] { id });
final AnyMap anyMap = getBlackboard().getMetadata(id);
- final AnySeq output = anyMap.getSeq(pipeletRemove.getOutputName());
- assertNotNull(output);
- assertEquals(1, output.size());
- assertEquals("Hello!", output.getStringValue(0).trim());
+ assertEquals("Hello!", anyMap.getStringValue(pipeletRemove.getOutputName()).trim());
}
/**
@@ -330,15 +321,12 @@
ConfigUtils.getConfigStream(CONFIG_BUNDLE, CONFIG_DATADIR + "/meta.html"));
pipeletKeep.process(getBlackboard(), new String[] { id });
final AnyMap anyMap = getBlackboard().getMetadata(id);
- AnySeq output = anyMap.getSeq(pipeletKeep.getOutputName());
- assertNotNull(output);
- assertEquals(1, output.size());
- assertEquals("Hello World!", output.getStringValue(0).trim());
+ assertEquals("Hello World!", anyMap.getStringValue(pipeletKeep.getOutputName()).trim());
- output = anyMap.getSeq("keywords");
- assertNotNull(output);
- assertEquals(1, output.size());
- assertEquals("cat", output.getStringValue(0).trim());
+ final AnySeq keywordsSeq = anyMap.getSeq("keywords");
+ assertNotNull(keywordsSeq);
+ assertEquals(1, keywordsSeq.size());
+ assertEquals("cat", keywordsSeq.getStringValue(0).trim());
final AnySeq authorsSeq = anyMap.getSeq("authors");
assertEquals(3, authorsSeq.size());
@@ -367,10 +355,7 @@
anyMap.put(pipelet.getInputName(), anyMap.getFactory().createStringValue(htmlString));
pipelet.process(getBlackboard(), new String[] { id });
anyMap = getBlackboard().getMetadata(id);
- final AnySeq output = anyMap.getSeq(pipelet.getOutputName());
- assertNotNull(output);
- assertEquals(1, output.size());
- final String textString = output.getStringValue(0);
+ final String textString = anyMap.getStringValue(pipelet.getOutputName());
assertNotNull(filename + ": null result", textString);
_log.info(filename + ": " + textString);
}
diff --git a/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/ATransformationPipelet.java b/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/ATransformationPipelet.java
index f386065..f038104 100644
--- a/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/ATransformationPipelet.java
+++ b/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/ATransformationPipelet.java
@@ -193,11 +193,15 @@
throws ProcessingException, BlackboardAccessException {
if (!results.isEmpty()) {
if (isStoreInAttribute()) {
- final AnySeq valueSeq = DataFactory.DEFAULT.createAnySeq();
- for (final String result : results) {
- valueSeq.add(result);
+ if (results.size() == 1) {
+ blackboard.getMetadata(id).put(_outputName, results.iterator().next());
+ } else {
+ final AnySeq valueSeq = DataFactory.DEFAULT.createAnySeq();
+ for (final String result : results) {
+ valueSeq.add(result);
+ }
+ blackboard.getMetadata(id).put(_outputName, valueSeq);
}
- blackboard.getMetadata(id).put(_outputName, valueSeq);
} else {
storeResult(blackboard, id, results.iterator().next());
}
diff --git a/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/HtmlToTextPipelet.java b/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/HtmlToTextPipelet.java
index 64651dd..f143817 100644
--- a/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/HtmlToTextPipelet.java
+++ b/core/org.eclipse.smila.processing.pipelets/code/src/org/eclipse/smila/processing/pipelets/HtmlToTextPipelet.java
@@ -144,7 +144,7 @@
}
storeResults(blackboard, id, results);
storeMetadata(blackboard, id, metadata);
- } catch (final BlackboardAccessException ex) {
+ } catch (final Exception ex) {
_log.error("Error processing ID " + id, ex);
}
}
@@ -172,19 +172,21 @@
final MultiValueMap metadata) throws BlackboardAccessException, ProcessingException {
final AnyMap anyMap = blackboard.getMetadata(id);
final Any any = anyMap.get(_inputName);
- for (final Any value : any) {
- if (value.isValue()) {
- final String content = ((Value) value).asString();
- if (content != null) {
- results.add(extractText(id, content, metadata));
- }
- } else if (any.isSeq()) {
- final AnySeq sequence = (AnySeq) any;
- for (final Any element : sequence) {
- if (element.isString()) {
- final String content = ((Value) element).asString();
- if (content != null) {
- results.add(extractText(id, content, metadata));
+ if (any != null) {
+ for (final Any value : any) {
+ if (value.isValue()) {
+ final String content = ((Value) value).asString();
+ if (content != null) {
+ results.add(extractText(id, content, metadata));
+ }
+ } else if (any.isSeq()) {
+ final AnySeq sequence = (AnySeq) any;
+ for (final Any element : sequence) {
+ if (element.isString()) {
+ final String content = ((Value) element).asString();
+ if (content != null) {
+ results.add(extractText(id, content, metadata));
+ }
}
}
}