in taverna-interaction-activity/src/main/java/org/apache/taverna/activities/interaction/ResponseFeedListener.java [65:130]
protected void considerEntry(final Entry entry) {
synchronized (requestorMap) {
final String refString = getReplyTo(entry);
if (refString == null) {
return;
}
final String runId = getRunId(entry);
final String entryUrl = interactionPreference
.getFeedUrlString() + "/" + entry.getId().toASCIIString();
interactionRecorder.addResource(runId, refString, entryUrl);
if (requestorMap.containsKey(refString)) {
final InteractionRequestor requestor = requestorMap
.get(refString);
final Element statusElement = entry.getExtension(AtomUtils
.getResultStatusQName());
final String statusContent = statusElement.getText().trim();
if (!statusContent.equals(STATUS_OK)) {
cleanup(refString);
requestor.fail(statusContent);
return;
}
final String outputDataUrl = interactionPreference
.getOutputDataUrlString(refString);
// Note that this may not really exist
interactionRecorder
.addResource(runId, refString, outputDataUrl);
String content = null;
InputStream iStream;
try {
iStream = new URL(outputDataUrl).openStream();
content = IOUtils.toString(iStream);
iStream.close();
} catch (final MalformedURLException e1) {
logger.error(e1);
requestor.fail(DATA_READ_FAILED);
return;
} catch (final IOException e1) {
logger.error(e1);
requestor.fail(DATA_READ_FAILED);
return;
}
try {
final ObjectMapper mapper = new ObjectMapper();
@SuppressWarnings("unchecked")
final Map<String, Object> rootAsMap = mapper.readValue(
content, Map.class);
requestor.receiveResult(rootAsMap);
cleanup(refString);
interactionRecorder.deleteInteraction(runId, refString);
} catch (final JsonParseException e) {
logger.error(e);
} catch (final IOException e) {
logger.error(e);
} catch (final Exception e) {
logger.error(e);
}
}
}
}