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/13 00:29:27 UTC

svn commit: r405904 - in /webservices/axis/trunk/c: include/axis/ src/cbindings/ src/soap/ src/wsdl/org/apache/axis/wsdl/wsdl2ws/ src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/

Author: nadiramra
Date: Fri May 12 15:29:26 2006
New Revision: 405904

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

Modified:
    webservices/axis/trunk/c/include/axis/IWrapperSoapSerializer.hpp
    webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp
    webservices/axis/trunk/c/src/soap/SoapSerializer.cpp
    webservices/axis/trunk/c/src/soap/SoapSerializer.h
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamHeaderWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java

Modified: webservices/axis/trunk/c/include/axis/IWrapperSoapSerializer.hpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/include/axis/IWrapperSoapSerializer.hpp?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/include/axis/IWrapperSoapSerializer.hpp (original)
+++ webservices/axis/trunk/c/include/axis/IWrapperSoapSerializer.hpp Fri May 12 15:29:26 2006
@@ -316,11 +316,12 @@
      * Serialize an array of strings.
      * 
      * The strings will be serialized "as-is", no validation will take place.
+     * Primary use is by the C-bindings interface.
      * 
-     * @param count number of strings to be serialized.
-     * @param args array of strings to be serialized.
+     * @param pFirst first string to be serialized.
+     * @param args ptr to va_list of strings to be serialized.
      */
-    virtual void AXISCALL serializeVargs(int count, const char** args)=0;
+    virtual void AXISCALL serializeVargs(const char* pFirst, va_list args)=0;
     
     /**
      * Serialize strings.  All arguments must be strings (char *).

Modified: webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp Fri May 12 15:29:26 2006
@@ -101,29 +101,6 @@
     return AXISC_FAIL;
 }
 
-/**
-AXISC_STORAGE_CLASS_INFO 
-const AxiscChar * axiscSoapSerializerGetNamespacePrefix(AXISCHANDLE wrapperSoapSerializer, 
-                                                                const AxiscChar * pNamespace) 
-{
-    IWrapperSoapSerializer *sz = (IWrapperSoapSerializer*)wrapperSoapSerializer;
-
-    try
-    {
-        return sz->getNamespacePrefix(pNamespace);
-    }
-    catch ( AxisException& e  )
-    {
-        axiscAxisInvokeExceptionHandler(e.getExceptionCode(), e.what());
-    }
-    catch ( ... )
-    {
-        axiscAxisInvokeExceptionHandler(-1, "Unrecognized exception thrown.");
-    }
-    
-    return (const AxiscChar *)NULL;
-}
-***/
 
 AXISC_STORAGE_CLASS_INFO 
 const AxiscChar * axiscSoapSerializerGetNamespacePrefix(AXISCHANDLE wrapperSoapSerializer, 
@@ -135,8 +112,16 @@
     try
     {
         bool isNewPrefix = false;
-        const AxiscChar * returnValue = sz->getNamespacePrefix(pNamespace, isNewPrefix);
-        *(blnIsNewPrefix) = (AxiscBool) isNewPrefix;
+        const AxiscChar * returnValue;
+        
+        if (blnIsNewPrefix)
+        {
+            returnValue = sz->getNamespacePrefix(pNamespace, isNewPrefix);
+            *(blnIsNewPrefix) = (AxiscBool) isNewPrefix;
+        }
+        else
+            returnValue = sz->getNamespacePrefix(pNamespace);
+            
         return returnValue;
     }
     catch ( AxisException& e  )
@@ -685,21 +670,20 @@
     return (AXISCHANDLE)NULL;
 }
 
