scheu 02/04/02 15:09:47
Modified: java/src/org/apache/axis/wsdl/toJava ElementDecl.java
SchemaUtils.java
Log:
Added minOccursIs0 property to ElementDecl and changed SchemaUtils
to set this property to true if a contained element has maxOccurs="0".
This information is useful for the subtle distinction between nillable="true"
and maxOccurs="0". Currently the runtime assumes nillable="true" and
sends null values as
<someItem xsi:nill="true" />
But if maxOccurs="0" is defined for the element, the element should not be
serialized at all.
Glen/Tom: You may want to change JavaBeanHelperWriter to store meta data
for this case, add this information to the meta data model and change
the BeanSerializer.
Revision Changes Path
1.3 +14 -0 xml-axis/java/src/org/apache/axis/wsdl/toJava/ElementDecl.java
Index: ElementDecl.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/ElementDecl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ElementDecl.java 19 Mar 2002 20:15:28 -0000 1.2
+++ ElementDecl.java 2 Apr 2002 23:09:46 -0000 1.3
@@ -67,6 +67,12 @@
public class ElementDecl {
private QName name;
private TypeEntry type;
+ // The following property is set if minOccurs=0.
+ // An item that is not set and has minOccurs=0
+ // should not be passed over the wire. This
+ // is slightly different than nillable=true which
+ // causes nil=true to be passed over the wire.
+ private boolean minOccursIs0=false;
public ElementDecl() {
}
@@ -90,5 +96,13 @@
public void setName(QName name) {
this.name = name;
+ }
+
+ public boolean getMinOccursIs0() {
+ return minOccursIs0;
+ }
+
+ public void setMinOccursIs0(boolean minOccursIs0) {
+ this.minOccursIs0 = minOccursIs0;
}
}
1.19 +6 -1 xml-axis/java/src/org/apache/axis/wsdl/toJava/SchemaUtils.java
Index: SchemaUtils.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/SchemaUtils.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- SchemaUtils.java 2 Apr 2002 21:24:40 -0000 1.18
+++ SchemaUtils.java 2 Apr 2002 23:09:46 -0000 1.19
@@ -363,7 +363,12 @@
TypeEntry type = (TypeEntry)symbolTable.getTypeEntry(nodeType,
forElement.value);
if (type != null) {
- return new ElementDecl(type, Utils.getAxisQName(nodeName));
+ ElementDecl elem = new ElementDecl(type ,Utils.getAxisQName(nodeName));
+ String minOccurs = Utils.getAttribute(elementNode, "minOccurs");
+ if (minOccurs != null && minOccurs.equals("0")) {
+ elem.setMinOccursIs0(true);
+ }
+ return elem;
}
return null;