in taverna-interaction-activity/src/main/java/org/apache/taverna/activities/interaction/InteractionActivityRunnable.java [96:186]
public void run() {
/*
* InvocationContext context = callback.getContext();
*/
final String runId = InteractionUtils.getUsedRunId(this.requestor
.getRunId());
final String id = Sanitizer.sanitize(UUID.randomUUID().toString(), "",
true, Normalizer.Form.D);
final Map<String, Object> inputData = this.requestor.getInputData();
if (interactionPreference.getUseJetty()) {
interactionJetty.startJettyIfNecessary(credentialManager);
}
interactionJetty.startListenersIfNecessary();
try {
interactionUtils.copyFixedFile("pmrpc.js");
interactionUtils.copyFixedFile("interaction.css");
} catch (final IOException e1) {
logger.error(e1);
this.requestor.fail("Unable to copy necessary fixed file");
return;
}
synchronized (ABDERA) {
final Entry interactionNotificationMessage = this
.createBasicInteractionMessage(id, runId);
for (final String key : inputData.keySet()) {
final Object value = inputData.get(key);
if (value instanceof byte[]) {
final String replacementUrl = interactionPreference
.getPublicationUrlString(id, key);
final ByteArrayInputStream bais = new ByteArrayInputStream(
(byte[]) value);
try {
interactionUtils.publishFile(replacementUrl, bais,
runId, id);
bais.close();
inputData.put(key, replacementUrl);
} catch (final IOException e) {
logger.error(e);
this.requestor.fail("Unable to publish to " + replacementUrl);
return;
}
}
}
final String inputDataString = this.createInputDataJson(inputData);
if (inputDataString == null) {
return;
}
final String inputDataUrl = interactionPreference
.getInputDataUrlString(id);
try {
interactionUtils.publishFile(inputDataUrl, inputDataString,
runId, id);
} catch (final IOException e) {
logger.error(e);
this.requestor.fail("Unable to publish to " + inputDataUrl);
return;
}
String outputDataUrl = null;
if (!this.requestor.getInteractionType().equals(
InteractionType.Notification)) {
outputDataUrl = interactionPreference
.getOutputDataUrlString(id);
}
final String interactionUrlString = this.generateHtml(inputDataUrl,
outputDataUrl, inputData, runId, id);
try {
this.postInteractionMessage(id, interactionNotificationMessage,
interactionUrlString, runId);
} catch (IOException e) {
logger.error(e);
this.requestor.fail("Unable to post message");
return;
}
if (!this.requestor.getInteractionType().equals(
InteractionType.Notification)) {
responseFeedListener.registerInteraction(
interactionNotificationMessage, this.requestor);
} else {
this.requestor.carryOn();
}
}
}