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/12/26 03:07:08 UTC
svn commit: r490207 -
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
Author: nadiramra
Date: Mon Dec 25 18:07:07 2006
New Revision: 490207
URL: http://svn.apache.org/viewvc?view=rev&rev=490207
Log:
AXISCPP-849 - Stub compilation problems when WSDL contains complexTypes and elements of the same name
Modified:
webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java?view=diff&rev=490207&r1=490206&r2=490207
==============================================================================
--- 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 Dec 25 18:07:07 2006
@@ -90,10 +90,8 @@
if (!CUtils.isPointerType(typeName))
writer.write("&");
- writer.write("(param->"
- + extensionBaseAttrib.getParamNameAsMember()
- + "), "
- + CUtils.getXSDTypeForBasicType(typeName) + ");\n");
+ writer.write("(param->" + extensionBaseAttrib.getParamNameAsMember()
+ + "), " + CUtils.getXSDTypeForBasicType(typeName) + ");\n");
}
else
{
@@ -107,6 +105,8 @@
}
String arrayType;
+
+
/*
* A type does not know whether it is used as a nillable parameter So
* this may not be the appropriate place to do this
@@ -118,16 +118,14 @@
writer.write("\t\taxiscSoapSerializerSerialize(pSZ, \">\", NULL);\n");
writer.write("\t\treturn AXISC_SUCCESS;\n");
writer.write("\t}\n\n");
+ /*
+ * This is the only real difference for the serializer between rpc/encoded and doc/literal objects
+ */
+ if (wscontext.getWrapInfo().getWrapperStyle().equals("rpc"))
+ writeRPCArrayPortionOfSerializeGlobalMethod();
+ else
+ writeDOCArrayPortionOfSerializeGlobalMethod();
- writer.write("\tif (!bArray)\n\t{\n");
- writer.write("\t\tconst AxiscChar* sPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ,Axis_URI_" + classname + ", &blnIsNewPrefix);\n");
- writer.write("\t\tif (blnIsNewPrefix)\n\t\t{\n");
- writer.write("\t\t\taxiscSoapSerializerSerialize(pSZ,\" xmlns:\", sPrefix, \"=\\\"\",\n");
- 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++)
{
@@ -190,7 +188,8 @@
writer.write(", NULL);\n\t}\n");
}
- writer.write("\taxiscSoapSerializerSerialize(pSZ, \">\", 0);\n");
+ if(wscontext.getWrapInfo().getWrapperStyle().equals("document"))
+ writer.write("\taxiscSoapSerializerSerialize(pSZ, \">\", 0);\n");
if (extensionBaseAttrib != null)
{
@@ -213,6 +212,12 @@
for (int i = attributeParamCount; i < attribs.length; i++)
{
+ // Ensure field name is valid and does not cause conflict with class names
+ String sanitizedAttrName = CUtils.sanitiseAttributeName(attribs[i].getParamName());
+ if (CUtils.classExists(wscontext, sanitizedAttrName))
+ sanitizedAttrName += "_Ref";
+ attribs[i].setParamName(sanitizedAttrName);
+
String namespace = "";
if (attribs[i].getNsQualified())
namespace = "Axis_URI_" + classname;
@@ -380,6 +385,12 @@
writer.write("\t}\n");
}
+ if (wscontext.getWrapInfo().getWrapperStyle().equals("rpc"))
+ {
+ writer.write("\n\taxiscSoapSerializerSerialize(pSZ, \"</\", Axis_TypeName_" + classname
+ + ", \">\", NULL);\n");
+ }
+
writer.write("\n\tif (!bArray && blnIsNewPrefix)\n");
writer.write("\t\taxiscSoapSerializerRemoveNamespacePrefix(pSZ, Axis_URI_" + classname + ");\n\n");
@@ -390,6 +401,61 @@
/**
* @throws IOException
*/
+ private void writeDOCArrayPortionOfSerializeGlobalMethod() throws IOException
+ {
+ // For doc/literal objects
+ writer.write("\tif (!bArray)\n\t{\n");
+ writer.write("\t\tconst AxiscChar* sPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ,Axis_URI_" + classname + ", &blnIsNewPrefix);\n");
+ writer.write("\t\tif (blnIsNewPrefix)\n\t\t{\n");
+ writer.write("\t\t\taxiscSoapSerializerSerialize(pSZ,\" xmlns:\", sPrefix, \"=\\\"\",\n");
+ writer.write("\t\t\t\tAxis_URI_" + classname + ", \"\\\"\", NULL );\n");
+ writer.write("\t\t}\n");
+ writer.write("\t}\n\n");
+ }
+
+ /**
+ * @throws IOException
+ */
+ private void writeRPCArrayPortionOfSerializeGlobalMethod() throws IOException
+ {
+ // For rpc/encoded objects
+ writer.write( "\tif( bArray)\n");
+ writer.write( "\t\taxiscSoapSerializerSerialize(pSZ, \"<\", Axis_TypeName_" + classname + ", \">\", NULL);\n");
+ writer.write( "\telse\n");
+ writer.write( "\t{\n");
+ writer.write( "\t\tconst AxiscChar * sPrefix = axiscSoapSerializerGetNamespacePrefix(pSZ, Axis_URI_" + classname + ",\n" +
+ "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&blnIsNewPrefix);\n\n");
+ writer.write( "// If there are objects that require a local namespace, then define it here.\n");
+ writer.write( "// NB: This namespace will go out of scope when the closing tag is reached.\n");
+ writer.write( "\t\tif( !blnIsNewPrefix)\n");
+ writer.write( "\t\t{\n");
+ writer.write( "\t\t\taxiscSoapSerializerSerialize(pSZ, \"<\",\n\t\t\t\t\t\t\tAxis_TypeName_" + classname + ",\n" +
+ "\t\t\t\t\t\t\t\" xsi:type=\\\"\",\n" +
+ "\t\t\t\t\t\t\tsPrefix,\n" +
+ "\t\t\t\t\t\t\t\":\",\n" +
+ "\t\t\t\t\t\t\t");
+ writer.write( "Axis_TypeName_" + classname + ",\n" +
+ "\t\t\t\t\t\t\t\"\\\">\",\n" +
+ "\t\t\t\t\t\t\tNULL);\n");
+ writer.write( "\t\t}\n");
+ writer.write( "\t\telse\n");
+ writer.write( "\t\t{\n");
+ writer.write( "\t\t\taxiscSoapSerializerSerialize(pSZ, \"<\",\n" +
+ "\t\t\t\t\t\t\tAxis_TypeName_" + classname + ",\n" +
+ "\t\t\t\t\t\t\t\" xsi:type=\\\"\",\n" +
+ "\t\t\t\t\t\t\tsPrefix,\n" +
+ "\t\t\t\t\t\t\t\":\",\n" +
+ "\t\t\t\t\t\t\tAxis_TypeName_" + classname + ",\n" +
+ "\t\t\t\t\t\t\t\"\\\" xmlns:\",\n" +
+ "\t\t\t\t\t\t\tsPrefix,\n" +
+ "\t\t\t\t\t\t\t\"=\\\"\",\n" +
+ "\t\t\t\t\t\t\tAxis_URI_" + classname + ",\n" +
+ "\t\t\t\t\t\t\t\"\\\">\",\n" +
+ "\t\t\t\t\t\t\tNULL);\n");
+ writer.write("\t\t}\n");
+ writer.write("\t}\n\n");
+ }
+
private void writeDeSerializeGlobalMethod() throws IOException, WrapperFault
{
writer.write("\n");
@@ -521,6 +587,8 @@
}
else if ((attribs[i].isSimpleType() || attribs[i].getType().isSimpleType()))
{
+ //TODO handle optional attributes
+ //remove _Ref sufix and _ prefix in SOAP tag name
String soapTagName = (attribs[i].isAttribute() ? attribs[i].getParamName() : attribs[i].getElementNameAsString());
if (soapTagName.lastIndexOf("_Ref") > -1)
soapTagName = soapTagName.substring(0, soapTagName.lastIndexOf("_Ref"));
@@ -688,9 +756,8 @@
{
writer.write("\t}\n");
writer.write("\telse\n");
- writer.write("\t{\n");
writer.write("\t\tparam->" + attribs[i].getParamNameAsMember() + " = NULL;\n");
- writer.write("\t}\n\n");
+ writer.write("\n");
}
writer.write("\n\t}\n"); // end new variable scope
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org