You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by du...@apache.org on 2005/12/08 06:06:30 UTC

svn commit: r354984 - in /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp: ServiceHeaderWriter.java ServiceWriter.java WrapHeaderWriter.java WrapWriter.java literal/WrapWriter.java

Author: dushshantha
Date: Wed Dec  7 21:06:15 2005
New Revision: 354984

URL: http://svn.apache.org/viewcvs?rev=354984&view=rev
Log:
Fixed the server side code generation for rpc and doc/lit style to suit the new memory model. As a fix to AXISCPP-149. 

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java?rev=354984&r1=354983&r2=354984&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceHeaderWriter.java Wed Dec  7 21:06:15 2005
@@ -137,28 +137,25 @@
                                 .iterator()
                                 .next();
                         String returnTypeName = returntype.getLangName();
-                        if (CUtils.isSimpleType(returnTypeName)
-								&& returntype.isNillable()
-								& !(CUtils.isPointerType(returnTypeName)))
+                        String returnType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype,wscontext);
+                        
+                        if ((returnType.lastIndexOf ("_Array") > 0)
+                                || (CUtils.isSimpleType(returnTypeName)
+    							&& (returntype.isNillable() || returntype.isOptional())
+    							&& !(CUtils.isPointerType(returnTypeName))))
                         {
                         	writer.write(
     	                            "\t\t"
-    	                                + WrapperUtils
-    	                                    .getClassNameFromParamInfoConsideringArrays(
-    	                                    returntype,
-    	                                    wscontext)
+    	                                + returnType
     	                                + " * ");
                         }
                         else
                         {
 	                        writer.write(
 	                            "\t\t"
-	                                + WrapperUtils
-	                                    .getClassNameFromParamInfoConsideringArrays(
-	                                    returntype,
-	                                    wscontext)
+	                                + returnType
 	                                + " ");
-                        }
+	                    }
                     }
                     else
                     {
@@ -177,21 +174,19 @@
                 	hasInputParms = true;
                 	ParameterInfo fparam = (ParameterInfo) params.next();
                     String paramTypeName = fparam.getLangName();
+                    String paramType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext);
                     
                     if (fparam.getType().isAttachment())
                     {
                     	writer.write("ISoapAttachment *Value" + 0);
                     }
                     
-                    else if (CUtils.isSimpleType(paramTypeName)
-                    		&& fparam.isNillable()
-							&& !(CUtils.isPointerType(paramTypeName)))
+                    else if ((paramType.lastIndexOf ("_Array") > 0)||(CUtils.isSimpleType(paramTypeName)
+                    		&& (fparam.isNillable() || fparam.isOptional())
+							&& !(CUtils.isPointerType(paramTypeName))))
                     {
                     	writer.write(
-    	                        WrapperUtils
-    	                            .getClassNameFromParamInfoConsideringArrays(
-    	                            fparam,
-    	                            wscontext)
+                    			paramType
     	                            + " * Value"
     	                            + 0);
                     }
@@ -204,30 +199,27 @@
 	                            wscontext)
 	                            + " Value"
 	                            + 0);
-                    }
+	                }
                 }
                 for (int j = 1; params.hasNext(); j++)
                 {
                 	
                     ParameterInfo nparam = (ParameterInfo) params.next();
                     String paramTypeName = nparam.getLangName();
-                    
+                    String typeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext);
                     
                     if (nparam.getType().isAttachment())
                     {
                     	writer.write(", ISoapAttachment *Value" + j);
                     }
                                         
-                    else if (CUtils.isSimpleType(paramTypeName)
-                    		&& nparam.isNillable()
-							&& !(CUtils.isPointerType(paramTypeName)))
+                    else if ((paramTypeName.lastIndexOf ("_Array") > 0)||(CUtils.isSimpleType(paramTypeName)
+                    		&& (nparam.isNillable()|| nparam.isOptional())
+							&& !(CUtils.isPointerType(paramTypeName))))
                     {
                     	writer.write(
     	                        ","
-    	                            + WrapperUtils
-    	                                .getClassNameFromParamInfoConsideringArrays(
-    	                                nparam,
-    	                                wscontext)
+    	                            + typeName
     	                            + " * Value"
     	                            + j);
                     }
