You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by na...@apache.org on 2006/05/17 23:21:07 UTC

svn commit: r407372 - /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java

Author: nadiramra
Date: Wed May 17 14:21:05 2006
New Revision: 407372

URL: http://svn.apache.org/viewvc?rev=407372&view=rev
Log:
C support fixes/enhancements. 

Modified:
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java?rev=407372&r1=407371&r2=407372&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubHeaderWriter.java Wed May 17 14:21:05 2006
@@ -50,13 +50,7 @@
         this.wscontext = wscontext;
         this.methods = wscontext.getSerInfo().getMethods();
     }
-
-    /* (non-Javadoc)
-     * @see org.apache.axis.wsdl.wsdl2ws.BasicFileWriter#writeAttributes()
-     */
-    protected void writeAttributes() throws WrapperFault
-    {}
-
+    
     /* (non-Javadoc)
      * @see org.apache.axis.wsdl.wsdl2ws.BasicFileWriter#writeClassComment()
      */
@@ -75,6 +69,14 @@
             throw new WrapperFault(e);
         }
     }
+    
+    /* (non-Javadoc)
+     * @see org.apache.axis.wsdl.wsdl2ws.BasicFileWriter#writeAttributes()
+     */
+    protected void writeAttributes() throws WrapperFault
+    {}
+
+
 
     /* (non-Javadoc)
      * @see org.apache.axis.wsdl.wsdl2ws.BasicFileWriter#writeMethods()
@@ -85,64 +87,123 @@
         try
         {
             writer.write("\n");
-            writer.write("/* Functions relating to web service client proxy     */\n");
+            writer.write("/* ********************************************************************* */\n");
+            writer.write("/* --- Functions relating to web service client proxy                --- */\n");
+            writer.write("/* ********************************************************************* */\n");
+            writer.write("\n");
+
             writer.write("extern AXISCHANDLE get_" + classname + "_stub(const char* pchEndPointUri);\n");
             writer.write("extern void destroy_" + classname + "_stub(AXISCHANDLE pStub);\n");
             writer.write("extern int get_" + classname + "_Status(AXISCHANDLE pStub);\n");
 
             writer.write("\n");
-            writer.write("/* Functions relating to web service methods          */\n");
+            writer.write("/* ********************************************************************* */\n");
+            writer.write("/* --- Functions relating to web service methods                     --- */\n");
+            writer.write("/* ********************************************************************* */\n");
+            writer.write("\n");
 
             for (int i = 0; i < methods.size(); i++)
             {
                 minfo = (MethodInfo) this.methods.get(i);
                 boolean isAllTreatedAsOutParams = false;
-                ParameterInfo returntype = null;
                 int noOfOutParams = minfo.getOutputParameterTypes().size();
+                
+                //write return type
                 if (0 == noOfOutParams)
-                {
-                    returntype = null;
                     writer.write("extern void ");
-                }
                 else if (1 == noOfOutParams)
                 {
-                    returntype = (ParameterInfo) minfo.getOutputParameterTypes().iterator().next();
-                    writer.write("extern "
-                            + WrapperUtils.getClassNameFromParamInfoConsideringArrays(returntype,wscontext)
-                            + " ");
+                    ParameterInfo returnParam =
+                        (ParameterInfo) minfo.getOutputParameterTypes().iterator().next();
+                    String outParamTypeName = WrapperUtils.getClassNameFromParamInfoConsideringArrays(returnParam, wscontext);
+                    if ((outParamTypeName.lastIndexOf ("_Array") > 0) 
+                            || (CUtils.isSimpleType(outParamTypeName)
+                            && (returnParam.isNillable() || returnParam.isOptional())
+                            && !(CUtils.isPointerType(outParamTypeName))))
+                        writer.write("extern " + outParamTypeName + " * ");
+                    else
+                        writer.write("extern " + outParamTypeName + " ");
                 }
                 else
                 {
                     isAllTreatedAsOutParams = true;
                     writer.write("extern void ");
                 }
-                writer.write(minfo.getMethodname() + "(AXISCHANDLE pStub");
+                
+                //write return type
+                writer.write(minfo.getMethodname() + "(AXISCHANDLE pStub");                
 
                 //write parameter names 
                 Iterator params = minfo.getInputParameterTypes().iterator();
                 if (params.hasNext())
                 {
+                    writer.write(", ");   
+                    
                     ParameterInfo fparam = (ParameterInfo) params.next();
-                    writer.write(", "
-                            + WrapperUtils.getClassNameFromParamInfoConsideringArrays(fparam,wscontext)
-                            + " Value" + 0);
+                    String paramTypeName = WrapperUtils
+                    .getClassNameFromParamInfoConsideringArrays(
+                            fparam,
+                            wscontext);
+                    if ((paramTypeName.lastIndexOf ("_Array") > 0)
+                            ||(CUtils.isSimpleType(paramTypeName)
+                            && fparam.isNillable()
+                            && !(CUtils.isPointerType(paramTypeName))))
+                    {
+                        writer.write(
+                                paramTypeName
+                                    + " * Value"
+                                    + 0);
+                     }
+                    else
+                    {
+                        writer.write(
+                            paramTypeName
+                                + " Value"
+                                + 0);
+                    }
                 }
+                
                 for (int j = 1; params.hasNext(); j++)
                 {
+                    writer.write(", ");
+                    
                     ParameterInfo nparam = (ParameterInfo) params.next();
-                    writer.write(", "
-                            + WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)
-                            + " Value" + j);
+                    String paramTypeName = WrapperUtils
+                    .getClassNameFromParamInfoConsideringArrays(
+                            nparam,
+                            wscontext);
+                    if (CUtils.isSimpleType(paramTypeName)
+                            && nparam.isNillable()
+                            && !(CUtils.isPointerType(paramTypeName)))
+                    {
+                        writer.write(", "
+                                + paramTypeName
+                                + " * Value"
+                                + j);
+                    }
+                    else
+                    {
+                        writer.write(", "
+                                + paramTypeName
+                                + " Value"
+                                + j);
+                    }
                 }
+
                 if (isAllTreatedAsOutParams)
                 {
                     params = minfo.getOutputParameterTypes().iterator();
                     for (int j = 0; params.hasNext(); j++)
                     {
                         ParameterInfo nparam = (ParameterInfo) params.next();
-                        writer.write(", AXISC_OUT_PARAM "
-                                + WrapperUtils.getClassNameFromParamInfoConsideringArrays(nparam,wscontext)
-                                + " *OutValue" + j);
+                        writer.write(
+                            ", AXISC_OUT_PARAM "
+                                + WrapperUtils
+                                    .getClassNameFromParamInfoConsideringArrays(
+                                    nparam,
+                                    wscontext)
+                                + " *OutValue"
+                                + j);
                     }
                 }
                 writer.write(");\n");
@@ -171,6 +232,9 @@
             while (types.hasNext())
             {
                 atype = (Type) types.next();
+                if (atype.getLanguageSpecificName().startsWith(">"))
+                    continue;
+
                 typeName = WrapperUtils.getLanguageTypeName4Type(atype);
                 if (null != typeName)
                     typeSet.add(typeName);