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 2008/05/27 22:00:52 UTC
svn commit: r660678 - in
/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws:
c/BeanParamWriter.java cpp/BeanParamWriter.java
Author: nadiramra
Date: Tue May 27 13:00:48 2008
New Revision: 660678
URL: http://svn.apache.org/viewvc?rev=660678&view=rev
Log:
AXISCPP-540 - remove duplication, simplify
Modified:
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/cpp/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?rev=660678&r1=660677&r2=660678&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 Tue May 27 13:00:48 2008
@@ -224,6 +224,7 @@
namespace = "Axis_URI_" + classname;
// if the attribute is a choice following should do
+ boolean ifCheckPrinted = false;
if (attribs[i].getChoiceElement())
{
if (!firstIfWritten)
@@ -234,13 +235,17 @@
else
writer.write("\telse if");
+ ifCheckPrinted = true;
writer.write("(param->" + attribs[i].getParamNameAsMember() + ")\n\t{\n\t");
}
//if the attribute is a 'all' following should do
if (attribs[i].getAllElement())
if (attribs[i].getMinOccurs() == 0)
+ {
+ ifCheckPrinted = true;
writer.write("\tif(param->" + attribs[i].getParamNameAsMember() + ")\n\t{\n\t");
+ }
if (attribs[i].isAnyType())
{
@@ -291,92 +296,66 @@
else
baseTypeName = typeName;
- if (attribs[i].isOptional())
+ if (!ifCheckPrinted && attribs[i].isOptional())
writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n\t");
- if (CUtils.isPointerType(baseTypeName))
- {
- writer.write("\taxiscSoapSerializerSerializeAsElement(pSZ, \""
- + attribs[i].getElementNameAsSOAPString()
- + "\", " + namespace
- + ", (void*)(param->" + attribs[i].getParamNameAsMember() + "), "
- + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
- else if (attribs[i].getChoiceElement()
+ // If the simple type is a choice it is handled
+ // as a pointer variable. This is the same in 'all' element and nillable elements.
+ String ampersand = "&";
+ if (CUtils.isPointerType(baseTypeName)
+ || attribs[i].getChoiceElement()
|| attribs[i].getAllElement()
|| isElementNillable(i) || isElementOptional(i))
- {
- // If the simple type is a choice it is handled
- // as a pointer variable. These variables should be defined
- // as pointers in the header file. This is the same in 'all' element
-
- if (((attribs[i].getChoiceElement())
- && (isElementNillable(i)))
- && !(CUtils.isPointerType(attribs[i].getTypeName())) )
- {
- writer.write("\t\taxiscSoapSerializerSerializeAsElement(pSZ, \""
- + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
- + ", (void*)(*(param->" + attribs[i].getParamNameAsMember()
- + ")), " + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
- else
- {
- writer.write("\t\taxiscSoapSerializerSerializeAsElement(pSZ, \""
- + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
- + ", (void*)(param->" + attribs[i].getParamNameAsMember()
- + "), " + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
- }
- else
- {
- writer.write("\taxiscSoapSerializerSerializeAsElement(pSZ, \""
- + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
- + ", (void*)&(param->" + attribs[i].getParamNameAsMember()
- + "), " + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
+ ampersand = "";
+
+ writer.write("\taxiscSoapSerializerSerializeAsElement(pSZ, \""
+ + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
+ + ", (void*)" + ampersand + "(param->" + attribs[i].getParamNameAsMember() + "), "
+ + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
}
else
{
//if complex type
String elm = attribs[i].getParamNameAsSOAPString();
-
if (attribs[i].isReference())
elm = attribs[i].getTypeName();
- if (attribs[i].isOptional())
- writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n\t{\n");
+ String tab = "";
+ if (ifCheckPrinted)
+ tab = "\t";
+ else if (attribs[i].isOptional())
+ {
+ tab = "\t";
+ writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n\t{\n\t");
+ }
if (attribs[i].getNsQualified())
{
writer.write("\taxiscSoapSerializerSerialize(pSZ, \"<\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
+ type.getName().getNamespaceURI()
+ "\", NULL), \":\", \"" + elm + "\", 0);\n");
- writer.write("\tAxis_Serialize_" + attribs[i].getTypeName()
+ writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
+ "(param->" + attribs[i].getParamNameAsMember() + ", pSZ, 0);\n");
- writer.write("\taxiscSoapSerializerSerialize(pSZ, \"</\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
+ writer.write(tab + "\taxiscSoapSerializerSerialize(pSZ, \"</\", axiscSoapSerializerGetNamespacePrefix(pSZ, \""
+ type.getName().getNamespaceURI()
+ "\", NULL), \":\", \"" + elm + "\", \">\", 0);\n");
}
else
{
writer.write("\taxiscSoapSerializerSerialize(pSZ, \"<" + elm + "\", 0);\n");
- writer.write("\tAxis_Serialize_" + attribs[i].getTypeName()
+ writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
+ "(param->" + attribs[i].getParamNameAsMember() + ", pSZ, 0);\n");
- writer.write("\taxiscSoapSerializerSerialize(pSZ, \"</" + elm + "\", \">\", 0);\n");
+ writer.write(tab + "\taxiscSoapSerializerSerialize(pSZ, \"</" + elm + "\", \">\", 0);\n");
}
- if (attribs[i].isOptional())
+ if (!ifCheckPrinted && attribs[i].isOptional())
writer.write("\t}\n");
}
//end if choice element
- if (attribs[i].getChoiceElement())
+ if (ifCheckPrinted)
writer.write("\t}\n");
-
- if (attribs[i].getAllElement())
- if (attribs[i].getMinOccurs() == 0)
- writer.write("\t}\n");
}
//=============================================================================
@@ -500,8 +479,15 @@
return;
}
- // We always use this...
- writer.write("\tconst char* peekedElementName;\n");
+ // Determine whether to print variable used for peaking ahead
+ for (int i = 0; i < attribs.length; i++)
+ {
+ if (attribs[i].isOptional() && !attribs[i].isAttribute())
+ {
+ writer.write("\tconst char* peekedElementName;\n");
+ break;
+ }
+ }
//=============================================================================
// Deserialize attributes.
Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java?rev=660678&r1=660677&r2=660678&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/BeanParamWriter.java Tue May 27 13:00:48 2008
@@ -447,6 +447,7 @@
namespace = "Axis_URI_" + classname;
// if the attribute is a choice following should do
+ boolean ifCheckPrinted = false;
if (attribs[i].getChoiceElement())
{
if (!firstIfWritten)
@@ -457,13 +458,17 @@
else
writer.write("\telse if");
+ ifCheckPrinted = true;
writer.write("(param->" + attribs[i].getParamNameAsMember() + ")\n\t{\n\t");
}
//if the attribute is a 'all' following should do
if (attribs[i].getAllElement())
if (attribs[i].getMinOccurs() == 0)
+ {
+ ifCheckPrinted = true;
writer.write("\tif(param->" + attribs[i].getParamNameAsMember() + ")\n\t{\n\t");
+ }
if (attribs[i].isAnyType())
{
@@ -513,49 +518,22 @@
else
baseTypeName = typeName;
- if (attribs[i].isOptional())
+ if (!ifCheckPrinted && attribs[i].isOptional())
writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n\t");
- if (CUtils.isPointerType(baseTypeName))
- {
- writer.write("\tpSZ->serializeAsElement(\""
- + attribs[i].getElementNameAsSOAPString()
- + "\", " + namespace
- + ", (void*)(param->" + attribs[i].getParamNameAsMember() + "), "
- + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
- else if (attribs[i].getChoiceElement()
+ // If the simple type is a choice it is handled
+ // as a pointer variable. This is the same in 'all' element and nillable elements.
+ String ampersand = "&";
+ if (CUtils.isPointerType(baseTypeName)
+ || attribs[i].getChoiceElement()
|| attribs[i].getAllElement()
|| isElementNillable(i) || isElementOptional(i))
- {
- // If the simple type is a choice it is handled
- // as a pointer variable. These variables should be defined
- // as pointers in the header file. This is the same in 'all' element
-
- if (((attribs[i].getChoiceElement())
- && (isElementNillable(i)))
- && !(CUtils.isPointerType(attribs[i].getTypeName())) )
- {
- writer.write("\tpSZ->serializeAsElement(\""
- + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
- + ", (void*)(*(param->" + attribs[i].getParamNameAsMember()
- + ")), " + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
- else
- {
- writer.write("\tpSZ->serializeAsElement(\""
- + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
- + ", (void*)(param->" + attribs[i].getParamNameAsMember()
- + "), " + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
- }
- else
- {
- writer.write("\tpSZ->serializeAsElement(\""
- + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
- + ", (void*)&(param->" + attribs[i].getParamNameAsMember()
- + "), " + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
- }
+ ampersand = "";
+
+ writer.write("\tpSZ->serializeAsElement(\""
+ + attribs[i].getElementNameAsSOAPString() + "\", " + namespace
+ + ", (void*)" + ampersand + "(param->" + attribs[i].getParamNameAsMember() + "), "
+ + CUtils.getXSDTypeForBasicType(baseTypeName) + ");\n");
}
else
{
@@ -564,40 +542,42 @@
if (attribs[i].isReference())
elm = attribs[i].getTypeName();
- if (attribs[i].isOptional())
- writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n\t{\n");
+ String tab = "";
+ if (ifCheckPrinted)
+ tab = "\t";
+ else if (attribs[i].isOptional())
+ {
+ tab = "\t";
+ writer.write("\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n\t{\n\t");
+ }
if (attribs[i].getNsQualified())
{
writer.write("\tpSZ->serialize(\"<\", pSZ->getNamespacePrefix(\""
+ type.getName().getNamespaceURI()
+ "\"), \":\", \"" + elm + "\", 0);\n");
- writer.write("\tAxis_Serialize_" + attribs[i].getTypeName()
+ writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
+ "(param->" + attribs[i].getParamNameAsMember() + ", pSZ);\n");
- writer.write("\tpSZ->serialize(\"</\", pSZ->getNamespacePrefix(\""
+ writer.write(tab + "\tpSZ->serialize(\"</\", pSZ->getNamespacePrefix(\""
+ type.getName().getNamespaceURI()
+ "\"), \":\", \"" + elm + "\", \">\", 0);\n");
}
else
{
writer.write("\tpSZ->serialize(\"<" + elm + "\", 0);\n");
- writer.write("\tAxis_Serialize_" + attribs[i].getTypeName()
+ writer.write(tab + "\tAxis_Serialize_" + attribs[i].getTypeName()
+ "(param->" + attribs[i].getParamNameAsMember() + ", pSZ);\n");
- writer.write("\tpSZ->serialize(\"</" + elm + "\", \">\", 0);\n");
+ writer.write(tab + "\tpSZ->serialize(\"</" + elm + "\", \">\", 0);\n");
}
- if (attribs[i].isOptional())
+ if (!ifCheckPrinted && attribs[i].isOptional())
writer.write("\t}\n");
}
//end if choice element
- if (attribs[i].getChoiceElement())
+ if (ifCheckPrinted)
writer.write("\t}\n");
-
- if (attribs[i].getAllElement())
- if (attribs[i].getMinOccurs() == 0)
- writer.write("\t}\n");
}
//=============================================================================
@@ -731,8 +711,15 @@
}
- // We always use this...
- writer.write("\tconst char* peekedElementName;\n");
+ // Determine whether to print variable used for peaking ahead
+ for (int i = 0; i < attribs.length; i++)
+ {
+ if (attribs[i].isOptional() && !attribs[i].isAttribute())
+ {
+ writer.write("\tconst char* peekedElementName;\n");
+ break;
+ }
+ }
//=============================================================================
// Deserialize attributes.