@@ -235,13 +227,10 @@
                     {
 	                    writer.write(
 	                        ","
-	                            + WrapperUtils
-	                                .getClassNameFromParamInfoConsideringArrays(
-	                                nparam,
-	                                wscontext)
+	                            + typeName
 	                            + " Value"
 	                            + j);
-                    }
+	                }
                 }
                 if (isAllTreatedAsOutParams)
                 {

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java?rev=354984&r1=354983&r2=354984&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/ServiceWriter.java Wed Dec  7 21:06:15 2005
@@ -157,25 +157,20 @@
                                 .getOutputParameterTypes()
                                 .iterator()
                                 .next();
-                        String returnTypeName = returntype.getLangName(); 
-                        if (CUtils.isSimpleType(returntype.getLangName())
-                        		&& returntype.isNillable()
-								&& !(CUtils.isPointerType(returnTypeName)))
+                        String returnTypeName = returntype.getLangName();
+                        String returnType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype,wscontext);
+                        if ((returnType.lastIndexOf ("_Array") > 0)||(CUtils.isSimpleType(returntype.getLangName())
+                        		&& (returntype.isNillable()|| returntype.isOptional())
+								&& !(CUtils.isPointerType(returnTypeName))))
                         {
                         	writer.write(
-    	                            WrapperUtils
-    	                                .getClassNameFromParamInfoConsideringArrays(
-    	                                returntype,
-    	                                wscontext)
+                        			returnType
     	                                + " * ");
                         }
                         else
                         {
 	                        writer.write(
-	                            WrapperUtils
-	                                .getClassNameFromParamInfoConsideringArrays(
-	                                returntype,
-	                                wscontext)
+	                        		returnType
 	                                + " ");
                         }
                     }
@@ -195,31 +190,26 @@
                 	hasInputParms = true;
                 	ParameterInfo fparam = (ParameterInfo) params.next();
                     String fparamTypeName = fparam.getLangName();
+                    String fparamType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext);
                     
                     if (fparam.getType().isAttachment())
                     {
                     	writer.write("ISoapAttachment *Value" + 0);
                     }
                     
-                    else if (CUtils.isSimpleType(fparamTypeName)
-							&& fparam.isNillable()
-							&& !(CUtils.isPointerType(fparamTypeName)))
+                    else if ((fparamType.lastIndexOf ("_Array") > 0)||(CUtils.isSimpleType(fparamTypeName)
+							&& (fparam.isNillable()|| fparam.isOptional())
+							&& !(CUtils.isPointerType(fparamTypeName))))
                     {
                     	writer.write(
-    	                        WrapperUtils
-    	                            .getClassNameFromParamInfoConsideringArrays(
-    	                            fparam,
-    	                            wscontext)
+                    			fparamType
     	                            + " * Value"
     	                            + 0);
                     }
                     else
                     {
 	                    writer.write(
-	                        WrapperUtils
-	                            .getClassNameFromParamInfoConsideringArrays(
-	                            fparam,
-	                            wscontext)
+	                    		fparamType
 	                            + " Value"
 	                            + 0);
                     }
@@ -228,34 +218,28 @@
                 {
                 	ParameterInfo nparam = (ParameterInfo) params.next();
                     String paramTypeName = nparam.getLangName();
-                    
+                    String paramType = WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext);
                     
                     if (nparam.getType().isAttachment())
                     {
                     	writer.write(", ISoapAttachment *Value" + j);
                     }
                                         
-                    else if (CUtils.isSimpleType(paramTypeName)
-                    		&& nparam.isNillable()
-							&& !(CUtils.isPointerType(paramTypeName)))
+                    else if ((paramType.lastIndexOf ("_Array") > 0)||(CUtils.isSimpleType(paramTypeName)
+                    		&& (nparam.isNillable()|| nparam.isOptional())
+							&& !(CUtils.isPointerType(paramTypeName))))
                     {
                     	writer.write(
     	                        ","
-    	                            + WrapperUtils
-    	                                .getClassNameFromParamInfoConsideringArrays(
-    	                                nparam,
-    	                                wscontext)
-    	                            + " * Value hehe "
+    	                            + paramType
+    	                            + " * Value "
     	                            + j);
                     }
                     else
                     {
 	                    writer.write(
 	                        ","
-	                            + WrapperUtils
-	                                .getClassNameFromParamInfoConsideringArrays(
-	                                nparam,
-	                                wscontext)
+	                            + paramType
 	                            + " Value"
 	                            + j);
                     }

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java?rev=354984&r1=354983&r2=354984&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapHeaderWriter.java Wed Dec  7 21:06:15 2005
@@ -157,6 +157,7 @@
             writer.write("#include <axis/server/WrapperClassHandler.hpp>\n");
             writer.write("#include <axis/IMessageData.hpp>\n");
             writer.write("#include <axis/GDefine.hpp>\n");
