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 2011/11/02 22:14:37 UTC

svn commit: r1196802 - /incubator/airavata/trunk/modules/gfac-axis2/src/main/java/org/apache/airavata/services/gfac/axis2/reciever/GFacMessageReciever.java

Author: lahiru
Date: Wed Nov  2 21:14:36 2011
New Revision: 1196802

URL: http://svn.apache.org/viewvc?rev=1196802&view=rev
Log:
fixing issue with class casting when having different types of parameters.

Modified:
    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/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=1196802&r1=1196801&r2=1196802&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 Wed Nov  2 21:14:36 2011
@@ -30,6 +30,7 @@ import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import com.sun.xml.internal.fastinfoset.util.StringArray;
 import org.apache.airavata.commons.gfac.type.ActualParameter;
 import org.apache.airavata.commons.gfac.type.MappingFactory;
 import org.apache.airavata.commons.gfac.type.ServiceDescription;
@@ -100,7 +101,7 @@ public class GFacMessageReciever impleme
             break;
         case GETWSDL:
             try {
-                log.debug("invoking getAbstractWSDL operation");
+                log.debug("invoking getWSDL operation");
                 processgetWSDLOperation(axisRequestMsgCtx);
                 log.info("getWSDL operation invoked !!");
             } catch (Exception e) {
@@ -177,7 +178,6 @@ public class GFacMessageReciever impleme
             ParameterContextImpl inputParam = new ParameterContextImpl();
             ServiceDescriptionType serviceDescriptionType = serviceDescription.getType();
 
-
             for (Parameter parameter : serviceDescriptionType.getInputParametersArray()) {
                 Iterator childrenWithLocalName = input.getChildrenWithLocalName(parameter.getParameterName());
                 OMElement element = (OMElement)childrenWithLocalName.next();
@@ -185,6 +185,7 @@ public class GFacMessageReciever impleme
                     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())
@@ -196,39 +197,7 @@ public class GFacMessageReciever impleme
 //                System.out.println(xmlContent);
 //                inputParam.add(parameter.getParameterName(),ActualParameter.fromXML(xmlContent));
 
-                ActualParameter actualParameter = new ActualParameter();
-                OMElement innerelement = null;
-                if("String".equals(parameter.getParameterType().getName())){
-                    innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
-                    ((StringParameterType)actualParameter.getType()).setValue(innerelement.getText());
-                }else if("Double".equals(parameter.getParameterType().getName())){
-                    innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
-                    ((DoubleParameterType)actualParameter.getType()).setValue(new Double(innerelement.getText()));
-                }else if("Integer".equals(parameter.getParameterType().getName())){
-                    innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
-                    ((IntegerParameterType)actualParameter.getType()).setValue(new Integer(innerelement.getText()));
-                }else if("Float".equals(parameter.getParameterType().getName())){
-                    innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
-                    ((FloatParameterType)actualParameter.getType()).setValue(new Float(innerelement.getText()));
-                }else if("Boolean".equals(parameter.getParameterType().getName())){
-                    innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
-                    ((BooleanParameterType)actualParameter.getType()).setValue(new Boolean(innerelement.getText()));
-                }else if("File".equals(parameter.getParameterType().getName())){
-                    innerelement = (OMElement)element.getChildrenWithLocalName("value").next();
-                    ((FileParameterType)actualParameter.getType()).setValue(innerelement.getText());
-                }else if("StringArray".equals(parameter.getParameterType().getName())){
-                    //todo ((StringArrayType)actualParameter.getType()).setValueArray().setValue(new Double(element.getText()));
-                }else if("DoubleArray".equals(parameter.getParameterType().getName())){
-                    //todo ((DoubleParameterType)actualParameter.getType()).setValue(new Double(element.getText()));
-                }else if("IntegerArray".equals(parameter.getParameterType().getName())){
-                    //todo ((DoubleParameterType)actualParameter.getType()).setValue(new Double(element.getText()));
-                }else if("FloatArray".equals(parameter.getParameterType().getName())){
-                    //todo ((DoubleParameterType)actualParameter.getType()).setValue(new Double(element.getText()));
-                }else if("BooleanArray".equals(parameter.getParameterType().getName())){
-                    //todo ((DoubleParameterType)actualParameter.getType()).setValue(new Double(element.getText()));
-                }else if("FileArray".equals(parameter.getParameterType().getName())){
-                    //todo ((DoubleParameterType)actualParameter.getType()).setValue(new Double(element.getText()));
-                }
+                ActualParameter actualParameter = getInputActualParameter(parameter, element);
                 inputParam.add(parameter.getParameterName(),actualParameter);
             }
 
@@ -253,7 +222,19 @@ public class GFacMessageReciever impleme
                     actualParameter.getType().changeType(BooleanParameterType.type);
                 }else if("File".equals(parameter.getParameterType().getName())){
                     actualParameter.getType().changeType(FileParameterType.type);
-                }//todo handle all the ParameterTypes
+                }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);
+                }
                 outputParam.add(parameter.getParameterName(), new ActualParameter());
             }
 
@@ -290,6 +271,85 @@ 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("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());
+            }
+        }
+        return actualParameter;
+    }
+
     private void processgetWSDLOperation(MessageContext messageContext) throws Exception {
         MessageContext response = null;
         EndpointReference gfacUrl = messageContext
@@ -358,7 +418,7 @@ public class GFacMessageReciever impleme
     private OMElement getWSDL(ConfigurationContext context, String serviceName) throws XMLStreamException {
         String WSDL = null;
 		try {
-			WSDL = getRegistry(context).getWSDL(serviceName);
+ 			WSDL = getRegistry(context).getWSDL(serviceName);
 		} catch (RegistryException e) {
 			//TODO this scenario occur if the service is not present in the registry.
 			//someone should handle this