protected void considerEntry()

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

			}
		}
	}