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 di...@apache.org on 2005/09/26 14:21:56 UTC
svn commit: r291609 -
/webservices/axis/trunk/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
Author: dims
Date: Mon Sep 26 05:21:55 2005
New Revision: 291609
URL: http://svn.apache.org/viewcvs?rev=291609&view=rev
Log:
fix wrapped_choice breakage - consider the min/max etc to check if a wrapped type is to be used
Modified:
webservices/axis/trunk/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
Modified: webservices/axis/trunk/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java?rev=291609&r1=291608&r2=291609&view=diff
==============================================================================
--- webservices/axis/trunk/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java (original)
+++ webservices/axis/trunk/java/src/org/apache/axis/wsdl/toJava/JavaBeanWriter.java Mon Sep 26 05:21:55 2005
@@ -275,33 +275,7 @@
isAny = true;
} else {
variableName = elem.getName();
- if (elem.getType().getUnderlTypeNillable()
- || (elem.getNillable() && elem.getMaxOccursIsUnbounded())) {
- /*
- * Soapenc arrays with nillable underlying type or
- * nillable="true" maxOccurs="unbounded" elements
- * should be mapped to a wrapper type.
- */
- typeName = Utils.getWrapperType(elem.getType());
-
- } else if (elem.getMinOccursIs0() && elem.getMaxOccursIsExactlyOne()
- || elem.getNillable() || elem.getOptional()) {
- /*
- * Quote from JAX-RPC 1.1, Section 4.2.1:
- * There are a number of cases in which a built-in simple
- * XML data type must be mapped to the corresponding Java
- * wrapper class for the Java primitive type:
- * * an element declaration with the nillable attribute
- * set to true;
- * * an element declaration with the minOccurs attribute
- * set to 0 (zero) and the maxOccurs attribute set
- * to 1 (one) or absent;
- * * an attribute declaration with the use attribute set
- * to optional or absent and carrying neither
- * the default nor the fixed attribute;
- */
- typeName = Utils.getWrapperType(typeName);
- }
+ typeName = processTypeName(elem, typeName);
}
// Make sure the property name is not reserved.
@@ -410,26 +384,64 @@
}
/**
+ * Check if we need to use the wrapper type
+ *
+ * @param elem
+ * @param typeName
+ * @return type name
+ */
+ private String processTypeName(ElementDecl elem, String typeName) {
+ if (elem.getType().getUnderlTypeNillable()
+ || (elem.getNillable() && elem.getMaxOccursIsUnbounded())) {
+ /*
+ * Soapenc arrays with nillable underlying type or
+ * nillable="true" maxOccurs="unbounded" elements
+ * should be mapped to a wrapper type.
+ */
+ typeName = Utils.getWrapperType(elem.getType());
+
+ } else if (elem.getMinOccursIs0() && elem.getMaxOccursIsExactlyOne()
+ || elem.getNillable() || elem.getOptional()) {
+ /*
+ * Quote from JAX-RPC 1.1, Section 4.2.1:
+ * There are a number of cases in which a built-in simple
+ * XML data type must be mapped to the corresponding Java
+ * wrapper class for the Java primitive type:
+ * * an element declaration with the nillable attribute
+ * set to true;
+ * * an element declaration with the minOccurs attribute
+ * set to 0 (zero) and the maxOccurs attribute set
+ * to 1 (one) or absent;
+ * * an attribute declaration with the use attribute set
+ * to optional or absent and carrying neither
+ * the default nor the fixed attribute;
+ */
+ typeName = Utils.getWrapperType(typeName);
+ }
+ return typeName;
+ }
+
+ /**
* Returns the class name that should be used to serialize and
* deserialize this binary element
*/
protected String getBinaryTypeEncoderName(String elementName)
{
TypeEntry type = getElementDecl(elementName);
- if (type != null)
- {
- String typeName = type.getQName().getLocalPart();
-
- if (typeName.equals("base64Binary"))
- return "org.apache.axis.encoding.Base64";
- if (typeName.equals("hexBinary"))
- return "org.apache.axis.types.HexBinary";
+ if (type != null)
+ {
+ String typeName = type.getQName().getLocalPart();
- throw new java.lang.RuntimeException("Unknown binary type " +
- typeName + " for element " + elementName);
- }
+ if (typeName.equals("base64Binary"))
+ return "org.apache.axis.encoding.Base64";
+ if (typeName.equals("hexBinary"))
+ return "org.apache.axis.types.HexBinary";
+
+ throw new java.lang.RuntimeException("Unknown binary type " +
+ typeName + " for element " + elementName);
+ }
- throw new java.lang.RuntimeException("Unknown element " + elementName);
+ throw new java.lang.RuntimeException("Unknown element " + elementName);
}
/**
@@ -672,7 +684,7 @@
if (elements != null) {
for (int j = 0; j < elements.size(); j++) {
ElementDecl elem = (ElementDecl) elements.get(j);
- paramTypes.add(elem.getType().getName());
+ paramTypes.add(processTypeName(elem,elem.getType().getName()));
paramNames.add(JavaUtils.getUniqueValue(
helper.reservedPropNames, elem.getName()));
}