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");