+            writer.write("#include <axis/Axis.hpp>\n");
             writer.write("#include <axis/AxisWrapperAPI.hpp>\n");
             writer.write("#include \"AxisServiceException.hpp\" \n");
             writer.write("AXIS_CPP_NAMESPACE_USE \n\n");

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java?rev=354984&r1=354983&r2=354984&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/WrapWriter.java Wed Dec  7 21:06:15 2005
@@ -388,30 +388,29 @@
                     if (CUtils.isSimpleType(qname))
                     {
                         containedType = CUtils.getclass4qname(qname);
+                        
+                        writer.write("\t" + outparamTypeName + " * v" + i +" = new " + outparamTypeName + "();\n");
                         writer.write(
                             "\t"
-                                + paramType
-                                + " v"
+                                + "Axis_Array * RetArray"
                                 + i
-                                + " = ("
-                                + CUtils.getBasicArrayNameforType(containedType)
-                                + "&)*(pIWSDZ->getBasicArray("
+                                + " = pIWSDZ->getBasicArray("
                                 + CUtils.getXSDTypeForBasicType(containedType)
                                 + ", \""
                                 + parameterName
-                                + "\",0));\n");
+                                + "\",0);\n");
+                        writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
+                        writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
                     }
                     else
                     {
                         containedType = qname.getLocalPart();
+                        writer.write("\t" + outparamTypeName + " * v" + i +" = new " + outparamTypeName + "();\n");
                         writer.write(
                             "\t"
-                                + paramType
-                                + " v"
+                                + "Axis_Array * RetArray"
                                 + i
-                                + " = ("
-                                + paramType
-                                + "&)pIWSDZ->getCmplxArray((void*)Axis_DeSerialize_"
+                                + " = pIWSDZ->getCmplxArray(v" + i + ", (void*)Axis_DeSerialize_"
                                 + containedType
                                 + "\n\t\t, (void*)Axis_Create_"
                                 + containedType
@@ -424,6 +423,8 @@
                                 + "\", Axis_URI_"
                                 + containedType
                                 + ");\n");
+                        writer.write("\tv" + i + "->clone(*(" + outparamTypeName + " *)RetArray" + i + ");\n");
+                        writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
                     }
                 }
                 else
@@ -477,9 +478,10 @@
         	/* Invoke the service when return type not void */
         	writer.write("\t\t" + outparamTypeName);
         	System.out.println(outparamTypeName);
-        	if (returntypeissimple
+        	if ((outparamTypeName.lastIndexOf ("_Array") > 0)
+        		||(returntypeissimple
         			&& returntype.isNillable()
-        			&&!(CUtils.isPointerType(outparamTypeName)))
+        			&&!(CUtils.isPointerType(outparamTypeName))))
         	{
         		writer.write(" *");
         	}
