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/04/18 02:01:22 UTC
svn commit: r394813 - in
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c:
ArrayParamWriter.java BeanParamWriter.java ClientStubWriter.java
Author: nadiramra
Date: Mon Apr 17 17:01:21 2006
New Revision: 394813
URL: http://svn.apache.org/viewcvs?rev=394813&view=rev
Log:
C support fixes/enhancements.
Modified:
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/ClientStubWriter.java
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=394813&r1=394812&r2=394813&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 Mon Apr 17 17:01:21 2006
@@ -65,6 +65,8 @@
// include system header files
writer.write("#include <stdlib.h>\n");
+ writer.write("#include <stdio.h>\n");
+ writer.write("#include <string.h>\n");
writer.write("\n");
// include header file for datatype
@@ -130,12 +132,13 @@
writer.write("{\n");
// Begin function body
-
- writer.write("\t" + classname + " *pArray = (" + classname + "*)malloc(sizeof(" + classname + "));\n");
- writer.write("\tmemset(pArray, 0, sizeof(" + classname + "));\n");
+
+ writer.write("\t/* Create array data type */\n");
+ writer.write("\t" + classname + " *pArray = (" + classname + "*)axiscAxisNew(XSDC_ARRAY, 0);\n");
writer.write("\tpArray->m_Type = C_USER_TYPE;\n");
writer.write("\n");
+ writer.write("\t/* Create actual array of requested size */\n");
writer.write("\tif (nSize > 0)\n");
writer.write("\t{\n");
writer.write("\t\tpArray->m_Array = Axis_Create_" + attribs[0].getTypeName()
@@ -163,16 +166,28 @@
+ "(" + classname + "* param)\n");
writer.write("{\n");
- writer.write("\tif (param == NULL)\n");
+ // Begin function body
+
+ writer.write("\t/* If null, simply return */\n");
+ writer.write("\tif (!param)\n");
writer.write("\t\treturn;\n");
writer.write("\n");
- writer.write("\tif (param->m_Array != NULL)\n");
+
+ writer.write("\t/* Reclaim array memory resources, if it exists */\n");
+ writer.write("\tif (param->m_Array)\n");
writer.write("\t{\n");
writer.write("\t\tAxis_Delete_" + attribs[0].getTypeName()
+ "((" + attribs[0].getTypeName() + " *)param->m_Array, 1, param->m_Size);\n");
- writer.write("\t\tfree(param->m_Array);\n");
+ writer.write("\t\tparam->m_Array = (" + attribs[0].getTypeName() + " **)NULL;\n");
+ writer.write("\t\taxiscAxisDelete(param, XSDC_ARRAY);\n");
writer.write("\t}\n");
+ writer.write("\n");
+
+ writer.write("\t/* Reclaim array data type memory resources */\n");
writer.write("\tfree(param);\n");
+
+ // End function body
+
writer.write("}\n");
writer.write("\n");
}
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=394813&r1=394812&r2=394813&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 Mon Apr 17 17:01:21 2006
@@ -142,7 +142,7 @@
writer.write("\t\t\t\tAxis_URI_" + classname + ", \"\\\"\", NULL );\n");
writer.write("\t\t}\n");
writer.write("\t}\n");
-
+ writer.write("\n");
writer.write("\t/* If there are any attributes serialize them. If there aren't then close the tag */\n");
for (int i = 0; i < attributeParamCount; i++)
@@ -317,7 +317,7 @@
if (CUtils.isPointerType(baseTypeName))
{
- writer.write("\t\taxiscSerializeAsElement(pSZ, \""
+ writer.write("\taxiscSerializeAsElement(pSZ, \""
+ attribs[i].getSOAPElementNameAsString()
+ "\", " + namespace
+ ", (void*)(param->" + attribs[i].getParamNameWithoutSymbols() + "), "
@@ -466,7 +466,7 @@
if (attribs[i].isAnyType())
{
anyCounter +=1;
- writer.write("\tparam->any" + anyCounter + " = axiscGetAnyObject(pDZ);\n");
+ writer.write("\tparam->any" + anyCounter + " = axiscGetAnyObjectIWrapperSoapDeSerializer(pDZ);\n");
}
else if (attribs[i].isArray())
{
@@ -480,6 +480,7 @@
else
baseTypeName = attribs[i].getTypeName();
+ // TODO - need to create a deletearray function that accepts a delete function
writer.write("\t/* If there is an existing array, delete it */\n");
writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n");
writer.write("\t{\n");
@@ -500,7 +501,7 @@
else
{
arrayType = attribs[i].getTypeName();
- writer.write("\taxiscGetCmplxArrayCall(pDZ,\n"
+ writer.write("\taxiscGetCmplxArrayIWrapperSoapDeSerializer(pDZ,\n"
+ "\t\t(Axisc_Array *)param->" + attribs[i].getParamName() + ",\n"
+ "\t\t(void*)Axis_DeSerialize_" + arrayType + ",\n"
+ "\t\t(void*)Axis_Create_" + arrayType + ",\n"
@@ -513,9 +514,7 @@
}
}
else if ((attribs[i].isSimpleType() || attribs[i].getType().isSimpleType()))
- {
- writer.write("\n\t{\n"); // start new variable scope
-
+ {
String soapTagName = (attribs[i].isAttribute() ? attribs[i].getParamName() : attribs[i].getElementNameAsString());
if (soapTagName.lastIndexOf("_Ref") > -1)
soapTagName = soapTagName.substring(0, soapTagName.lastIndexOf("_Ref"));
@@ -525,6 +524,7 @@
if (attribs[i].isOptional())
{
+ writer.write("\n\t{\n"); // start new variable scope
writer.write("\tconst char* elementName" + i + " = axiscPeekNextElementName(pDZ);\n");
writer.write("\t\tif(strcmp(elementName" + i + ", \"" + soapTagName + "\") == 0)\n");
writer.write("\t\t{\n");
@@ -568,25 +568,31 @@
String elementName = attribs[i].getParamNameAsMember();
- writer.write("\t{\n");
+ writer.write("\t{\n"); // start new scope
if( isPointerType)
{
writer.write("\t" + typeName + " pValue" + i + " = " +
CUtils.getParameterGetValueMethodName(baseTypeName, attribs[i].isAttribute()) +
- "(pDZ,\"" + soapTagName + "\", 0);\n\n");
+ "(pDZ,\"" + soapTagName + "\", 0);\n");
}
else
{
writer.write("\t" + typeName + " * pValue" + i + " = " +
CUtils.getParameterGetValueMethodName(baseTypeName, attribs[i].isAttribute()) +
- "(pDZ, \"" + soapTagName + "\", 0);\n\n");
+ "(pDZ, \"" + soapTagName + "\", 0);\n");
}
writer.write( "\tparam->" + elementName + "= pValue" + i + ";\n");
- writer.write( "\tif( pValue" + i + " != NULL)\n");
- writer.write("\t\taxiscAxisDelete( (void *) pValue" + i + ", "
- + CUtils.getXSDTypeForBasicType( baseTypeName) + ");\n\n");
- writer.write("\t}\n\n");
+
+ // TODO - need to delete only if hex, or base 64, or any. and just the struct,
+ // not contents.
+ if (!isPointerType)
+ {
+ writer.write( "\tif( pValue" + i + " != NULL)\n");
+ writer.write("\t\taxiscAxisDelete( (void *) pValue" + i + ", "
+ + CUtils.getXSDTypeForBasicType( baseTypeName) + ");\n");
+ }
+ writer.write("\t}\n\n"); // end new scope
}
}
else if (attribs[i].getChoiceElement() || attribs[i].getAllElement())
@@ -620,12 +626,10 @@
{
writer.write("\t\t\t}\n");
writer.write("\t\telse\n");
- writer.write("\t\t{\n");
writer.write("\t\t\tparam->" + attribs[i].getParamNameAsMember() + " = NULL;\n");
- writer.write("\t\t}\n\n");
+ writer.write("\n");
+ writer.write("\n\t}\n"); // end new variable scope
}
-
- writer.write("\n\t}\n"); // end new variable scope
}
else
{
@@ -650,7 +654,7 @@
writer.write("\tparam->" + attribs[i].getParamNameAsMember()
+ " = (" + attribs[i].getTypeName()
- + "*)axiscGetCmplxObject(pDZ,(void*)Axis_DeSerialize_"
+ + "*)axiscGetCmplxObjectIWrapperSoapDeSerializer(pDZ,(void*)Axis_DeSerialize_"
+ attribs[i].getTypeName()
+ "\n\t\t, (void*)Axis_Create_"
+ attribs[i].getTypeName() + ", (void*)Axis_Delete_"
@@ -676,6 +680,7 @@
if (attribs[i].getMinOccurs() == 0)
writer.write("\t}\n");
+ writer.write("\n");
}
if (extensionBaseAttrib != null
@@ -706,13 +711,13 @@
writer.write("\t" + classname + "* pTemp;\n");
writer.write("\tif (bArray && (nSize > 0))\n\t{\n");
writer.write("\t\tif (pObj)\n\t\t{\n");
- writer.write("\t\t\tpObj = (void *) realloc(pObj, sizeof(" + classname + ")*nSize);\n");
+ writer.write("\t\t\tpObj = (void *) realloc(pObj, sizeof(" + classname + " *)*nSize);\n");
writer.write("\t\t\tpTemp = pObj;\n");
writer.write("\t\t\tpTemp += nSize/2;\n");
- writer.write("\t\t\tmemset(pTemp, 0, sizeof(" + classname + ")*nSize/2);\n");
+ writer.write("\t\t\tmemset(pTemp, 0, sizeof(" + classname + " *)*nSize/2);\n");
writer.write("\t\t}\n\t\telse\n\t\t{\n");
- writer.write("\t\t\tpObj = (void *) malloc(sizeof(" + classname + ")*nSize);\n");
- writer.write("\t\t\tmemset(pObj, 0, sizeof(" + classname + ")*nSize);\n\t\t}\n");
+ writer.write("\t\t\tpObj = (void *) malloc(sizeof(" + classname + " *)*nSize);\n");
+ writer.write("\t\t\tmemset(pObj, 0, sizeof(" + classname + " *)*nSize);\n\t\t}\n");
writer.write("\t}\n\telse\n\t{\n");
writer.write("\t\tpObj = (void *) malloc(sizeof(" + classname + "));\n");
writer.write("\t\tmemset(pObj, 0, sizeof(" + classname + "));\n\n");
@@ -764,39 +769,37 @@
{
if (attribs[i].isSimpleType() || attribs[i].getType().isSimpleType())
{
- String passedInBaseType;
- String baseTypeName = null;
-
- if (!attribs[i].isSimpleType() && attribs[i].getType().isSimpleType())
- baseTypeName = CUtils.getclass4qname(attribs[i].getType().getBaseType());
- else
- baseTypeName = attribs[i].getTypeName();
-
- if (attribs[i].isArray())
- passedInBaseType = "XSDC_ARRAY";
- else
- passedInBaseType = CUtils.getXSDTypeForBasicType(baseTypeName);
-
- writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n");
- writer.write("\t\t\taxiscAxisDelete(param->" + attribs[i].getParamNameAsMember()
- + "," + passedInBaseType + ");\n");
- writer.write("\n");
+ if (CUtils.isPointerType(attribs[i].getTypeName()))
+ {
+ String passedInBaseType;
+ String baseTypeName = null;
+
+ if (!attribs[i].isSimpleType() && attribs[i].getType().isSimpleType())
+ baseTypeName = CUtils.getclass4qname(attribs[i].getType().getBaseType());
+ else
+ baseTypeName = attribs[i].getTypeName();
+
+ if (attribs[i].isArray())
+ passedInBaseType = "XSDC_ARRAY";
+ else
+ passedInBaseType = CUtils.getXSDTypeForBasicType(baseTypeName);
+
+ writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n");
+ writer.write("\t\t\taxiscAxisDelete(param->" + attribs[i].getParamNameAsMember()
+ + "," + passedInBaseType + ");\n");
+ writer.write("\n");
+ }
}
else
{
- String isArray = "0";
- String arraySize = "0";
-
+
+ String deleteFunctionSuffix = "";
if (attribs[i].isArray())
- {
- isArray = "1";
- arraySize = "param->" + attribs[i].getParamName() + "->m_Size";
- }
+ deleteFunctionSuffix = "_Array";
- writer.write("\t\tif (param->" + attribs[i].getParamName());
- writer.write("\t\t\tAxis_Delete_" + attribs[i].getTypeName()
- + "(param->" + attribs[i].getParamName()
- + isArray + "," + arraySize + ");\n");
+ writer.write("\t\tif (param->" + attribs[i].getParamName() + ")\n");
+ writer.write("\t\t\tAxis_Delete_" + attribs[i].getTypeName() + deleteFunctionSuffix
+ + "(param->" + attribs[i].getParamName() + ");\n");
}
}
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubWriter.java?rev=394813&r1=394812&r2=394813&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ClientStubWriter.java Mon Apr 17 17:01:21 2006
@@ -48,9 +48,7 @@
*/
public ClientStubWriter(WebServiceContext wscontext) throws WrapperFault
{
- super(
- WrapperUtils.getClassNameFromFullyQualifiedName(
- wscontext.getSerInfo().getQualifiedServiceName()));
+ super(WrapperUtils.getClassNameFromFullyQualifiedName(wscontext.getSerInfo().getQualifiedServiceName()));
this.wscontext = wscontext;
this.methods = wscontext.getSerInfo().getMethods();
}
@@ -63,11 +61,8 @@
try
{
writer.write("/*\n");
- writer.write(
- " * This file was auto-generated by the Axis C++ Web Service "
- + "Generator (WSDL2Ws)\n");
- writer.write(
- " * This file contains Client Stub implementation for remote web service.\n");
+ writer.write(" * This file was auto-generated by the Axis C++ Web Service Generator (WSDL2Ws)\n");
+ writer.write(" * This file contains Client Stub implementation for remote web service.\n");
writer.write(" */\n\n");
}
catch (IOException e)
@@ -83,21 +78,15 @@
{
try
{
- writer.write(
- "void* get_"
- + classname
- + "_stub(const char* pchEndPointUri)\n{");
+ writer.write("void* get_" + classname + "_stub(const char* pchEndPointUri)\n{");
writer.write("\tif(pchEndPointUri)\n");
writer.write("\t{\n");
- writer.write(
- "\t\treturn getStubObject(APTHTTP1_1, pchEndPointUri);\n");
+ writer.write("\t\treturn getStubObject(APTHTTP1_1, pchEndPointUri);\n");
writer.write("\t}\n");
writer.write("\telse\n");
writer.write("\t{\n");
- writer.write(
- "\t\treturn getStubObject(APTHTTP1_1, \""
- + wscontext.getWrapInfo().getTargetEndpointURI()
- + "\");\n");
+ writer.write("\t\treturn getStubObject(APTHTTP1_1, \""
+ + wscontext.getWrapInfo().getTargetEndpointURI() + "\");\n");
writer.write("\t}\n");
writer.write("}\n");
writer.write("void destroy_" + classname + "_stub(void* p){\n");
@@ -105,12 +94,10 @@
writer.write("int get_" + classname + "_Status(void* pStub){\n");
writer.write("\tCall* pCall = (Call*)pStub;\n");
- writer.write(
- "\tif ( pStub == NULL ) return AXIS_SUCCESS; else return pCall->_functions->getStatus(pCall->_object);\n");
+ writer.write("\tif ( pStub == NULL ) return AXIS_SUCCESS; else return pCall->_functions->getStatus(pCall->_object);\n");
writer.write("\t}\n");
- writer.write(
- "\n/*Methods corresponding to the web service methods*/\n");
+ writer.write("\n/*Methods corresponding to the web service methods*/\n");
MethodInfo minfo;
for (int i = 0; i < methods.size(); i++)
{
@@ -133,8 +120,13 @@
{
try
{
- writer.write(
- "#include \"" + classname + CUtils.C_HEADER_SUFFIX + "\"\n\n");
+ writer.write("#include <stdlib.h>\n");
+ writer.write("#include <stdio.h>\n");
+ writer.write("#include <string.h>\n");
+ writer.write("\n");
+
+ writer.write("#include \"" + classname + CUtils.C_HEADER_SUFFIX + "\"\n");
+ writer.write("\n");
}
catch (IOException e)
{
@@ -150,29 +142,18 @@
* @throws IOException
*/
- public void writeMethodInWrapper(MethodInfo minfo)
- throws WrapperFault, IOException
+ public void writeMethodInWrapper(MethodInfo minfo) throws WrapperFault, IOException
{
boolean isAllTreatedAsOutParams = false;
ParameterInfo returntype = null;
int noOfOutParams = minfo.getOutputParameterTypes().size();
if (0 == noOfOutParams)
- {
returntype = null;
- }
+ else if (1 == noOfOutParams)
+ returntype = (ParameterInfo) minfo.getOutputParameterTypes().iterator().next();
else
- if (1 == noOfOutParams)
- {
- returntype =
- (ParameterInfo) minfo
- .getOutputParameterTypes()
- .iterator()
- .next();
- }
- else
- {
- isAllTreatedAsOutParams = true;
- }
+ isAllTreatedAsOutParams = true;
+
Collection params = minfo.getInputParameterTypes();
String methodName = minfo.getMethodname();
Type retType = null;
@@ -381,7 +362,7 @@
else
if (typeissimple)
{
- //for simple types
+ //for simple types
writer.write(
"\tpCall->_functions->addParameter(pCall->_object, ");
writer.write(