You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2014/07/12 00:21:29 UTC
[16/20] updating xbaya gui to the new airavata
http://git-wip-us.apache.org/repos/asf/airavata/blob/3e6c815a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java
----------------------------------------------------------------------
diff --git a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java
index 5f9420c..3efc49d 100644
--- a/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java
+++ b/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/interpretor/WorkflowInterpretorSkeleton.java
@@ -1,572 +1,571 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-package org.apache.airavata.xbaya.interpretor;
-
-import org.apache.airavata.client.AiravataAPIFactory;
-import org.apache.airavata.client.api.AiravataAPI;
-import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
-import org.apache.airavata.client.api.exception.DescriptorAlreadyExistsException;
-import org.apache.airavata.client.stub.interpretor.NameValue;
-import org.apache.airavata.client.tools.PeriodicExecutorThread;
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.AiravataUtils;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.common.utils.ServiceUtils;
-import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
-import org.apache.airavata.commons.gfac.type.HostDescription;
-import org.apache.airavata.schemas.gfac.GlobusHostType;
-import org.apache.airavata.schemas.gfac.GsisshHostType;
-import org.apache.airavata.schemas.gfac.SSHHostType;
-import org.apache.airavata.schemas.wec.ContextHeaderDocument;
-import org.apache.airavata.workflow.model.component.ComponentException;
-import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
-import org.apache.airavata.workflow.model.graph.GraphException;
-import org.apache.airavata.workflow.model.graph.system.InputNode;
-import org.apache.airavata.workflow.model.ode.ODEClient;
-import org.apache.airavata.workflow.model.wf.Workflow;
-import org.apache.airavata.workflow.model.wf.WorkflowExecutionState;
-import org.apache.airavata.ws.monitor.MonitorException;
-import org.apache.airavata.xbaya.XBayaConfiguration;
-import org.apache.airavata.xbaya.XBayaConstants;
-import org.apache.airavata.xbaya.concurrent.PredicatedTaskRunner;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
-import org.apache.axiom.soap.SOAPHeader;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.engine.ServiceLifeCycle;
-import org.apache.xmlbeans.XmlException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.*;
-//import org.apache.airavata.registry.api.AiravataRegistry2;
-
-/**
- * WorkflowInterpretorSkeleton java skeleton for the axisService
- */
-public class WorkflowInterpretorSkeleton implements ServiceLifeCycle {
- private static final Logger log = LoggerFactory.getLogger(WorkflowInterpretorSkeleton.class);
-
-// public static final String PROXYSERVER = "myproxy.url";
- public static final String MSGBOX = "msgbox";
- public static final String GFAC = "gfac";
- public static final String BROKER = "broker";
- public static final String MYPROXY_USER = "myproxy.user";
- public static final String MYPROXY_PASS = "myproxy.pass";
- public static final String MYPROXY_SERVER = "myproxy.server";
- public static final String MYPROXY_LIFETIME = "myproxy.life";
- public static final String TRUSTED_CERT_LOCATION = "trusted.cert.location";
-
- public static boolean provenance = false;
- public static final String PROVENANCE = "provenance";
- public static String systemUserName = "";
- public static String systemUserPW = "";
- public static boolean runInThread = false;
- public static final String RUN_IN_THREAD = "runInThread";
- public static Boolean gfacEmbeddedMode = true;
- private static PredicatedTaskRunner runner = null;
-// public static JCRComponentRegistry jcrComponentRegistry = null;
- private static AiravataAPI airavataAPI=null;
- public static int provenanceWriterThreadPoolSize = 1;
- public static final String PROVENANCE_WRITER_THREAD_POOL_SIZE = "provenanceWriterThreadPoolSize";
- public static final int JCR_AVAIALABILITY_WAIT_INTERVAL = 1000 * 10;
- public static final String GFAC_EMBEDDED = "gfac.embedded";
- public static ConfigurationContext configurationContext;
- public static final String SERVICE_NAME="WorkflowInterpretor";
- public static boolean notInterrupted = true;
- public Map<String, WorkflowInterpreterConfiguration> workflowConfigurations=new HashMap<String, WorkflowInterpreterConfiguration>();
- private WorkflowInterpreterInteractor interactor;
- private String gateway;
-
- protected static final String SERVICE_URL = "interpreter_service_url";
-
- protected static final String JCR_REG = "jcr_registry";
-
- protected WIServiceThread thread;
-
- private AiravataAPI getAiravataAPI(){
- if (airavataAPI==null) {
- try {
- systemUserName = ServerSettings.getSystemUser();
- systemUserPW = ServerSettings.getSystemUserPassword();
- gateway = ServerSettings.getSystemUserGateway();
- airavataAPI = AiravataAPIFactory.getAPI(gateway, systemUserName);
- } catch (ApplicationSettingsException e) {
- log.error("Unable to read the properties file", e);
- } catch (AiravataAPIInvocationException e) {
- log.error("Unable to create Airavata API", e);
- }
- }
- return airavataAPI;
- }
-
- private WorkflowInterpreterInteractor getInteractor(){
- if (interactor==null){
- interactor=new SSWorkflowInterpreterInteractorImpl();
- }
- return interactor;
- }
-
- public void startUp(final ConfigurationContext configctx, AxisService service) {
- AiravataUtils.setExecutionAsServer();
- new Thread(){
- @Override
- public void run() {
- try {
- Thread.sleep(JCR_AVAIALABILITY_WAIT_INTERVAL);
- } catch (InterruptedException e1) {
- e1.printStackTrace();
- }
- try {
- // Airavata deployer have to configure these properties,but if user send them alone the incoming message
- // We are overwriting those values only for that particular request
- configctx.setProperty(MYPROXY_PASS, ServerSettings.getSetting(MYPROXY_PASS));
- configctx.setProperty(MYPROXY_USER, ServerSettings.getSetting(MYPROXY_USER));
- configctx.setProperty(MYPROXY_LIFETIME,ServerSettings.getSetting(MYPROXY_LIFETIME));
- configctx.setProperty(TRUSTED_CERT_LOCATION,ServerSettings.getSetting(TRUSTED_CERT_LOCATION));
- configctx.setProperty(MYPROXY_SERVER,ServerSettings.getSetting(MYPROXY_SERVER));
- provenanceWriterThreadPoolSize = Integer.parseInt((String) ServerSettings.getSetting(PROVENANCE_WRITER_THREAD_POOL_SIZE));
- if("true".equals(ServerSettings.getSetting(PROVENANCE))){
- provenance = true;
- runner = new PredicatedTaskRunner(provenanceWriterThreadPoolSize);
- try {
- List<HostDescription> hostList = getDefinedHostDescriptions();
- for(HostDescription host:hostList){
- // This will avoid the changes user is doing to one of the predefined Hosts during a restart of the system
- AiravataAPI registry = getAiravataAPI();
- if(!registry.getApplicationManager().isHostDescriptorExists(host.getType().getHostName())){
- log.debug("Saving the predefined Host: " + host.getType().getHostName());
- registry.getApplicationManager().addHostDescription(host);
- }
- }
- } catch (DescriptorAlreadyExistsException e) {
- e.printStackTrace();
- } catch (AiravataAPIInvocationException e) {
- e.printStackTrace();
-
- }
- }else{
- provenance = false;
- }
- if("true".equals(ServerSettings.getSetting(RUN_IN_THREAD))){
- runInThread = true;
- }else{
- runInThread = false;
- }
-
- if("true".equals(ServerSettings.getSetting(GFAC_EMBEDDED))){
- gfacEmbeddedMode = true;
- }else{
- gfacEmbeddedMode = false;
- }
-
- //save the interpreter service url in context
- String localAddress = ServiceUtils.generateServiceURLFromConfigurationContext(configctx,SERVICE_NAME);
- configctx.setProperty(SERVICE_URL,new URI(localAddress));
- configctx.setProperty(JCR_REG,getAiravataAPI());
- /*
- * Heart beat message to registry
- */
- thread = new WIServiceThread(getAiravataAPI(), configctx);
- thread.start();
- } catch (IOException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- } catch (URISyntaxException e) {
- e.printStackTrace();
- } catch (ApplicationSettingsException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
- WorkflowInterpretorSkeleton.configurationContext = configctx;
- }
- }.start();
-
- }
-
- public void suspendWorkflow(String experimentId)throws Exception{
- if (workflowConfigurations.containsKey(experimentId)){
- if (getInteractor().isExecutionPaused(workflowConfigurations.get(experimentId))){
- throw new Exception("Experiment '"+experimentId+"' is already paused!!!");
- }else{
- log.info("Suspending workflow execution "+experimentId+"...");
- getInteractor().pauseExecution(workflowConfigurations.get(experimentId));
- }
- }else{
- throw new Exception("Invalid Experiment id: Experiment "+experimentId+" not running");
- }
- }
-
- public void resumeWorkflow(String experimentId)throws Exception{
- if (workflowConfigurations.containsKey(experimentId)){
- if (getInteractor().isExecutionPaused(workflowConfigurations.get(experimentId)) || workflowConfigurations.get(experimentId).getWorkflow().getExecutionState()==WorkflowExecutionState.STOPPED){
- log.info("Resuming workflow execution "+experimentId+"...");
- getInteractor().resumeExecution(workflowConfigurations.get(experimentId));
-
- }else{
- throw new Exception("Experiment '"+experimentId+"' is not suspended!!!");
- }
- }else{
- //TODO chk to see if the experiment is present in registry if so reload it and resume execution else error
- throw new Exception("Invalid Experiment id: Experiment "+experimentId+" not running");
- }
- }
-
- public void haltWorkflow(String experimentId)throws Exception{
- if (workflowConfigurations.containsKey(experimentId)){
- log.info("Terminating workflow execution "+experimentId+"...");
- getInteractor().terminateExecution(workflowConfigurations.get(experimentId));
- }else{
- throw new Exception("Invalid Experiment id: Experiment "+experimentId+" not running");
- }
- }
-
- /**
- * @param workflowAsString
- * @param topic
- * @param inputs
- * @return
- * @throws XMLStreamException
- */
- public java.lang.String launchWorkflow(java.lang.String workflowAsString, java.lang.String topic, NameValue[] inputs) throws XMLStreamException {
- OMElement workflowContext = getWorkflowContextHeader();
- if(workflowContext == null){
- workflowContext = AXIOMUtil.stringToOM("<wor:context-header xmlns:wor=\"http://airavata.apache.org/schemas/wec/2012/05\">\n" +
- " <wor:soa-service-eprs>\n" +
- " <wor:gfac-url></wor:gfac-url>\n" +
- " <wor:registry-url></wor:registry-url>\n" +
- " </wor:soa-service-eprs>\n" +
- " <wor:workflow-monitoring-context>\n" +
- " <wor:experiment-id></wor:experiment-id>\n" +
- " <wor:workflow-instance-id xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\" />\n" +
- " <wor:event-publish-epr></wor:event-publish-epr>\n" +
- " <wor:msg-box-epr></wor:msg-box-epr>\n" +
- " </wor:workflow-monitoring-context>\n" +
- " <wor:workflow-scheduling-context />\n" +
- " <wor:security-context />\n" +
- "</wor:context-header>");
- }
- Map<String, String> configuration = new HashMap<String, String>();
- WorkflowContextHeaderBuilder workflowContextHeaderBuilder = parseContextHeader(workflowContext, configuration);
- String user = workflowContextHeaderBuilder.getSubmissionUser();
-
- String s = null;
- try {
- s = setupAndLaunch(workflowAsString, topic, ServerSettings.getSystemUserGateway(),
- user,inputs, configuration, runInThread, workflowContextHeaderBuilder);
- } catch (AiravataAPIInvocationException e) {
- log.error(e.getMessage());
- } catch (ApplicationSettingsException e) {
- log.error(e.getMessage());
- }
- return s;
- }
-
- private OMElement getWorkflowContextHeader() {
- MessageContext currentMessageContext = MessageContext.getCurrentMessageContext();
- SOAPHeader header = currentMessageContext.getEnvelope().getHeader();
- Iterator<?> childrenWithName = header.getChildrenWithName(new QName("http://airavata.apache.org/schemas/wec/2012/05", "context-header"));
- if (childrenWithName.hasNext()) {
- return (OMElement) childrenWithName.next();
- } else {
- return null;
- }
- }
-
- private WorkflowContextHeaderBuilder parseContextHeader(OMElement workflowContext, Map<String, String> configuration) throws XMLStreamException {
- ContextHeaderDocument parse = null;
- try {
- parse = ContextHeaderDocument.Factory.parse(workflowContext.toStringWithConsume());
- String msgBox = parse.getContextHeader().getWorkflowMonitoringContext().getMsgBoxEpr();
- if(msgBox == null || "".equals(msgBox)){
- msgBox = getAiravataAPI().getAiravataManager().getMessageBoxServiceURL().toASCIIString();
- }
- String msgBroker = parse.getContextHeader().getWorkflowMonitoringContext().getEventPublishEpr();
- if(msgBroker == null || "".equals(msgBroker)){
- msgBroker = getAiravataAPI().getAiravataManager().getEventingServiceURL().toASCIIString();
- }
- String gfac = parse.getContextHeader().getSoaServiceEprs().getGfacUrl();
-// if(gfac == null || "".equals(gfac)){
-// gfac = getAiravataAPI().getAiravataManager().getGFaCURLs().get(0).toString();
+///*
+// *
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements. See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership. The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License. You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied. See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// *
+// */
+//
+//package org.apache.airavata.xbaya.interpretor;
+//
+//import org.apache.airavata.client.AiravataAPIFactory;
+//import org.apache.airavata.client.api.AiravataAPI;
+//import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
+//import org.apache.airavata.client.api.exception.DescriptorAlreadyExistsException;
+//import org.apache.airavata.client.stub.interpretor.NameValue;
+//import org.apache.airavata.client.tools.PeriodicExecutorThread;
+//import org.apache.airavata.common.exception.ApplicationSettingsException;
+//import org.apache.airavata.common.utils.AiravataUtils;
+//import org.apache.airavata.common.utils.ServerSettings;
+//import org.apache.airavata.common.utils.ServiceUtils;
+//import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
+//import org.apache.airavata.commons.gfac.type.HostDescription;
+//import org.apache.airavata.schemas.gfac.GlobusHostType;
+//import org.apache.airavata.schemas.gfac.GsisshHostType;
+//import org.apache.airavata.schemas.gfac.SSHHostType;
+//import org.apache.airavata.schemas.wec.ContextHeaderDocument;
+//import org.apache.airavata.workflow.model.component.ComponentException;
+//import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
+//import org.apache.airavata.workflow.model.graph.GraphException;
+//import org.apache.airavata.workflow.model.graph.system.InputNode;
+//import org.apache.airavata.workflow.model.ode.ODEClient;
+//import org.apache.airavata.workflow.model.wf.Workflow;
+//import org.apache.airavata.workflow.model.wf.WorkflowExecutionState;
+//import org.apache.airavata.ws.monitor.MonitorException;
+//import org.apache.airavata.xbaya.XBayaConfiguration;
+//import org.apache.airavata.xbaya.XBayaConstants;
+//import org.apache.airavata.xbaya.concurrent.PredicatedTaskRunner;
+//import org.apache.axiom.om.OMElement;
+//import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+//import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
+//import org.apache.axiom.soap.SOAPHeader;
+//import org.apache.axis2.context.ConfigurationContext;
+//import org.apache.axis2.context.MessageContext;
+//import org.apache.axis2.description.AxisService;
+//import org.apache.axis2.engine.ServiceLifeCycle;
+//import org.apache.xmlbeans.XmlException;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//
+//import javax.xml.namespace.QName;
+//import javax.xml.stream.XMLInputFactory;
+//import javax.xml.stream.XMLStreamException;
+//import javax.xml.stream.XMLStreamReader;
+//import java.io.IOException;
+//import java.net.URI;
+//import java.net.URISyntaxException;
+//import java.net.URL;
+//import java.util.*;
+////import org.apache.airavata.registry.api.AiravataRegistry2;
+//
+///**
+// * WorkflowInterpretorSkeleton java skeleton for the axisService
+// */
+//public class WorkflowInterpretorSkeleton implements ServiceLifeCycle {
+// private static final Logger log = LoggerFactory.getLogger(WorkflowInterpretorSkeleton.class);
+//
+//// public static final String PROXYSERVER = "myproxy.url";
+// public static final String MSGBOX = "msgbox";
+// public static final String GFAC = "gfac";
+// public static final String BROKER = "broker";
+// public static final String MYPROXY_USER = "myproxy.user";
+// public static final String MYPROXY_PASS = "myproxy.pass";
+// public static final String MYPROXY_SERVER = "myproxy.server";
+// public static final String MYPROXY_LIFETIME = "myproxy.life";
+// public static final String TRUSTED_CERT_LOCATION = "trusted.cert.location";
+//
+// public static boolean provenance = false;
+// public static final String PROVENANCE = "provenance";
+// public static String systemUserName = "";
+// public static String systemUserPW = "";
+// public static boolean runInThread = false;
+// public static final String RUN_IN_THREAD = "runInThread";
+// public static Boolean gfacEmbeddedMode = true;
+// private static PredicatedTaskRunner runner = null;
+//// public static JCRComponentRegistry jcrComponentRegistry = null;
+// private static AiravataAPI airavataAPI=null;
+// public static int provenanceWriterThreadPoolSize = 1;
+// public static final String PROVENANCE_WRITER_THREAD_POOL_SIZE = "provenanceWriterThreadPoolSize";
+// public static final int JCR_AVAIALABILITY_WAIT_INTERVAL = 1000 * 10;
+// public static final String GFAC_EMBEDDED = "gfac.embedded";
+// public static ConfigurationContext configurationContext;
+// public static final String SERVICE_NAME="WorkflowInterpretor";
+// public static boolean notInterrupted = true;
+// public Map<String, WorkflowInterpreterConfiguration> workflowConfigurations=new HashMap<String, WorkflowInterpreterConfiguration>();
+// private WorkflowInterpreterInteractor interactor;
+// private String gateway;
+//
+// protected static final String SERVICE_URL = "interpreter_service_url";
+//
+// protected static final String JCR_REG = "jcr_registry";
+//
+// protected WIServiceThread thread;
+//
+// private AiravataAPI getAiravataAPI(){
+// if (airavataAPI==null) {
+// try {
+// systemUserName = ServerSettings.getSystemUser();
+// systemUserPW = ServerSettings.getSystemUserPassword();
+// gateway = ServerSettings.getSystemUserGateway();
+// airavataAPI = AiravataAPIFactory.getAPI(gateway, systemUserName);
+// } catch (ApplicationSettingsException e) {
+// log.error("Unable to read the properties file", e);
+// } catch (AiravataAPIInvocationException e) {
+// log.error("Unable to create Airavata API", e);
+// }
+// }
+// return airavataAPI;
+// }
+//
+// private WorkflowInterpreterInteractor getInteractor(){
+// if (interactor==null){
+// interactor=new SSWorkflowInterpreterInteractorImpl();
+// }
+// return interactor;
+// }
+//
+// public void startUp(final ConfigurationContext configctx, AxisService service) {
+// AiravataUtils.setExecutionAsServer();
+// new Thread(){
+// @Override
+// public void run() {
+// try {
+// Thread.sleep(JCR_AVAIALABILITY_WAIT_INTERVAL);
+// } catch (InterruptedException e1) {
+// e1.printStackTrace();
+// }
+// try {
+// // Airavata deployer have to configure these properties,but if user send them alone the incoming message
+// // We are overwriting those values only for that particular request
+// configctx.setProperty(MYPROXY_PASS, ServerSettings.getSetting(MYPROXY_PASS));
+// configctx.setProperty(MYPROXY_USER, ServerSettings.getSetting(MYPROXY_USER));
+// configctx.setProperty(MYPROXY_LIFETIME,ServerSettings.getSetting(MYPROXY_LIFETIME));
+// configctx.setProperty(TRUSTED_CERT_LOCATION,ServerSettings.getSetting(TRUSTED_CERT_LOCATION));
+// configctx.setProperty(MYPROXY_SERVER,ServerSettings.getSetting(MYPROXY_SERVER));
+// provenanceWriterThreadPoolSize = Integer.parseInt((String) ServerSettings.getSetting(PROVENANCE_WRITER_THREAD_POOL_SIZE));
+// if("true".equals(ServerSettings.getSetting(PROVENANCE))){
+// provenance = true;
+// runner = new PredicatedTaskRunner(provenanceWriterThreadPoolSize);
+// try {
+// List<HostDescription> hostList = getDefinedHostDescriptions();
+// for(HostDescription host:hostList){
+// // This will avoid the changes user is doing to one of the predefined Hosts during a restart of the system
+// AiravataAPI registry = getAiravataAPI();
+// if(!registry.getApplicationManager().isHostDescriptorExists(host.getType().getHostName())){
+// log.debug("Saving the predefined Host: " + host.getType().getHostName());
+// registry.getApplicationManager().addHostDescription(host);
+// }
+// }
+// } catch (DescriptorAlreadyExistsException e) {
+// e.printStackTrace();
+// } catch (AiravataAPIInvocationException e) {
+// e.printStackTrace();
+//
+// }
+// }else{
+// provenance = false;
+// }
+// if("true".equals(ServerSettings.getSetting(RUN_IN_THREAD))){
+// runInThread = true;
+// }else{
+// runInThread = false;
+// }
+//
+// if("true".equals(ServerSettings.getSetting(GFAC_EMBEDDED))){
+// gfacEmbeddedMode = true;
+// }else{
+// gfacEmbeddedMode = false;
+// }
+//
+// //save the interpreter service url in context
+// String localAddress = ServiceUtils.generateServiceURLFromConfigurationContext(configctx,SERVICE_NAME);
+// configctx.setProperty(SERVICE_URL,new URI(localAddress));
+// configctx.setProperty(JCR_REG,getAiravataAPI());
+// /*
+// * Heart beat message to registry
+// */
+// thread = new WIServiceThread(getAiravataAPI(), configctx);
+// thread.start();
+// } catch (IOException e) {
+// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+// } catch (URISyntaxException e) {
+// e.printStackTrace();
+// } catch (ApplicationSettingsException e) {
+// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+// }
+// WorkflowInterpretorSkeleton.configurationContext = configctx;
+// }
+// }.start();
+//
+// }
+//
+// public void suspendWorkflow(String experimentId)throws Exception{
+// if (workflowConfigurations.containsKey(experimentId)){
+// if (getInteractor().isExecutionPaused(workflowConfigurations.get(experimentId))){
+// throw new Exception("Experiment '"+experimentId+"' is already paused!!!");
+// }else{
+// log.info("Suspending workflow execution "+experimentId+"...");
+// getInteractor().pauseExecution(workflowConfigurations.get(experimentId));
+// }
+// }else{
+// throw new Exception("Invalid Experiment id: Experiment "+experimentId+" not running");
+// }
+// }
+//
+// public void resumeWorkflow(String experimentId)throws Exception{
+// if (workflowConfigurations.containsKey(experimentId)){
+// if (getInteractor().isExecutionPaused(workflowConfigurations.get(experimentId)) || workflowConfigurations.get(experimentId).getWorkflow().getExecutionState()==WorkflowExecutionState.STOPPED){
+// log.info("Resuming workflow execution "+experimentId+"...");
+// getInteractor().resumeExecution(workflowConfigurations.get(experimentId));
+//
+// }else{
+// throw new Exception("Experiment '"+experimentId+"' is not suspended!!!");
+// }
+// }else{
+// //TODO chk to see if the experiment is present in registry if so reload it and resume execution else error
+// throw new Exception("Invalid Experiment id: Experiment "+experimentId+" not running");
+// }
+// }
+//
+// public void haltWorkflow(String experimentId)throws Exception{
+// if (workflowConfigurations.containsKey(experimentId)){
+// log.info("Terminating workflow execution "+experimentId+"...");
+// getInteractor().terminateExecution(workflowConfigurations.get(experimentId));
+// }else{
+// throw new Exception("Invalid Experiment id: Experiment "+experimentId+" not running");
+// }
+// }
+//
+// /**
+// * @param workflowAsString
+// * @param topic
+// * @param inputs
+// * @return
+// * @throws XMLStreamException
+// */
+// public java.lang.String launchWorkflow(java.lang.String workflowAsString, java.lang.String topic, NameValue[] inputs) throws XMLStreamException {
+// OMElement workflowContext = getWorkflowContextHeader();
+// if(workflowContext == null){
+// workflowContext = AXIOMUtil.stringToOM("<wor:context-header xmlns:wor=\"http://airavata.apache.org/schemas/wec/2012/05\">\n" +
+// " <wor:soa-service-eprs>\n" +
+// " <wor:gfac-url></wor:gfac-url>\n" +
+// " <wor:registry-url></wor:registry-url>\n" +
+// " </wor:soa-service-eprs>\n" +
+// " <wor:workflow-monitoring-context>\n" +
+// " <wor:experiment-id></wor:experiment-id>\n" +
+// " <wor:workflow-instance-id xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:nil=\"true\" />\n" +
+// " <wor:event-publish-epr></wor:event-publish-epr>\n" +
+// " <wor:msg-box-epr></wor:msg-box-epr>\n" +
+// " </wor:workflow-monitoring-context>\n" +
+// " <wor:workflow-scheduling-context />\n" +
+// " <wor:security-context />\n" +
+// "</wor:context-header>");
+// }
+// Map<String, String> configuration = new HashMap<String, String>();
+// WorkflowContextHeaderBuilder workflowContextHeaderBuilder = parseContextHeader(workflowContext, configuration);
+// String user = workflowContextHeaderBuilder.getSubmissionUser();
+//
+// String s = null;
+// try {
+// s = setupAndLaunch(workflowAsString, topic, ServerSettings.getSystemUserGateway(),
+// user,inputs, configuration, runInThread, workflowContextHeaderBuilder);
+// } catch (AiravataAPIInvocationException e) {
+// log.error(e.getMessage());
+// } catch (ApplicationSettingsException e) {
+// log.error(e.getMessage());
+// }
+// return s;
+// }
+//
+// private OMElement getWorkflowContextHeader() {
+// MessageContext currentMessageContext = MessageContext.getCurrentMessageContext();
+// SOAPHeader header = currentMessageContext.getEnvelope().getHeader();
+// Iterator<?> childrenWithName = header.getChildrenWithName(new QName("http://airavata.apache.org/schemas/wec/2012/05", "context-header"));
+// if (childrenWithName.hasNext()) {
+// return (OMElement) childrenWithName.next();
+// } else {
+// return null;
+// }
+// }
+//
+// private WorkflowContextHeaderBuilder parseContextHeader(OMElement workflowContext, Map<String, String> configuration) throws XMLStreamException {
+// ContextHeaderDocument parse = null;
+// try {
+// parse = ContextHeaderDocument.Factory.parse(workflowContext.toStringWithConsume());
+// String msgBox = parse.getContextHeader().getWorkflowMonitoringContext().getMsgBoxEpr();
+// if(msgBox == null || "".equals(msgBox)){
+// msgBox = getAiravataAPI().getAiravataManager().getMessageBoxServiceURL().toASCIIString();
// }
- configuration.put(BROKER, msgBroker);
- configuration.put(GFAC, gfac);
- configuration.put(MSGBOX, msgBox);
- } catch (XmlException e) {
- log.error(e.getMessage());
- } catch (AiravataAPIInvocationException e) {
- log.error(e.getMessage());
- }
- String submissionUser = workflowContext.getAttributeValue(new QName(workflowContext.getNamespace().getNamespaceURI(), "submissionUser"));
- WorkflowContextHeaderBuilder workflowContextHeaderBuilder = new WorkflowContextHeaderBuilder(parse.getContextHeader());
- workflowContextHeaderBuilder.setSubmissionUser(submissionUser);
- return workflowContextHeaderBuilder;
- }
-
- public String setupAndLaunch(String workflowAsString, String experimentId, String gatewayId, String username,
- Map<String,String> inputs,boolean inNewThread,WorkflowContextHeaderBuilder builder) throws AiravataAPIInvocationException{
- List<NameValue> inputData=new ArrayList<NameValue>();
- for (String inputName : inputs.keySet()) {
- NameValue input = new NameValue();
- input.setName(inputName);
- input.setValue(inputs.get(inputName));
- inputData.add(input);
- }
- Map<String, String> configuration = new HashMap<String, String>();
- configuration.put(BROKER, getAiravataAPI().getAiravataManager().getEventingServiceURL().toASCIIString());
- configuration.put(MSGBOX, getAiravataAPI().getAiravataManager().getMessageBoxServiceURL().toASCIIString());
-
- return setupAndLaunch(workflowAsString, experimentId, gatewayId, username, inputData.toArray(new NameValue[]{}), configuration, inNewThread, builder);
- }
-
- private String setupAndLaunch(String workflowAsString, String topic, String gatewayId, String username,
- NameValue[] inputs,Map<String,String>configurations,boolean inNewThread,
- WorkflowContextHeaderBuilder builder) throws AiravataAPIInvocationException{
- log.debug("Launch is called for topic:"+topic);
-
- Workflow workflow = null;
- try {
- workflow = new Workflow(workflowAsString);
- log.debug("Workflow Object created");
- } catch (GraphException e1) {
- e1.printStackTrace();
- } catch (ComponentException e1) {
- e1.printStackTrace();
- }
- log.debug("Setting Input values");
- List<InputNode> inputNodes = new ODEClient().getInputNodes(workflow);
- for (InputNode inputNode : inputNodes) {
- for (NameValue input : inputs) {
- if (inputNode.getID().equals(input.getName())) {
- inputNode.setDefaultValue(input.getValue());
- break;
- }
- }
- if (inputNode.getDefaultValue() == null) {
- throw new WorkflowRuntimeException("Could not find a input value for component with name :" + inputNode.getName());
- }
-
- }
- log.debug("Input all set");
-
- XBayaConfiguration conf = null;
- try {
- conf = getConfiguration(configurations);
- conf.setTopic(topic);
- conf.setRunWithCrossProduct(true);
- } catch (URISyntaxException e1) {
- throw new WorkflowRuntimeException(e1);
- }
- WorkflowInterpretorEventListener listener = null;
- WorkflowInterpreter interpreter = null;
- AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(gatewayId, username);
- WorkflowInterpreterConfiguration workflowInterpreterConfiguration = new WorkflowInterpreterConfiguration(workflow, topic, conf.getMessageBoxURL(), conf.getBrokerURL(), airavataAPI, conf, null, null);
- workflowInterpreterConfiguration.setGfacEmbeddedMode(gfacEmbeddedMode);
- workflowInterpreterConfiguration.setActOnProvenance(provenance);
-
- if (builder.getSecurityContext().getAmazonWebservices() != null) {
- workflowInterpreterConfiguration.setAwsSecretKey(builder.getSecurityContext().getAmazonWebservices().getSecretAccessKey());
- workflowInterpreterConfiguration.setAwsAccessKey(builder.getSecurityContext().getAmazonWebservices().getAccessKeyId());
- }
- // WorkflowInterpreter object should create prior creation of Listener, because listener needs the threadlocal variable
- interpreter = new WorkflowInterpreter(workflowInterpreterConfiguration, getInteractor());
- listener = new WorkflowInterpretorEventListener(workflow, conf);
- try {
- log.debug("start listener set");
- listener.start();
- } catch (MonitorException e1) {
- e1.printStackTrace();
- }
-
- WorkflowContextHeaderBuilder.setCurrentContextHeader(builder.getContextHeader());
-
- final WorkflowInterpretorEventListener finalListener = listener;
- conf.setAiravataAPI(getAiravataAPI());
-
- final WorkflowInterpreter finalInterpreter = interpreter;
-// interpreter.setActOnProvenance(provenance);
- interpreter.setProvenanceWriter(runner);
- final String experimentId = topic;
- log.debug("Created the interpreter");
- if(inNewThread){
- runInThread(finalInterpreter,finalListener,experimentId,builder);
- }else{
- executeWorkflow(finalInterpreter, finalListener, experimentId);
- }
- log.info("Experiment launched :" + topic);
- return topic;
- }
-
- private void runInThread(final WorkflowInterpreter interpreter,final WorkflowInterpretorEventListener listener,final String experimentId,final WorkflowContextHeaderBuilder builder) {
- new Thread(new Runnable() {
-
- public void run() {
- WorkflowContextHeaderBuilder.setCurrentContextHeader(builder.getContextHeader());
- executeWorkflow(interpreter, listener, experimentId);
- }
- }).start();
- }
-
- private void executeWorkflow(WorkflowInterpreter interpreter, WorkflowInterpretorEventListener listener,String experimentId) {
- try {
- workflowConfigurations.put(experimentId,interpreter.getConfig());
- interpreter.scheduleDynamically();
- log.debug("Interpreter invoked...");
- } catch (Exception e) {
- throw new WorkflowRuntimeException(e);
- } finally {
- if (workflowConfigurations.containsKey(experimentId)){
- workflowConfigurations.remove(experimentId);
- }
- /*
- * stop listener no matter what happens
- */
+// String msgBroker = parse.getContextHeader().getWorkflowMonitoringContext().getEventPublishEpr();
+// if(msgBroker == null || "".equals(msgBroker)){
+// msgBroker = getAiravataAPI().getAiravataManager().getEventingServiceURL().toASCIIString();
+// }
+// String gfac = parse.getContextHeader().getSoaServiceEprs().getGfacUrl();
+//// if(gfac == null || "".equals(gfac)){
+//// gfac = getAiravataAPI().getAiravataManager().getGFaCURLs().get(0).toString();
+//// }
+// configuration.put(BROKER, msgBroker);
+// configuration.put(GFAC, gfac);
+// configuration.put(MSGBOX, msgBox);
+// } catch (XmlException e) {
+// log.error(e.getMessage());
+// } catch (AiravataAPIInvocationException e) {
+// log.error(e.getMessage());
+// }
+// String submissionUser = workflowContext.getAttributeValue(new QName(workflowContext.getNamespace().getNamespaceURI(), "submissionUser"));
+// WorkflowContextHeaderBuilder workflowContextHeaderBuilder = new WorkflowContextHeaderBuilder(parse.getContextHeader());
+// workflowContextHeaderBuilder.setSubmissionUser(submissionUser);
+// return workflowContextHeaderBuilder;
+// }
+//
+// public String setupAndLaunch(String workflowAsString, String experimentId, String gatewayId, String username,
+// Map<String,String> inputs,boolean inNewThread,WorkflowContextHeaderBuilder builder) throws AiravataAPIInvocationException{
+// List<NameValue> inputData=new ArrayList<NameValue>();
+// for (String inputName : inputs.keySet()) {
+// NameValue input = new NameValue();
+// input.setName(inputName);
+// input.setValue(inputs.get(inputName));
+// inputData.add(input);
+// }
+// Map<String, String> configuration = new HashMap<String, String>();
+// configuration.put(BROKER, getAiravataAPI().getAiravataManager().getEventingServiceURL().toASCIIString());
+// configuration.put(MSGBOX, getAiravataAPI().getAiravataManager().getMessageBoxServiceURL().toASCIIString());
+//
+// return setupAndLaunch(workflowAsString, experimentId, gatewayId, username, inputData.toArray(new NameValue[]{}), configuration, inNewThread, builder);
+// }
+//
+// private String setupAndLaunch(String workflowAsString, String topic, String gatewayId, String username,
+// NameValue[] inputs,Map<String,String>configurations,boolean inNewThread,
+// WorkflowContextHeaderBuilder builder) throws AiravataAPIInvocationException{
+// log.debug("Launch is called for topic:"+topic);
+//
+// Workflow workflow = null;
+// try {
+// workflow = new Workflow(workflowAsString);
+// log.debug("Workflow Object created");
+// } catch (GraphException e1) {
+// e1.printStackTrace();
+// } catch (ComponentException e1) {
+// e1.printStackTrace();
+// }
+// log.debug("Setting Input values");
+// List<InputNode> inputNodes = new ODEClient().getInputNodes(workflow);
+// for (InputNode inputNode : inputNodes) {
+// for (NameValue input : inputs) {
+// if (inputNode.getID().equals(input.getName())) {
+// inputNode.setDefaultValue(input.getValue());
+// break;
+// }
+// }
+// if (inputNode.getDefaultValue() == null) {
+// throw new WorkflowRuntimeException("Could not find a input value for component with name :" + inputNode.getName());
+// }
+//
+// }
+// log.debug("Input all set");
+//
+// XBayaConfiguration conf = null;
+// try {
+// conf = getConfiguration(configurations);
+// conf.setTopic(topic);
+// conf.setRunWithCrossProduct(true);
+// } catch (URISyntaxException e1) {
+// throw new WorkflowRuntimeException(e1);
+// }
+// WorkflowInterpretorEventListener listener = null;
+// WorkflowInterpreter interpreter = null;
+// AiravataAPI airavataAPI = AiravataAPIFactory.getAPI(gatewayId, username);
+// WorkflowInterpreterConfiguration workflowInterpreterConfiguration = new WorkflowInterpreterConfiguration(workflow, topic, conf.getMessageBoxURL(), conf.getBrokerURL(), airavataAPI, conf, null, null);
+// workflowInterpreterConfiguration.setGfacEmbeddedMode(gfacEmbeddedMode);
+// workflowInterpreterConfiguration.setActOnProvenance(provenance);
+//
+// if (builder.getSecurityContext().getAmazonWebservices() != null) {
+// workflowInterpreterConfiguration.setAwsSecretKey(builder.getSecurityContext().getAmazonWebservices().getSecretAccessKey());
+// workflowInterpreterConfiguration.setAwsAccessKey(builder.getSecurityContext().getAmazonWebservices().getAccessKeyId());
+// }
+// // WorkflowInterpreter object should create prior creation of Listener, because listener needs the threadlocal variable
+// interpreter = new WorkflowInterpreter(workflowInterpreterConfiguration, getInteractor());
+// listener = new WorkflowInterpretorEventListener(workflow, conf);
+// try {
+// log.debug("start listener set");
+// listener.start();
+// } catch (MonitorException e1) {
+// e1.printStackTrace();
+// }
+//
+// WorkflowContextHeaderBuilder.setCurrentContextHeader(builder.getContextHeader());
+//
+// final WorkflowInterpretorEventListener finalListener = listener;
+//
+// final WorkflowInterpreter finalInterpreter = interpreter;
+//// interpreter.setActOnProvenance(provenance);
+// interpreter.setProvenanceWriter(runner);
+// final String experimentId = topic;
+// log.debug("Created the interpreter");
+// if(inNewThread){
+// runInThread(finalInterpreter,finalListener,experimentId,builder);
+// }else{
+// executeWorkflow(finalInterpreter, finalListener, experimentId);
+// }
+// log.info("Experiment launched :" + topic);
+// return topic;
+// }
+//
+// private void runInThread(final WorkflowInterpreter interpreter,final WorkflowInterpretorEventListener listener,final String experimentId,final WorkflowContextHeaderBuilder builder) {
+// new Thread(new Runnable() {
+//
+// public void run() {
+// WorkflowContextHeaderBuilder.setCurrentContextHeader(builder.getContextHeader());
+// executeWorkflow(interpreter, listener, experimentId);
+// }
+// }).start();
+// }
+//
+// private void executeWorkflow(WorkflowInterpreter interpreter, WorkflowInterpretorEventListener listener,String experimentId) {
+// try {
+// workflowConfigurations.put(experimentId,interpreter.getConfig());
+// interpreter.scheduleDynamically();
+// log.debug("Interpreter invoked...");
+// } catch (Exception e) {
+// throw new WorkflowRuntimeException(e);
+// } finally {
+// if (workflowConfigurations.containsKey(experimentId)){
+// workflowConfigurations.remove(experimentId);
+// }
+// /*
+// * stop listener no matter what happens
+// */
+//// try {
+//// if(listener != null)
+//// listener.stop();
+//// } catch (MonitorException e) {
+//// e.printStackTrace();
+//// }
+// }
+// }
+//
+// public XBayaConfiguration getConfiguration(Map<String,String> vals) throws URISyntaxException {
+// XBayaConfiguration configuration = new XBayaConfiguration();
+// configuration.setBrokerURL(new URI(findValue(vals, BROKER, XBayaConstants.DEFAULT_BROKER_URL.toString())));
+//// configuration.setGFacURL(new URI(findValue(vals, GFAC, XBayaConstants.DEFAULT_GFAC_URL.toString())));
+// configuration.setMessageBoxURL(new URI(findValue(vals, MSGBOX, XBayaConstants.DEFAULT_MESSAGE_BOX_URL.toString())));
+// configuration.setMyProxyLifetime(XBayaConstants.DEFAULT_MYPROXY_LIFTTIME);
+// configuration.setMyProxyPort(XBayaConstants.DEFAULT_MYPROXY_PORT);
+// //This null check will fix some test failures
+// if (WorkflowInterpretorSkeleton.configurationContext != null) {
+// configuration.setMyProxyServer(findValue(vals, MYPROXY_SERVER, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_SERVER)));
+// configuration.setMyProxyPassphrase(findValue(vals, MYPROXY_PASS, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_PASS)));
+// configuration.setMyProxyUsername(findValue(vals, MYPROXY_USER, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_USER)));
+// configuration.setTrustedCertLocation(findValue(vals, TRUSTED_CERT_LOCATION, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(TRUSTED_CERT_LOCATION)));
+// configuration.setTrustedCertLocation(findValue(vals, MYPROXY_LIFETIME, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_LIFETIME)));
+// }
+// return configuration;
+// }
+//
+// private String findValue(Map<String,String> vals, String key, String defaultVal) {
+// if(vals.get(key) != null) {
+// return vals.get(key);
+// }
+// return defaultVal;
+// }
+//
+// public void shutDown(ConfigurationContext configctx, AxisService service) {
+// URI gfacURL = (URI) configctx.getProperty(SERVICE_URL);
+// if (getAiravataAPI() != null && thread != null) {
+// AiravataAPI registry = getAiravataAPI();
// try {
-// if(listener != null)
-// listener.stop();
-// } catch (MonitorException e) {
+// registry.getAiravataManager().removeWorkflowInterpreterURI(gfacURL);
+// } catch (AiravataAPIInvocationException e) {
// e.printStackTrace();
// }
- }
- }
-
- public XBayaConfiguration getConfiguration(Map<String,String> vals) throws URISyntaxException {
- XBayaConfiguration configuration = new XBayaConfiguration();
- configuration.setBrokerURL(new URI(findValue(vals, BROKER, XBayaConstants.DEFAULT_BROKER_URL.toString())));
- configuration.setGFacURL(new URI(findValue(vals, GFAC, XBayaConstants.DEFAULT_GFAC_URL.toString())));
- configuration.setMessageBoxURL(new URI(findValue(vals, MSGBOX, XBayaConstants.DEFAULT_MESSAGE_BOX_URL.toString())));
- configuration.setMyProxyLifetime(XBayaConstants.DEFAULT_MYPROXY_LIFTTIME);
- configuration.setMyProxyPort(XBayaConstants.DEFAULT_MYPROXY_PORT);
- //This null check will fix some test failures
- if (WorkflowInterpretorSkeleton.configurationContext != null) {
- configuration.setMyProxyServer(findValue(vals, MYPROXY_SERVER, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_SERVER)));
- configuration.setMyProxyPassphrase(findValue(vals, MYPROXY_PASS, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_PASS)));
- configuration.setMyProxyUsername(findValue(vals, MYPROXY_USER, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_USER)));
- configuration.setTrustedCertLocation(findValue(vals, TRUSTED_CERT_LOCATION, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(TRUSTED_CERT_LOCATION)));
- configuration.setTrustedCertLocation(findValue(vals, MYPROXY_LIFETIME, (String) WorkflowInterpretorSkeleton.configurationContext.getProperty(MYPROXY_LIFETIME)));
- }
- return configuration;
- }
-
- private String findValue(Map<String,String> vals, String key, String defaultVal) {
- if(vals.get(key) != null) {
- return vals.get(key);
- }
- return defaultVal;
- }
-
- public void shutDown(ConfigurationContext configctx, AxisService service) {
- URI gfacURL = (URI) configctx.getProperty(SERVICE_URL);
- if (getAiravataAPI() != null && thread != null) {
- AiravataAPI registry = getAiravataAPI();
- try {
- registry.getAiravataManager().removeWorkflowInterpreterURI(gfacURL);
- } catch (AiravataAPIInvocationException e) {
- e.printStackTrace();
- }
- thread.interrupt();
- try {
- thread.join();
- } catch (InterruptedException e) {
- log.warn("GFacURL update thread is interrupted");
- }
- }
- if (runner != null) {
- runner.shutDown();
- }
-
- notInterrupted = false;
- }
-
- private List<HostDescription> getDefinedHostDescriptions() {
- URL url = this.getClass().getClassLoader().getResource("host.xml");
- ArrayList<HostDescription> hostDescriptions = new ArrayList<HostDescription>();
- XMLStreamReader reader = null;
- try {
- if (url != null) {
- reader = XMLInputFactory.newInstance().createXMLStreamReader(url.openStream());
- } else {
- throw new RuntimeException("Error retrieving host.xml file. Should reside in " +
- "$SERVER_HOME/webapps/axis2/WEB-INF/classes/host.xml");
- }
- } catch (XMLStreamException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- } catch (IOException e) {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
- StAXOMBuilder builder = new StAXOMBuilder(reader);
- OMElement documentElement = builder.getDocumentElement();
- Iterator<?> server = documentElement.getChildrenWithName(new QName("server"));
- while (server.hasNext()) {
- HostDescription hostDescription = new HostDescription();
- OMElement next = (OMElement) server.next();
- if (next.getFirstChildWithName(new QName("gram.endpoint")) != null &&
- "globus".equals(next.getFirstChildWithName(new QName("type")).getText())) {
- hostDescription.getType().changeType(GlobusHostType.type);
- ((GlobusHostType) hostDescription.getType()).addGlobusGateKeeperEndPoint(next.getFirstChildWithName(new QName("gram.endpoint")).getText());
- ((GlobusHostType) hostDescription.getType()).addGridFTPEndPoint(next.getFirstChildWithName(new QName("gridftp.endpoint")).getText());
- } else if("ssh".equals(next.getFirstChildWithName(new QName("type")).getText())) {
- hostDescription.getType().changeType(SSHHostType.type);
- if(next.getFirstChildWithName(new QName("hpc.resource")) != null){
- if("true".equals(next.getFirstChildWithName(new QName("gram.endpoint")))){
- ((SSHHostType) hostDescription.getType()).setHpcResource(true);
- }
- }
- ((SSHHostType) hostDescription.getType()).setHpcResource(false);
- } else if("gsissh".equals(next.getFirstChildWithName(new QName("type")).getText())) {
- hostDescription.getType().changeType(GsisshHostType.type);
- }
- (hostDescription.getType()).setHostName(next.getFirstChildWithName(new QName("name")).getText());
- (hostDescription.getType()).setHostAddress(next.getFirstChildWithName(new QName("host")).getText());
- hostDescriptions.add(hostDescription);
- }
- return hostDescriptions;
- }
-
- public static final int URL_UPDATE_INTERVAL = 1000 * 60 * 60 * 3;
-
- class WIServiceThread extends PeriodicExecutorThread {
- private ConfigurationContext context = null;
-
- WIServiceThread(AiravataAPI registry, ConfigurationContext context) {
- super(registry);
- this.context = context;
- }
-
- @Override
- protected void updateRegistry(AiravataAPI registry) throws Exception {
- URI localAddress = (URI) this.context.getProperty(SERVICE_URL);
- registry.getAiravataManager().addWorkflowInterpreterURI(localAddress);
- log.debug("Updated Workflow Interpreter service URL in to Repository");
-
- }
- }
-}
+// thread.interrupt();
+// try {
+// thread.join();
+// } catch (InterruptedException e) {
+// log.warn("GFacURL update thread is interrupted");
+// }
+// }
+// if (runner != null) {
+// runner.shutDown();
+// }
+//
+// notInterrupted = false;
+// }
+//
+// private List<HostDescription> getDefinedHostDescriptions() {
+// URL url = this.getClass().getClassLoader().getResource("host.xml");
+// ArrayList<HostDescription> hostDescriptions = new ArrayList<HostDescription>();
+// XMLStreamReader reader = null;
+// try {
+// if (url != null) {
+// reader = XMLInputFactory.newInstance().createXMLStreamReader(url.openStream());
+// } else {
+// throw new RuntimeException("Error retrieving host.xml file. Should reside in " +
+// "$SERVER_HOME/webapps/axis2/WEB-INF/classes/host.xml");
+// }
+// } catch (XMLStreamException e) {
+// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+// } catch (IOException e) {
+// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+// }
+// StAXOMBuilder builder = new StAXOMBuilder(reader);
+// OMElement documentElement = builder.getDocumentElement();
+// Iterator<?> server = documentElement.getChildrenWithName(new QName("server"));
+// while (server.hasNext()) {
+// HostDescription hostDescription = new HostDescription();
+// OMElement next = (OMElement) server.next();
+// if (next.getFirstChildWithName(new QName("gram.endpoint")) != null &&
+// "globus".equals(next.getFirstChildWithName(new QName("type")).getText())) {
+// hostDescription.getType().changeType(GlobusHostType.type);
+// ((GlobusHostType) hostDescription.getType()).addGlobusGateKeeperEndPoint(next.getFirstChildWithName(new QName("gram.endpoint")).getText());
+// ((GlobusHostType) hostDescription.getType()).addGridFTPEndPoint(next.getFirstChildWithName(new QName("gridftp.endpoint")).getText());
+// } else if("ssh".equals(next.getFirstChildWithName(new QName("type")).getText())) {
+// hostDescription.getType().changeType(SSHHostType.type);
+// if(next.getFirstChildWithName(new QName("hpc.resource")) != null){
+// if("true".equals(next.getFirstChildWithName(new QName("gram.endpoint")))){
+// ((SSHHostType) hostDescription.getType()).setHpcResource(true);
+// }
+// }
+// ((SSHHostType) hostDescription.getType()).setHpcResource(false);
+// } else if("gsissh".equals(next.getFirstChildWithName(new QName("type")).getText())) {
+// hostDescription.getType().changeType(GsisshHostType.type);
+// }
+// (hostDescription.getType()).setHostName(next.getFirstChildWithName(new QName("name")).getText());
+// (hostDescription.getType()).setHostAddress(next.getFirstChildWithName(new QName("host")).getText());
+// hostDescriptions.add(hostDescription);
+// }
+// return hostDescriptions;
+// }
+//
+// public static final int URL_UPDATE_INTERVAL = 1000 * 60 * 60 * 3;
+//
+// class WIServiceThread extends PeriodicExecutorThread {
+// private ConfigurationContext context = null;
+//
+// WIServiceThread(AiravataAPI registry, ConfigurationContext context) {
+// super(registry);
+// this.context = context;
+// }
+//
+// @Override
+// protected void updateRegistry(AiravataAPI registry) throws Exception {
+// URI localAddress = (URI) this.context.getProperty(SERVICE_URL);
+// registry.getAiravataManager().addWorkflowInterpreterURI(localAddress);
+// log.debug("Updated Workflow Interpreter service URL in to Repository");
+//
+// }
+// }
+//}