@@ -528,7 +530,7 @@
                     {
                         containedType = CUtils.getclass4qname(qname);
                         writer.write(
-                            "\t\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&ret),"
+                            "\t\treturn pIWSSZ->addOutputBasicArrayParam(ret,"
                                 + CUtils.getXSDTypeForBasicType(containedType)
                                 + ", \""
                                 + methodName
@@ -538,7 +540,7 @@
                     {
                         containedType = qname.getLocalPart();
                         writer.write(
-                            "\t\treturn pIWSSZ->addOutputCmplxArrayParam((Axis_Array*)(&ret),"
+                            "\t\treturn pIWSSZ->addOutputCmplxArrayParam(ret,"
                                 + "(void*) Axis_Serialize_"
                                 + containedType
                                 + ", (void*) Axis_Delete_"

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java?rev=354984&r1=354983&r2=354984&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.java Wed Dec  7 21:06:15 2005
@@ -230,18 +230,19 @@
                     { /*parameters that are declared as arrays in the wrapping element.*/
                         String containedType =
                             CUtils.getclass4qname(type.getName());
+                        
+                        writer.write("\t" + outparamType + " * v" + i +" = new " + outparamType + "();\n");
                         writer.write(
                             "\t"
-                                + paraTypeName
-                                + " v"
+                        		+ "Axis_Array * RetArray"
                                 + i
-                                + " = ("
-                                + CUtils.getBasicArrayNameforType(containedType)
-                                + "&)*(pIWSDZ->getBasicArray("
+                                + " = pIWSDZ->getBasicArray("
                                 + CUtils.getXSDTypeForBasicType(containedType)
                                 + ", \""
                                 + elementName
-                                + "\",0));\n");
+                                + "\",0);\n");
+                        writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
+                        writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
                     }
                     else
                     {
@@ -302,20 +303,20 @@
                         if (CUtils.isSimpleType(qname))
                         {
                             containedType = CUtils.getclass4qname(qname);
+                            
+                            writer.write("\t" + outparamType + " * v" + i +" = new " + outparamType + "();\n");
                             writer.write(
                                 "\t"
-                                    + paraTypeName
-                                    + " v"
+                            		+ "Axis_Array * RetArray"
                                     + i
-                                    + " = ("
-                                    + CUtils.getBasicArrayNameforType(
-                                        containedType)
-                                    + "&)*(pIWSDZ->getBasicArray("
+                                    + " = pIWSDZ->getBasicArray("
                                     + CUtils.getXSDTypeForBasicType(
                                         containedType)
                                     + ", \""
                                     + elementName
-                                    + "\",0));\n");
+                                    + "\",0);\n");
+                            writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
+                            writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
                         }
                         else
                         {
@@ -324,32 +325,29 @@
                                 containedType =
                                     CUtils.getclass4qname(
                                         arrayType.getBaseType());
+                                writer.write("\t" + outparamType + " * v" + i +" = new " + outparamType + "();\n");
                                 writer.write(
                                     "\t"
-                                        + paraTypeName
-                                        + " v"
+                                		+ "Axis_Array * RetArray"
                                         + i
-                                        + " = ("
-                                        + CUtils.getBasicArrayNameforType(
-                                            containedType)
-                                        + "&)*(pIWSDZ->getBasicArray("
+                                        + " = pIWSDZ->getBasicArray("
                                         + CUtils.getXSDTypeForBasicType(
                                             containedType)
                                         + ", \""
                                         + elementName
-                                        + "\",0));\n");
+                                        + "\",0);\n");
+                                writer.write ("\tv" + i + "->clone(*RetArray"+ i + ");\n");
+                                writer.write ("\tAxis::AxisDelete( (void *)RetArray" + i + ", XSD_ARRAY);\n\n");
                             }
                             else
                             {
                                 containedType = qname.getLocalPart();
+                                writer.write("\t" + paraTypeName + " * v" + i +" = new " + paraTypeName + "();\n");
                                 writer.write(
                                     "\t"
-                                        + paraTypeName
-                                        + " v"
+                                		+ "Axis_Array * RetArray"
                                         + i
-                                        + " = ("
-                                        + paraTypeName
-                                        + "&)pIWSDZ->getCmplxArray((void*)Axis_DeSerialize_"
+                                        + " = pIWSDZ->getCmplxArray(v" + i + ",(void*)Axis_DeSerialize_"
                                         + containedType
                                         + "\n\t\t, (void*)Axis_Create_"
                                         + containedType
@@ -432,11 +430,11 @@
         { /* Invoke the service when return type not void */
             returnParamName = returntype.getElementNameAsString();
             writer.write("\t" + outparamType);
-            if (!returntypeisarray 
+            if ((outparamType.lastIndexOf ("_Array") > 0)||(!returntypeisarray 
         		&& (!returntypeissimple
             		|| (returntypeissimple		//Chinthana:This has been changed because XSDElementNill Test failed.
         				&& returntype.isNillable()
-						&& !(CUtils.isPointerType(retType.getLanguageSpecificName())))))
+						&& !(CUtils.isPointerType(retType.getLanguageSpecificName()))))))
             {
             	writer.write(" *");
             }
@@ -489,7 +487,7 @@
                     String containedType =
                         CUtils.getclass4qname(retType.getName());
                     writer.write(
-                        "\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&ret),"
+                        "\treturn pIWSSZ->addOutputBasicArrayParam(ret,"
                             + CUtils.getXSDTypeForBasicType(containedType)
                             + ", \""
                             + returnParamName
@@ -530,7 +528,7 @@
                     {
                         containedType = CUtils.getclass4qname(qname);
                         writer.write(
-                            "\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&ret),"
+                            "\treturn pIWSSZ->addOutputBasicArrayParam(ret,"
                                 + CUtils.getXSDTypeForBasicType(containedType)
                                 + ", \""
                                 + returnParamName
@@ -543,7 +541,7 @@
                             containedType =
                                 CUtils.getclass4qname(arrayType.getBaseType());
                             writer.write(
-                                "\treturn pIWSSZ->addOutputBasicArrayParam((Axis_Array*)(&ret),"
+                                "\treturn pIWSSZ->addOutputBasicArrayParam(ret,"
                                     + CUtils.getXSDTypeForBasicType(
                                         containedType)
                                     + ", \""
@@ -554,7 +552,7 @@
                         {
                             containedType = qname.getLocalPart();
                             writer.write(
-                                "\treturn pIWSSZ->addOutputCmplxArrayParam((Axis_Array*)(&ret),"
+                                "\treturn pIWSSZ->addOutputCmplxArrayParam(ret,"
                                     + "(void*) Axis_Serialize_"
                                     + containedType
                                     + ", (void*) Axis_Delete_"