-AXISC_STORAGE_CLASS_INFO void axiscSoapSerializerSerialize(AXISCHANDLE wrapperSoapSerializer, 
-                                                                   const char *pFirst, 
-                                                                   ...) 
+AXISC_STORAGE_CLASS_INFO 
+void axiscSoapSerializerSerialize(AXISCHANDLE wrapperSoapSerializer, 
+                                  const char *pFirst, 
+                                  ...) 
 {
     SoapSerializer *sz = (SoapSerializer*)wrapperSoapSerializer;
 
     try
     {
-        // TODO: There were problems getting the ... to work properly, so serializeVargs was
-        // introduced. Also wsdl2ws only ever calls this method with one parameter so
-        // ignore the extra parameters here for the moment. This should be fixed properly
-        // later. I think SoapSerializer::serialize is wrong to assume that the variable
-        // list of parameters will be terminated by a null pointer. I think we should always
-        // pass in an explicit parameter count here.
-        sz->serializeVargs(1,&pFirst);
+        va_list args;
+    
+        va_start( args, pFirst);    
+        sz->serializeVargs(pFirst, args);
+        va_end( args);          
     }
     catch ( AxisException& e  )
     {

Modified: webservices/axis/trunk/c/src/soap/SoapSerializer.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/soap/SoapSerializer.cpp?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/soap/SoapSerializer.cpp (original)
+++ webservices/axis/trunk/c/src/soap/SoapSerializer.cpp Fri May 12 15:29:26 2006
@@ -894,21 +894,8 @@
     return AXIS_FAIL;  // Can it only be unsuccessful?
 }
 
-void SoapSerializer::serializeVargs( int count, const char ** args)
+void SoapSerializer::serializeVargs( const char * pFirst, va_list vList)
 {
-    for (int i=0; i<count; i++)
-    {
-        if (NULL != args[i])
-            *this << args[i];
-    }
-}
-
-void SoapSerializer::serialize( const char * pFirst, ...)
-{
-    va_list vList;
-
-    va_start( vList, pFirst );     /* Initialize variable arguments. */
-    
     const char * pArg;
     
     if( pFirst)
@@ -922,8 +909,15 @@
             *this << pArg;
     } 
     while( pArg != NULL);
+}
+
+void SoapSerializer::serialize( const char * pFirst, ...)
+{
+    va_list vList;
 
-    va_end( vList);              /* Reset variable arguments.      */
+    va_start( vList, pFirst );   
+    serializeVargs(pFirst, vList);
+    va_end( vList);         
 }
 
 /*

Modified: webservices/axis/trunk/c/src/soap/SoapSerializer.h
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/soap/SoapSerializer.h?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/soap/SoapSerializer.h (original)
+++ webservices/axis/trunk/c/src/soap/SoapSerializer.h Fri May 12 15:29:26 2006
@@ -223,7 +223,7 @@
     int AXISCALL serializeAsAttribute(const AxisChar* pName,
                                       const AxisChar* pNamespace,
                                       IAnySimpleType* pSimpleType);
-    void AXISCALL serializeVargs(int count, const char** args);
+    void AXISCALL serializeVargs(const char * pFirst, va_list vList);
     void AXISCALL serialize(const char* pFirst, ...);
     void setStyle(AXIS_BINDING_STYLE nStyle)
     { m_nStyle = nStyle; m_BTSZ.setStyle(nStyle);};

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java Fri May 12 15:29:26 2006
@@ -641,7 +641,7 @@
         initValuesCpp.put("xsd__NOTATION",                "NULL");
  
         
-        initValuesC.put("xsdc__duration",                "{0, 0, 0, 0, 0, 0, 0, 0, 0}");
+        initValuesC.put("xsdc__duration",                "0");
         initValuesC.put("xsdc__dateTime",                "{0, 0, 0, 0, 0, 0, 0, 0, 0}");
         initValuesC.put("xsdc__time",                    "{0, 0, 0, 0, 0, 0, 0, 0, 0}");
         initValuesC.put("xsdc__date",                    "{0, 0, 0, 0, 0, 0, 0, 0, 0}");

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamHeaderWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamHeaderWriter.java?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamHeaderWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamHeaderWriter.java Fri May 12 15:29:26 2006
@@ -165,7 +165,7 @@
         try
         {
             this.writer.write("extern void Axis_Delete_" + classname 
-                    + "(" + classname + "* param);\n");
+                    + "(" + classname + "* param, int nSize);\n");
         }
         catch (IOException e)
         {

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java Fri May 12 15:29:26 2006
@@ -170,7 +170,7 @@
         try
         {
             this.writer.write("extern void Axis_Delete_" + classname 
-                    + "(" + classname + "* param)\n");
+                    + "(" + classname + "* param, int nSize)\n");
             writer.write("{\n");
             
             // Begin function body

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java Fri May 12 15:29:26 2006
@@ -365,18 +365,18 @@
                 {
                     writer.write("\taxiscSoapSerializerSerialize(pSZ, \"<\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
                                     + type.getName().getNamespaceURI()
-                                    + "\"), \":\", \"" + elm + "\", 0);\n");
+                                    + "\", NULL), \":\", \"" + elm + "\", 0);\n");
                     writer.write("\tAxis_Serialize_" + attribs[i].getTypeName()
-                            + "(param->" + attribs[i].getParamName() + ", pSZ);\n");
+                            + "(param->" + attribs[i].getParamName() + ", pSZ, 0);\n");
                     writer.write("\taxiscSoapSerializerSerialize(pSZ, \"</\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
                                     + type.getName().getNamespaceURI()
-                                    + "\"), \":\", \"" + elm + "\", \">\", 0);\n");
+                                    + "\", NULL), \":\", \"" + elm + "\", \">\", 0);\n");
                 }
                 else
                 {
                     writer.write("\taxiscSoapSerializerSerialize(pSZ, \"<" + elm + "\", 0);\n");
                     writer.write("\tAxis_Serialize_" + attribs[i].getTypeName()
-                            + "(param->" + attribs[i].getParamName() + ", pSZ);\n");
+                            + "(param->" + attribs[i].getParamName() + ", pSZ, 0);\n");
                     writer.write("\taxiscSoapSerializerSerialize(pSZ, \"</" + elm + "\", \">\", 0);\n");
                 }
                 
@@ -826,7 +826,8 @@
                 
                 writer.write("\t\tif (param->" + attribs[i].getParamName() + ")\n");
                 writer.write("\t\t\tAxis_Delete_" + attribs[i].getTypeName() + deleteFunctionSuffix 
-                            + "(param->" + attribs[i].getParamName() + ");\n");                   
+                            + "(param->" + attribs[i].getParamName() + ", 0);\n");  
+                    
             }
         }
         

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java?rev=405904&r1=405903&r2=405904&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/literal/ClientStubWriter.java Fri May 12 15:29:26 2006
@@ -346,16 +346,9 @@
                 String initValue = CUtils.getInitValue(outparamType);
                 if (initValue != null)
                     writer.write(outparamType + " Ret = " + initValue + ";\n");
-                else if (outparamType.equals("xsd__base64Binary")
-                        || outparamType.equals("xsd__hexBinary"))
-                {
-                    writer.write(outparamType + " Ret;\n");
-                    writer.write("\tRet.__ptr = NULL;\n");
-                    writer.write("\tRet.__size = 0;\n");
-                }
-                else if (outparamType.equals("xsd__dateTime")
-                        || outparamType.equals("xsd__date")
-                        || outparamType.equals("xsd__time"))
+                else if (outparamType.equals("xsdc__dateTime")
+                        || outparamType.equals("xsdc__date")
+                        || outparamType.equals("xsdc__time"))
                 {
                     writer.write(outparamType + " Ret;\n");
                     writer.write("\tmemset(&Ret,0,sizeof(" + outparamType + "));\n");