// .scheduleDynamically();
// }
}
protected void handleWSComponent(Node node) throws WorkflowException {
WSComponent wsComponent = ((WSComponent) node.getComponent());
QName portTypeQName = wsComponent.getPortTypeQName();
Invoker invoker = this.invokerMap.get(node);
// We do this because invokers cannot be cached because the puretls
// expires
if (invoker != null) {
this.invokerMap.remove(invoker);
}
final WSNode wsNode = (WSNode) node;
String wsdlLocation = InterpreterUtil.getEPR(wsNode);
final String gfacURLString = this.getConfig().getConfiguration().getGFacURL().toString();
if (null == wsdlLocation) {
if (gfacURLString.startsWith("https")) {
LeadContextHeader leadCtxHeader = null;
// try {
// leadCtxHeader =
// (LeadContextHeader)getInputViaInteractor(WorkflowExecutionMessage.INPUT_LEAD_CONTEXT_HEADER,
// wsNode);
// } catch (Exception e1) {
// throw new WorkflowException(e1);
// }
try {
leadCtxHeader = XBayaUtil.buildLeadContextHeader(this.getWorkflow(), this.getConfig().getConfiguration(), new MonitorConfiguration(this
.getConfig().getConfiguration().getBrokerURL(), this.config.getTopic(), true, this.getConfig().getConfiguration()
.getMessageBoxURL()), wsNode.getID(), null);
// if (this.config.getMode() ==
// WorkflowInterpreterConfiguration.GUI_MODE) {
// leadCtxHeader = XBayaUtil.buildLeadContextHeader(
// this.getWorkflow(),
// this.getConfig().getConfiguration(),
// new
// MonitorConfiguration(this.getConfig().getConfiguration()
// .getBrokerURL(), this.config.getTopic(), true,
// this.getConfig().getConfiguration().getMessageBoxURL()),
// wsNode.getID(), null);
// } else {
// leadCtxHeader = XBayaUtil.buildLeadContextHeader(
// this.getWorkflow(),
// this.getConfig().getConfiguration(),
// new
// MonitorConfiguration(this.getConfig().getConfiguration()
// .getBrokerURL(), this.config.getTopic(), true,
// this.getConfig().getConfiguration().getMessageBoxURL()),
// wsNode.getID(), null);
// }
} catch (URISyntaxException e) {
throw new WorkflowException(e);
}
leadCtxHeader.setServiceId(node.getID());
try {
leadCtxHeader.setWorkflowId(new URI(this.getWorkflow().getName()));
// We do this so that the wsdl resolver can is setup
// wsdlresolver.getInstance is static so once this is
// done
// rest of the loading should work.
XBayaSecurity.init();
} catch (URISyntaxException e) {
throw new WorkflowRuntimeException(e);
}
/*
* Resource Mapping Header
*/
if (this.resourceMapping != null) {
leadCtxHeader.setResourceMapping(this.resourceMapping);
}
/*
* If there is a instance control component connects to this
* component send information in soap header
*/
for (Node n : wsNode.getControlInPort().getFromNodes()) {
if (n instanceof InstanceNode) {
// TODO make it as constant
LeadResourceMapping x = new LeadResourceMapping("AMAZON");
x.addAttribute("ACCESS_KEY", AmazonCredential.getInstance().getAwsAccessKeyId());
x.addAttribute("SECRET_KEY", AmazonCredential.getInstance().getAwsSecretAccessKey());
if (((InstanceNode) n).isStartNewInstance()) {
x.addAttribute("AMI_ID", ((InstanceNode) n).getIdAsValue());
x.addAttribute("INS_TYPE", ((InstanceNode) n).getInstanceType());
} else {
x.addAttribute("INS_ID", ((InstanceNode) n).getIdAsValue());
}
x.addAttribute("USERNAME", ((InstanceNode) n).getUsername());
// set to leadHeader
leadCtxHeader.setResourceMapping(x);
}
}
invoker = new WorkflowInvokerWrapperForGFacInvoker(portTypeQName, gfacURLString, this.config.getMonitor().getConfiguration().getMessageBoxURL()
.toString(), leadCtxHeader, this.config.getNotifier().createServiceNotificationSender(node.getID()));
} else {
// invoker=(Invoker)getInputViaInteractor(WorkflowExecutionMessage.INPUT_GFAC_INVOKER,
// new GFacInvokerData(gfacEmbeddedMode,portTypeQName,
// WSDLUtil.wsdlDefinitions5ToWsdlDefintions3(wsNode
// .getComponent().getWSDL()), node.getID(),
// this.engine.getMonitor().getConfiguration()
// .getMessageBoxURL().toASCIIString(),
// this.engine.getMonitor().getConfiguration().getBrokerURL().toASCIIString(),
// this.config.getNotifier(), this.config.getTopic(),
// this.engine.getConfiguration().getJcrComponentRegistry().getRegistry(),
// portTypeQName.getLocalPart(),this.engine.getConfiguration()));
if (this.config.isGfacEmbeddedMode()) {
invoker = new EmbeddedGFacInvoker(portTypeQName, WSDLUtil.wsdlDefinitions5ToWsdlDefintions3(wsNode.getComponent().getWSDL()), node.getID(),
this.config.getMessageBoxURL().toASCIIString(), this.config.getMessageBrokerURL().toASCIIString(), this.config.getNotifier(),
this.config.getTopic(), this.config.getRegistry(), portTypeQName.getLocalPart(), this.config.getConfiguration());
} else {
invoker = new GenericInvoker(portTypeQName, WSDLUtil.wsdlDefinitions5ToWsdlDefintions3(wsNode.getComponent().getWSDL()), node.getID(),
this.config.getMessageBoxURL().toASCIIString(), gfacURLString, this.config.getNotifier());
}
}
} else {
if (wsdlLocation.endsWith("/")) {
wsdlLocation = wsdlLocation.substring(0, wsdlLocation.length() - 1);
}
if (!wsdlLocation.endsWith("?wsdl")) {
wsdlLocation += "?wsdl";
}
invoker = new GenericInvoker(portTypeQName, wsdlLocation, node.getID(), this.getConfig().getConfiguration().getMessageBoxURL().toString(),
gfacURLString, this.config.getNotifier());
}
invoker.setup();
this.invokerMap.put(node, invoker);
invoker.setOperation(wsComponent.getOperationName());
// find inputs
List<DataPort> inputPorts = node.getInputPorts();
ODEClient odeClient = new ODEClient();
for (DataPort port : inputPorts) {