You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2012/04/09 16:51:45 UTC
svn commit: r1311265 - in
/incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2:
GFacService.java reciever/GFacMessageReciever.java
Author: lahiru
Date: Mon Apr 9 14:51:45 2012
New Revision: 1311265
URL: http://svn.apache.org/viewvc?rev=1311265&view=rev
Log:
using newly added GFac API in GFac Axis2.
Modified:
incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/GFacService.java
incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/reciever/GFacMessageReciever.java
Modified: incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/GFacService.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/GFacService.java?rev=1311265&r1=1311264&r2=1311265&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/GFacService.java (original)
+++ incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/GFacService.java Mon Apr 9 14:51:45 2012
@@ -21,7 +21,6 @@
package org.apache.airavata.services.gfac.axis2;
-import java.lang.reflect.Constructor;
import java.net.URI;
import java.net.URL;
import java.util.HashMap;
@@ -30,12 +29,8 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
-import javax.jcr.Credentials;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryFactory;
-import javax.jcr.SimpleCredentials;
-
import org.apache.airavata.common.registry.api.exception.RegistryException;
+import org.apache.airavata.core.gfac.context.GFacConfiguration;
import org.apache.airavata.registry.api.AiravataRegistry;
import org.apache.airavata.registry.api.impl.AiravataJCRRegistry;
import org.apache.airavata.services.gfac.axis2.dispatchers.GFacURIBasedDispatcher;
@@ -78,6 +73,7 @@ public class GFacService implements Serv
public static final String MYPROXY_USER = "myproxy.user";
public static final String MYPROXY_PASS = "myproxy.pass";
public static final String MYPROXY_LIFE = "myproxy.life";
+ public static final String GFAC_CONFIGURATION = "gfacConfiguration";
/*
* Heart beat thread
*/
@@ -145,19 +141,11 @@ public class GFacService implements Serv
+ context.getServicePath() + "/"
+ WSConstants.GFAC_SERVICE_NAME;
log.debug("GFAC_ADDRESS:" + localAddress);
- context.setProperty(CONFIGURATION_CONTEXT_REGISTRY,
- registry);
- context.setProperty(GFAC_URL, localAddress);
- context.setProperty(TRUSTED_CERT_LOCATION,
- properties.getProperty(TRUSTED_CERT_LOCATION));
- context.setProperty(MYPROXY_USER,
- properties.getProperty(MYPROXY_USER));
- context.setProperty(MYPROXY_PASS,
- properties.getProperty(MYPROXY_PASS));
- context.setProperty(MYPROXY_SERVER,
- properties.getProperty(MYPROXY_SERVER));
- context.setProperty(MYPROXY_LIFE,
- properties.getProperty(MYPROXY_LIFE));
+
+ GFacConfiguration gfacConfig = new GFacConfiguration(properties.getProperty(MYPROXY_SERVER),properties.getProperty(MYPROXY_USER),
+ properties.getProperty(MYPROXY_PASS),Integer.parseInt(properties.getProperty(MYPROXY_LIFE)),localAddress,registry,properties.getProperty(TRUSTED_CERT_LOCATION));
+ context.setProperty(GFAC_CONFIGURATION,
+ gfacConfig);
/*
* Heart beat message to registry
*/
Modified: incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/reciever/GFacMessageReciever.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/reciever/GFacMessageReciever.java?rev=1311265&r1=1311264&r2=1311265&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/reciever/GFacMessageReciever.java (original)
+++ incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/reciever/GFacMessageReciever.java Mon Apr 9 14:51:45 2012
@@ -22,8 +22,7 @@ package org.apache.airavata.services.gfa
*/
import java.io.StringReader;
-import java.net.URI;
-import java.util.Iterator;
+import java.util.*;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
@@ -34,33 +33,14 @@ import org.apache.airavata.common.regist
import org.apache.airavata.commons.gfac.type.ActualParameter;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
import org.apache.airavata.commons.gfac.wsdl.WSDLConstants;
-import org.apache.airavata.core.gfac.context.invocation.impl.DefaultExecutionContext;
+import org.apache.airavata.core.gfac.GfacAPI;
+import org.apache.airavata.core.gfac.context.GFacConfiguration;
+import org.apache.airavata.core.gfac.context.JobContext;
import org.apache.airavata.core.gfac.context.invocation.impl.DefaultInvocationContext;
import org.apache.airavata.core.gfac.context.message.impl.ParameterContextImpl;
-import org.apache.airavata.core.gfac.context.message.impl.WorkflowContextImpl;
-import org.apache.airavata.core.gfac.context.security.impl.GSISecurityContext;
-import org.apache.airavata.core.gfac.factory.PropertyServiceFactory;
-import org.apache.airavata.core.gfac.notification.impl.LoggingNotification;
-import org.apache.airavata.core.gfac.notification.impl.WorkflowTrackingNotification;
import org.apache.airavata.core.gfac.services.GenericService;
import org.apache.airavata.registry.api.Axis2Registry;
-import org.apache.airavata.schemas.gfac.BooleanArrayType;
-import org.apache.airavata.schemas.gfac.BooleanParameterType;
-import org.apache.airavata.schemas.gfac.DoubleArrayType;
-import org.apache.airavata.schemas.gfac.DoubleParameterType;
-import org.apache.airavata.schemas.gfac.FileArrayType;
-import org.apache.airavata.schemas.gfac.FileParameterType;
-import org.apache.airavata.schemas.gfac.FloatArrayType;
-import org.apache.airavata.schemas.gfac.FloatParameterType;
-import org.apache.airavata.schemas.gfac.IntegerArrayType;
-import org.apache.airavata.schemas.gfac.IntegerParameterType;
-import org.apache.airavata.schemas.gfac.OutputParameterType;
-import org.apache.airavata.schemas.gfac.Parameter;
-import org.apache.airavata.schemas.gfac.ServiceDescriptionType;
-import org.apache.airavata.schemas.gfac.StringArrayType;
-import org.apache.airavata.schemas.gfac.StringParameterType;
-import org.apache.airavata.schemas.gfac.URIArrayType;
-import org.apache.airavata.schemas.gfac.URIParameterType;
+import org.apache.airavata.schemas.gfac.*;
import org.apache.airavata.schemas.wec.ContextHeaderDocument;
import org.apache.airavata.schemas.wec.SecurityContextDocument;
import org.apache.airavata.services.gfac.axis2.GFacService;
@@ -95,9 +75,10 @@ public class GFacMessageReciever impleme
public static final String MYPROXY_USER = "myproxy.user";
public static final String MYPROXY_PASS = "myproxy.pass";
public static final String MYPROXY_LIFE = "myproxy.life";
-
+ private GFacConfiguration gfacContext;
private GenericService service;
private Axis2Registry registry;
+ private final GfacAPI gfacAPI = new GfacAPI();
public void receive(org.apache.axis2.context.MessageContext axisRequestMsgCtx) throws AxisFault {
GFacServiceOperations operation = GFacServiceOperations.valueFrom(axisRequestMsgCtx.getOperationContext()
@@ -155,7 +136,7 @@ public class GFacMessageReciever impleme
@Override
public void run() {
try {
- invokeApplication(replyTo,serviceName, invoke, finalMessageContext);
+ invokeApplication(serviceName, invoke, finalMessageContext);
} catch (Exception e) {
// Ignore the error.
log.error("Error invoking GFac Service",e);
@@ -167,136 +148,51 @@ public class GFacMessageReciever impleme
}
}
- private OMElement invokeApplication(EndpointReference msgBoxAddr,String serviceName, OMElement input, MessageContext messageContext)
+ private OMElement invokeApplication(String serviceName, OMElement input, MessageContext messageContext)
throws Exception {
ConfigurationContext context = messageContext.getConfigurationContext();
String brokerURL = getEventBrokerURL(messageContext);
String topic = getTopic(messageContext);
OMElement outputElement = null;
+ SecurityContextDocument parse =
+ SecurityContextDocument.Factory.parse(getHeader(messageContext).getFirstChildWithName
+ (new QName("http://schemas.airavata.apache.org/workflow-execution-context", "security-context")).toStringWithConsume());
+ SecurityContextDocument.SecurityContext.GridMyproxyRepository gridMyproxyRepository = parse.getSecurityContext().getGridMyproxyRepository();
+ OMElement header = getHeader(messageContext);
+ ContextHeaderDocument document = null;
try {
- /*
- * Add notifiable object
- */
- WorkflowTrackingNotification workflowNotification = new WorkflowTrackingNotification(brokerURL, topic);
- LoggingNotification loggingNotification = new LoggingNotification();
- DefaultInvocationContext invocationContext = new DefaultInvocationContext();
- invocationContext.setExecutionContext(new DefaultExecutionContext());
- invocationContext.setServiceName(serviceName);
- invocationContext.getExecutionContext().setRegistryService(getRegistry(context));
- invocationContext.getExecutionContext().setSecurityContextHeader(getHeader(messageContext));
- invocationContext.getExecutionContext().addNotifiable(workflowNotification);
- invocationContext.getExecutionContext().addNotifiable(loggingNotification);
-
- GSISecurityContext gssContext = new GSISecurityContext();
- SecurityContextDocument parse =
- SecurityContextDocument.Factory.parse(getHeader(messageContext).getFirstChildWithName
- (new QName("http://schemas.airavata.apache.org/workflow-execution-context", "security-context")).toStringWithConsume());
- SecurityContextDocument.SecurityContext.GridMyproxyRepository gridMyproxyRepository = parse.getSecurityContext().getGridMyproxyRepository();
- if (gridMyproxyRepository==null){
- gssContext.setMyproxyPasswd((String)messageContext.getConfigurationContext().getProperty(MYPROXY_PASS));
- gssContext.setMyproxyUserName((String) messageContext.getConfigurationContext().getProperty(MYPROXY_USER));
- gssContext.setMyproxyLifetime(Integer.parseInt((String) messageContext.getConfigurationContext().getProperty(MYPROXY_LIFE)));
- gssContext.setMyproxyServer((String)messageContext.getConfigurationContext().getProperty(MYPROXY_SERVER));
- }else{
- gssContext.setMyproxyPasswd(gridMyproxyRepository.getPassword());
- gssContext.setMyproxyUserName(gridMyproxyRepository.getUsername());
- gssContext.setMyproxyLifetime(gridMyproxyRepository.getLifeTimeInhours());
- gssContext.setMyproxyServer(gridMyproxyRepository.getMyproxyServer());
- }
- gssContext.setTrustedCertLoc((String)messageContext.getConfigurationContext().getProperty(TRUSTED_CERT_LOCATION));
-
- invocationContext.addSecurityContext("myproxy",gssContext);
-
- /*
- * Add workflow context
- */
- WorkflowContextImpl workflowContext = new WorkflowContextImpl();
- workflowContext.setValue(WorkflowContextImpl.WORKFLOW_ID, URI.create(topic).toString());
- invocationContext.addMessageContext(WorkflowContextImpl.WORKFLOW_CONTEXT_NAME, workflowContext);
-
- /*
- * read from registry and set the correct parameters
- */
- ServiceDescription serviceDescription = getRegistry(context).getServiceDescription(serviceName);
-
- /*
- * Input
- */
- ParameterContextImpl inputParam = new ParameterContextImpl();
- ServiceDescriptionType serviceDescriptionType = serviceDescription.getType();
-
- for (Parameter parameter : serviceDescriptionType.getInputParametersArray()) {
- OMElement element = input.getFirstChildWithName(new QName(null,parameter.getParameterName().replaceAll(WSDLConstants.HYPHEN, WSDLConstants.HYPHEN_REPLACEMENT)));
- if (element == null) {
- throw new Exception("Parameter is not found in the message");
- }
- //todo this implementation doesn't work when there are n number of nodes connecting .. need to fix
-
-// String xmlContent = "";
-// if(!element.getChildElements().hasNext()){
-// xmlContent = "<type:GFacParameter xsi:type=\"type:" + MappingFactory.getActualParameterType(parameter.getParameterType().getType())
-// +"\" xmlns:type=\"http://schemas.airavata.apache.org/gfac/type\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + element.getText() + "</type:GFacParameter>";
-// }else{
-// xmlContent = "<type:GFacParameter xsi:type=\"type:" + MappingFactory.getActualParameterType(parameter.getParameterType().getType())
-// +"\" xmlns:type=\"http://schemas.airavata.apache.org/gfac/type\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + element.toStringWithConsume() + "</type:GFacParameter>";
-// }
-// System.out.println(xmlContent);
-// inputParam.add(parameter.getParameterName(),ActualParameter.fromXML(xmlContent));
-
- ActualParameter actualParameter = getInputActualParameter(parameter, element);
- inputParam.add(parameter.getParameterName(),actualParameter);
+ document = ContextHeaderDocument.Factory.parse(header.toStringWithConsume());
+ } catch (XMLStreamException e) {
+ e.printStackTrace();
+ } catch (XmlException e) {
+ e.printStackTrace();
+ }
+ Map<Parameter,ActualParameter> actualParameters = new HashMap<Parameter,ActualParameter>();
+ ServiceDescription serviceDescription = getRegistry(context).getServiceDescription(serviceName);
+ ServiceDescriptionType serviceDescriptionType = serviceDescription.getType();
+ for (Parameter parameter : serviceDescriptionType.getInputParametersArray()) {
+ OMElement element = input.getFirstChildWithName(new QName(null, parameter.getParameterName().replaceAll(WSDLConstants.HYPHEN, WSDLConstants.HYPHEN_REPLACEMENT)));
+ if (element == null) {
+ throw new Exception("Parameter is not found in the message");
}
-
+ //todo this implementation doesn't work when there are n number of nodes connecting .. need to fix
+ actualParameters.put(parameter,getInputActualParameter(parameter, element));
+ }
+ DefaultInvocationContext invocationContext = null;
+ JobContext jobContext = new JobContext(actualParameters,topic,serviceName);
+ if(document.getContextHeader().getSecurityContext().getAmazonWebservices() != null){
+// invocationContext.getExecutionContext().setSecurityContextHeader(header);
+ //todo if there's amazoneWebServices context we need to set that value, this will refer in EC2Provider
+ }else{
+ invocationContext = gfacAPI.gridJobSubmit(jobContext,(GFacConfiguration)context.getProperty(GFacService.GFAC_CONFIGURATION));
+ }
+ try {
/*
- * Output
+ * Add notifiable object
*/
- ParameterContextImpl outputParam = new ParameterContextImpl();
-
-
- // List<Parameter> outputs = serviceDescription.getOutputParameters();
- for (OutputParameterType parameter : serviceDescriptionType.getOutputParametersArray()) {
- ActualParameter actualParameter = new ActualParameter();
- if("String".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(StringParameterType.type);
- }else if("Double".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(DoubleParameterType.type);
- }else if("Integer".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(IntegerParameterType.type);
- }else if("Float".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(FloatParameterType.type);
- }else if("Boolean".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(BooleanParameterType.type);
- }else if("File".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(FileParameterType.type);
- }else if("URI".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(URIParameterType.type);
- }else if("StringArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(StringArrayType.type);
- }else if("DoubleArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(DoubleArrayType.type);
- }else if("IntegerArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(IntegerArrayType.type);
- }else if("FloatArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(FloatArrayType.type);
- }else if("BooleanArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(BooleanArrayType.type);
- }else if("FileArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(FileArrayType.type);
- }else if("URIArray".equals(parameter.getParameterType().getName())){
- actualParameter.getType().changeType(URIArrayType.type);
- }
- outputParam.add(parameter.getParameterName(), new ActualParameter());
- }
-
- invocationContext.setInput(inputParam);
- invocationContext.setOutput(outputParam);
-
- if (service == null) {
- service = new PropertyServiceFactory(GFacService.REPOSITORY_PROPERTIES).createService();
- }
- // invoke service
- service.execute(invocationContext);
+ ParameterContextImpl outputParamContext = (ParameterContextImpl) invocationContext
+ .<ActualParameter> getMessageContext("output");
/*
* Process Output
*/
@@ -304,11 +200,9 @@ public class GFacMessageReciever impleme
OMNamespace omNs = fac.createOMNamespace("http://ws.apache.org/axis2/xsd", "ns1");
outputElement = fac.createOMElement("invokeResponse", omNs);
- ParameterContextImpl paramContext = (ParameterContextImpl) invocationContext
- .<ActualParameter> getMessageContext("output");
- for (Iterator<String> iterator = paramContext.getNames(); iterator.hasNext();) {
+ for (Iterator<String> iterator = outputParamContext.getNames(); iterator.hasNext();) {
String name = iterator.next();
- String outputString = paramContext.getValue(name).toXML().replaceAll("GFacParameter", name);
+ String outputString = outputParamContext.getValue(name).toXML().replaceAll("GFacParameter", name);
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(outputString));
StAXOMBuilder builder = new StAXOMBuilder(reader);
outputElement.addChild(builder.getDocumentElement());
@@ -329,99 +223,6 @@ public class GFacMessageReciever impleme
return outputElement;
}
- private ActualParameter getInputActualParameter(Parameter parameter, OMElement element) {
- OMElement innerelement = null;
- ActualParameter actualParameter = new ActualParameter();
- if("String".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(StringParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- ((StringParameterType)actualParameter.getType()).setValue(innerelement.getText());
- }else if("Double".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(DoubleParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- ((DoubleParameterType)actualParameter.getType()).setValue(new Double(innerelement.getText()));
- }else if("Integer".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(IntegerParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- ((IntegerParameterType)actualParameter.getType()).setValue(new Integer(innerelement.getText()));
- }else if("Float".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(FloatParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- ((FloatParameterType)actualParameter.getType()).setValue(new Float(innerelement.getText()));
- }else if("Boolean".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(BooleanParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- ((BooleanParameterType)actualParameter.getType()).setValue(new Boolean(innerelement.getText()));
- }else if("File".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(FileParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- ((FileParameterType)actualParameter.getType()).setValue(innerelement.getText());
- }else if("URI".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(URIParameterType.type);
- innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
- System.out.println(actualParameter.getType().toString());
- log.debug(actualParameter.getType().toString());
- ((URIParameterType)actualParameter.getType()).setValue(innerelement.getText());
- }else if("StringArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(StringArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((StringArrayType)actualParameter.getType()).insertValue(i++, innerelement.getText());
- }
- }else if("DoubleArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(DoubleArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((DoubleArrayType)actualParameter.getType()).insertValue(i++,new Double(innerelement.getText()));
- }
- }else if("IntegerArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(IntegerArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((IntegerArrayType)actualParameter.getType()).insertValue(i++,new Integer(innerelement.getText()));
- }
- }else if("FloatArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(FloatArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((FloatArrayType)actualParameter.getType()).insertValue(i++,new Float(innerelement.getText()));
- }
- }else if("BooleanArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(BooleanArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((BooleanArrayType)actualParameter.getType()).insertValue(i++,new Boolean(innerelement.getText()));
- }
- }else if("FileArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(FileArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((FileArrayType)actualParameter.getType()).insertValue(i++,innerelement.getText());
- }
- }else if("URIArray".equals(parameter.getParameterType().getName())){
- actualParameter = new ActualParameter(URIArrayType.type);
- Iterator value = element.getChildrenWithLocalName("value");
- int i =0;
- while(value.hasNext()){
- innerelement = (OMElement)value.next();
- ((URIArrayType)actualParameter.getType()).insertValue(i++,innerelement.getText());
- }
- }
- return actualParameter;
- }
-
private void processgetWSDLOperation(MessageContext messageContext) throws Exception {
MessageContext response = null;
EndpointReference gfacUrl = messageContext
@@ -566,4 +367,98 @@ public class GFacMessageReciever impleme
return contextHeader;
}
+ private ActualParameter getInputActualParameter(Parameter parameter, OMElement element) {
+ OMElement innerelement = null;
+ ActualParameter actualParameter = new ActualParameter();
+ if ("String".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(StringParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((StringParameterType) actualParameter.getType()).setValue(innerelement.getText());
+ } else if ("Double".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(DoubleParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((DoubleParameterType) actualParameter.getType()).setValue(new Double(innerelement.getText()));
+ } else if ("Integer".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(IntegerParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((IntegerParameterType) actualParameter.getType()).setValue(new Integer(innerelement.getText()));
+ } else if ("Float".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FloatParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((FloatParameterType) actualParameter.getType()).setValue(new Float(innerelement.getText()));
+ } else if ("Boolean".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(BooleanParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((BooleanParameterType) actualParameter.getType()).setValue(new Boolean(innerelement.getText()));
+ } else if ("File".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FileParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((FileParameterType) actualParameter.getType()).setValue(innerelement.getText());
+ } else if ("URI".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(URIParameterType.type);
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ System.out.println(actualParameter.getType().toString());
+ log.debug(actualParameter.getType().toString());
+ ((URIParameterType) actualParameter.getType()).setValue(innerelement.getText());
+ } else if ("StringArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(StringArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((StringArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ } else if ("DoubleArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(DoubleArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((DoubleArrayType) actualParameter.getType()).insertValue(i++, new Double(innerelement.getText()));
+ }
+ } else if ("IntegerArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(IntegerArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((IntegerArrayType) actualParameter.getType()).insertValue(i++, new Integer(innerelement.getText()));
+ }
+ } else if ("FloatArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FloatArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((FloatArrayType) actualParameter.getType()).insertValue(i++, new Float(innerelement.getText()));
+ }
+ } else if ("BooleanArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(BooleanArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((BooleanArrayType) actualParameter.getType()).insertValue(i++, new Boolean(innerelement.getText()));
+ }
+ } else if ("FileArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FileArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((FileArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ } else if ("URIArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(URIArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((URIArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ }
+ return actualParameter;
+ }
+
+
}