You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2006/10/10 07:56:02 UTC

svn commit: r454632 [2/2] - in /webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema: ExtensionUtility.java template/ADBBeanTemplate.xsl

Modified: webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl?view=diff&rev=454632&r1=454631&r2=454632
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl (original)
+++ webservices/axis2/branches/java/1_1/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl Mon Oct  9 22:56:02 2006
@@ -116,371 +116,407 @@
 
 
             <xsl:choose>
-            <xsl:when test="@removed">
+                <xsl:when test="@removed">
 
-           /**
-           * Auto generated getter method
-           * Overridden from <xsl:value-of select="$restriction"/>
-           *
-           * @throws RuntimeException
-           */
-           public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
-               throw new java.lang.RuntimeException();
-           }
+               /**
+               * Auto generated getter method
+               * Overridden from <xsl:value-of select="$restriction"/>
+               *
+               * @throws RuntimeException
+               */
+               public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
+                   throw new java.lang.RuntimeException();
+               }
+
+               /**
+               * Auto generated setter method
+               * Overridden from <xsl:value-of select="$restriction"/>
+               *
+               * @param param <xsl:value-of select="$javaName"/>
+               * @throws RuntimeException
+               */
+               public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                      throw new java.lang.RuntimeException();
+               }
 
-           /**
-           * Auto generated setter method
-           * Overridden from <xsl:value-of select="$restriction"/>
-           *
-           * @param param <xsl:value-of select="$javaName"/>
-           * @throws RuntimeException
-           */
-           public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
-                  throw new java.lang.RuntimeException();
-           }
+               </xsl:when>
+                <xsl:otherwise>
+                   <xsl:choose>
+                      <xsl:when test="(@restricted) and (@occuranceChanged) and (not(@typeChanged))">
+                            <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
 
-           </xsl:when>
-           <xsl:otherwise>
-               <xsl:choose>
-                  <xsl:when test="(@restricted) and (@occuranceChanged) and (not(@typeChanged))">
-                        <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
 
+                         <!-- generate the validator Method, this is specifiacally for validating the arrays-->
+                         /**
+                         * Validate the array for <xsl:value-of select="$javaName"/>
+                         * Overridden from <xsl:value-of select="$restriction"/>
+                         */
+                         protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                         <xsl:if test="not(@unbound)">
+                              if ((param != null) &amp;&amp; (param.length &gt; <xsl:value-of select="@maxOccurs"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                         </xsl:if>
+                         <xsl:if test="$min!=0">
+                              if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                         </xsl:if>
+                         }
 
-                     <!-- generate the validator Method, this is specifiacally for validating the arrays-->
-                     /**
-                     * Validate the array for <xsl:value-of select="$javaName"/>
-                     * Overridden from <xsl:value-of select="$restriction"/>
-                     */
-                     protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
-                     <xsl:if test="not(@unbound)">
-                          if (param.length &gt; <xsl:value-of select="@maxOccurs"/>){
-                            throw new java.lang.RuntimeException();
-                          }
-                     </xsl:if>
-                     <xsl:if test="$min!=0">
-                          if (param.length &lt; <xsl:value-of select="$min"/>){
-                            throw new java.lang.RuntimeException();
-                          }
-                     </xsl:if>
-                     }
 
+                         /**
+                         * Auto generated setter method
+                         * Overridden from <xsl:value-of select="$restriction"/>
+                         *
+                         * @param param <xsl:value-of select="$javaName"/>
+                         */
+                         public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                         <!-- call the validator-->
+                                validate<xsl:value-of select="$javaName"/>(param);
 
-                     /**
-                     * Auto generated setter method
-                     * Overridden from <xsl:value-of select="$restriction"/>
-                     *
-                     * @param param <xsl:value-of select="$javaName"/>
-                     */
-                     public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
-                     <!-- call the validator-->
-                            validate<xsl:value-of select="$javaName"/>(param);
-
-                     <xsl:if test="$choice">
-                          clearAllSettingTrackers();
-                     </xsl:if>
-                     <xsl:if test="$min=0 or $choice">
-                        <!-- the updating of setting tracker for null values should
-                             happen if the attribute is marked as nillable. Else
-                             the user can set a null value and it is never marked
-                             as set
-                        -->
-                        <xsl:choose>
-                           <xsl:when test="not(@nillable) and not(@primitive)">
-                              if (param !=null){
-                              //update the setting tracker
-                              <xsl:value-of select="$settingTracker"/> = true;
-                               }
-                           </xsl:when>
-                           <xsl:otherwise>
-                               //update the setting tracker
-                              <xsl:value-of select="$settingTracker"/> = true;
-                           </xsl:otherwise>
-                        </xsl:choose>
-                     </xsl:if>
-                          this.<xsl:value-of select="$varName"/>=param;
-                     }
-                  </xsl:when>
-                  <xsl:otherwise>
+                         <xsl:if test="$choice">
+                              clearAllSettingTrackers();
+                         </xsl:if>
+                         <xsl:if test="$min=0 or $choice">
+                            <!-- the updating of setting tracker for null values should
+                                 happen if the attribute is marked as nillable. Else
+                                 the user can set a null value and it is never marked
+                                 as set
+                            -->
+                            <xsl:choose>
+                               <xsl:when test="@primitive and not(@array)">
+                                   // setting primitive variable always to true
+                                   <xsl:value-of select="$settingTracker"/> = true;
+                               </xsl:when>
+                               <xsl:otherwise>
+                                   if (param != null){
+                                      //update the setting tracker
+                                      <xsl:value-of select="$settingTracker"/> = true;
+                                   } else {
+                                      <xsl:choose>
+                                          <xsl:when test="@nillable">
+                                              <xsl:value-of select="$settingTracker"/> = true;
+                                          </xsl:when>
+                                          <xsl:otherwise>
+                                              <xsl:value-of select="$settingTracker"/> = false;
+                                          </xsl:otherwise>
+                                      </xsl:choose>
+                                   }
+                               </xsl:otherwise>
+                            </xsl:choose>
+                         </xsl:if>
+                              this.<xsl:value-of select="$varName"/>=param;
+                         }
+                      </xsl:when>
+                      <xsl:otherwise>
 
-                    /**
-                    * field for <xsl:value-of select="$javaName"/>
-                    <xsl:if test="@attribute">
-                    * This was an Attribute!</xsl:if>
-                    <xsl:if test="@array">
-                    * This was an Array!</xsl:if>
-                    <xsl:if test="@typeChanged">
-                    * Type of this field is a subtype of its original.</xsl:if>
-                    <xsl:if test="(@rewrite) and (@occuranceChanged)">
-                    * This field was an array in <xsl:value-of select="$restriction"/>.</xsl:if>
-                    */
-
-                    protected <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> ;
-                    <xsl:if test="enumFacet">
-                    private static java.util.HashMap _table_ = new java.util.HashMap();
-
-                    // Constructor
-                    protected <xsl:value-of select="$name"/>(<xsl:value-of select="$propertyType"/> value) {
-                        <xsl:value-of select="$varName" /> = value;
-                        <xsl:choose>
-                                   <xsl:when test="@primitive">
-                                     _table_.put(<xsl:value-of select="$varName" /> + "", this);
-                                   </xsl:when>
-                                   <xsl:otherwise>
-                                       _table_.put(<xsl:value-of select="$varName" />, this);
-                                   </xsl:otherwise>
-                               </xsl:choose>
+                        /**
+                        * field for <xsl:value-of select="$javaName"/>
+                        <xsl:if test="@attribute">
+                        * This was an Attribute!</xsl:if>
+                        <xsl:if test="@array">
+                        * This was an Array!</xsl:if>
+                        <xsl:if test="@typeChanged">
+                        * Type of this field is a subtype of its original.</xsl:if>
+                        <xsl:if test="(@rewrite) and (@occuranceChanged)">
+                        * This field was an array in <xsl:value-of select="$restriction"/>.</xsl:if>
+                        */
+
+                        protected <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> ;
+                        <xsl:if test="enumFacet">
+                        private static java.util.HashMap _table_ = new java.util.HashMap();
+
+                        // Constructor
+                        protected <xsl:value-of select="$name"/>(<xsl:value-of select="$propertyType"/> value) {
+                            <xsl:value-of select="$varName" /> = value;
+                            <xsl:choose>
+                                       <xsl:when test="@primitive">
+                                         _table_.put(<xsl:value-of select="$varName" /> + "", this);
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                           _table_.put(<xsl:value-of select="$varName" />, this);
+                                       </xsl:otherwise>
+                                   </xsl:choose>
 
-                    }
+                        }
 
-                    <xsl:for-each select="enumFacet">
-                        public static final <xsl:value-of select="$propertyType"/> _<xsl:value-of select="@id"/> =
-                            org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>("<xsl:value-of select="@value"/>");
-                    </xsl:for-each>
-                    <xsl:for-each select="enumFacet">
-                        public static final <xsl:value-of select="$name"/><xsl:text> </xsl:text><xsl:value-of select="@id"/> =
-                            new <xsl:value-of select="$name"/>(_<xsl:value-of select="@id"/>);
-                    </xsl:for-each>
-
-                        public <xsl:value-of select="$propertyType"/> getValue() { return <xsl:value-of select="$varName" />;}
-                        public static <xsl:value-of select="$name"/> fromValue(<xsl:value-of select="$propertyType"/> value)
-                              throws java.lang.IllegalArgumentException {
-                            <xsl:value-of select="$name"/> enumeration = (<xsl:value-of select="$name"/>)
-                        <xsl:choose>
-                                   <xsl:when test="@primitive">
-                                     _table_.get(value + "");
-                                   </xsl:when>
-                                   <xsl:otherwise>
-                                       _table_.get(value);
-                                   </xsl:otherwise>
-                               </xsl:choose>
+                        <xsl:for-each select="enumFacet">
+                            public static final <xsl:value-of select="$propertyType"/> _<xsl:value-of select="@id"/> =
+                                org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>("<xsl:value-of select="@value"/>");
+                        </xsl:for-each>
+                        <xsl:for-each select="enumFacet">
+                            public static final <xsl:value-of select="$name"/><xsl:text> </xsl:text><xsl:value-of select="@id"/> =
+                                new <xsl:value-of select="$name"/>(_<xsl:value-of select="@id"/>);
+                        </xsl:for-each>
 
-                            if (enumeration==null) throw new java.lang.IllegalArgumentException();
-                            return enumeration;
-                        }
-                        public static <xsl:value-of select="$name"/> fromString(java.lang.String value)
-                              throws java.lang.IllegalArgumentException {
-                            try {
-                               <xsl:choose>
-                                   <xsl:when test="@primitive">
-                                     return fromValue(org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(value));
-                                   </xsl:when>
-                                   <xsl:otherwise>
-                                       return fromValue(new <xsl:value-of select="$propertyType"/>(value));
-                                   </xsl:otherwise>
-                               </xsl:choose>
+                            public <xsl:value-of select="$propertyType"/> getValue() { return <xsl:value-of select="$varName" />;}
+                            public static <xsl:value-of select="$name"/> fromValue(<xsl:value-of select="$propertyType"/> value)
+                                  throws java.lang.IllegalArgumentException {
+                                <xsl:value-of select="$name"/> enumeration = (<xsl:value-of select="$name"/>)
+                            <xsl:choose>
+                                       <xsl:when test="@primitive">
+                                         _table_.get(value + "");
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                           _table_.get(value);
+                                       </xsl:otherwise>
+                                   </xsl:choose>
 
-                            } catch (java.lang.Exception e) {
-                                throw new java.lang.IllegalArgumentException();
+                                if (enumeration==null) throw new java.lang.IllegalArgumentException();
+                                return enumeration;
                             }
-                        }
-                        public boolean equals(java.lang.Object obj) {return (obj == this);}
-                        public int hashCode() { return toString().hashCode();}
-                        public java.lang.String toString() {
-                        <xsl:choose>
-                            <xsl:when test="@primitive">
-                                return <xsl:value-of select="$varName"/> + "";
-                            </xsl:when>
-                            <xsl:otherwise>
-                                return <xsl:value-of select="$varName"/>.toString();
-                            </xsl:otherwise>
-                        </xsl:choose>
+                            public static <xsl:value-of select="$name"/> fromString(java.lang.String value)
+                                  throws java.lang.IllegalArgumentException {
+                                try {
+                                   <xsl:choose>
+                                       <xsl:when test="@primitive">
+                                         return fromValue(org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(value));
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                           return fromValue(new <xsl:value-of select="$propertyType"/>(value));
+                                       </xsl:otherwise>
+                                   </xsl:choose>
 
-                        }
-
-                    </xsl:if>
-                    <xsl:if test="not(enumFacet)">
-                    <!-- Generate a tracker only if the min occurs is zero, which means if the user does
-                       not bother to set that value, we do not send it -->
-                       <xsl:if test="$min=0 or $choice">
-                       /*  This tracker boolean wil be used to detect whether the user called the set method
-                      *   for this attribute. It will be used to determine whether to include this field
-                       *   in the serialized XML
-                       */
-                       protected boolean <xsl:value-of select="$settingTracker"/> = false ;
-                       </xsl:if>
-
-                       /**
-                       * Auto generated getter method
-                       * @return <xsl:value-of select="$propertyType"/>
-                       */
-                       public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
-                           return <xsl:value-of select="$varName"/>;
-                       }
+                                } catch (java.lang.Exception e) {
+                                    throw new java.lang.IllegalArgumentException();
+                                }
+                            }
+                            public boolean equals(java.lang.Object obj) {return (obj == this);}
+                            public int hashCode() { return toString().hashCode();}
+                            public java.lang.String toString() {
+                            <xsl:choose>
+                                <xsl:when test="@primitive">
+                                    return <xsl:value-of select="$varName"/> + "";
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    return <xsl:value-of select="$varName"/>.toString();
+                                </xsl:otherwise>
+                            </xsl:choose>
 
-                       <!-- When generating the setters, we have to cater differently for the array!-->
-                    <xsl:choose>
-                           <xsl:when test="@array">
-                           <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
+                            }
 
+                        </xsl:if>
+                        <xsl:if test="not(enumFacet)">
+                        <!-- Generate a tracker only if the min occurs is zero, which means if the user does
+                           not bother to set that value, we do not send it -->
+                           <xsl:if test="$min=0 or $choice">
+                           /*  This tracker boolean wil be used to detect whether the user called the set method
+                          *   for this attribute. It will be used to determine whether to include this field
+                           *   in the serialized XML
+                           */
+                           protected boolean <xsl:value-of select="$settingTracker"/> = false ;
+                           </xsl:if>
 
-                           <!-- generate the validator Method, this is specifiacally for validating the arrays-->
-                          /**
-                           * validate the array for <xsl:value-of select="$javaName"/>
+                           /**
+                           * Auto generated getter method
+                           * @return <xsl:value-of select="$propertyType"/>
                            */
-                          protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
-                         <xsl:if test="not(@unbound)">
-                          if (param.length &gt; <xsl:value-of select="@maxOccurs"/>){
-                            throw new java.lang.RuntimeException();
-                          }
-                          </xsl:if>
-                          <xsl:if test="$min!=0">
-                          if (param.length &lt; <xsl:value-of select="$min"/>){
-                            throw new java.lang.RuntimeException();
-                          }
-                          </xsl:if>
-                          }
+                           public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
+                               return <xsl:value-of select="$varName"/>;
+                           }
 
+                           <!-- When generating the setters, we have to cater differently for the array!-->
+                        <xsl:choose>
+                               <xsl:when test="@array">
+                               <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable>
 
-                         /**
-                          * Auto generated setter method
-                          * @param param <xsl:value-of select="$javaName"/>
-                          */
-                          public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
-                          <!-- call the validator-->
-                               validate<xsl:value-of select="$javaName"/>(param);
 
-                           <xsl:if test="$choice">
-                               clearAllSettingTrackers();
-                           </xsl:if>
-                           <xsl:if test="$min=0 or $choice">
-                               <!-- the updating of setting tracker for null values should
-                                 happen if the attribute is marked as nillable. Else
-                                 the user can set a null value and it is never marked
-                                 as set
-                               -->
-                               <xsl:choose>
-                                  <xsl:when test="not(@nillable) and not(@primitive)">
-                                  if (param !=null){
-                                  //update the setting tracker
-                                  <xsl:value-of select="$settingTracker"/> = true;
-                                   }
-                                   </xsl:when>
-                                   <xsl:otherwise>
-                                   //update the setting tracker
-                                  <xsl:value-of select="$settingTracker"/> = true;
-                                   </xsl:otherwise>
-                               </xsl:choose>
-                           </xsl:if>
-                                  this.<xsl:value-of select="$varName"/>=param;
-                          }
+                               <!-- generate the validator Method, this is specifiacally for validating the arrays-->
+                              /**
+                               * validate the array for <xsl:value-of select="$javaName"/>
+                               */
+                              protected void validate<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                             <xsl:if test="not(@unbound)">
+                              if ((param != null) &amp;&amp; (param.length &gt; <xsl:value-of select="@maxOccurs"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                              </xsl:if>
+                              <xsl:if test="$min!=0">
+                              if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                                throw new java.lang.RuntimeException();
+                              }
+                              </xsl:if>
+                              }
 
-                           <!--
 
-                           we special case the 'array' scenario and generate a
-                           convenience method for adding elements one by one to
-                           the array. The current implementation is somewhat
-                           inefficient but gets the job done.Since a primitive
-                           cannot be treated as an object it has to be ignored!
+                             /**
+                              * Auto generated setter method
+                              * @param param <xsl:value-of select="$javaName"/>
+                              */
+                              public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                              <!-- call the validator-->
+                                   validate<xsl:value-of select="$javaName"/>(param);
+
+                               <xsl:if test="$choice">
+                                   clearAllSettingTrackers();
+                               </xsl:if>
+                               <xsl:if test="$min=0 or $choice">
+                                   <!-- the updating of setting tracker for null values should
+                                     happen if the attribute is marked as nillable. Else
+                                     the user can set a null value and it is never marked
+                                     as set
+                                   -->
+                                  <xsl:choose>
+                                      <xsl:when test="@primitive and not(@array)">
+                                          // setting the primitive attribute to true
+                                          <xsl:value-of select="$settingTracker"/> = true;
+                                      </xsl:when>
+                                      <xsl:otherwise>
+                                          if (param != null){
+                                             //update the setting tracker
+                                             <xsl:value-of select="$settingTracker"/> = true;
+                                          } else {
+                                             <xsl:choose>
+                                                 <xsl:when test="@nillable">
+                                                     <xsl:value-of select="$settingTracker"/> = true;
+                                                 </xsl:when>
+                                                 <xsl:otherwise>
+                                                     <xsl:value-of select="$settingTracker"/> = false;
+                                                 </xsl:otherwise>
+                                             </xsl:choose>
+                                          }
+                                      </xsl:otherwise>
+                                   </xsl:choose>
 
-                         -->
-                         <xsl:if test="not(@primitive)">
-                         /**
-                         * Auto generated add method for the array for convenience
-                         * @param param <xsl:value-of select="$basePropertyType"/>
-                         */
-                         public void add<xsl:value-of select="$javaName"/>(<xsl:value-of select="$basePropertyType"/> param){
-                               if (<xsl:value-of select="$varName"/> == null){
-                               <xsl:value-of select="$varName"/> = new <xsl:value-of select="$propertyType"/>{};
-                               }
+                               </xsl:if>
+                                      this.<xsl:value-of select="$varName"/>=param;
+                              }
 
-                        <xsl:if test="$choice">
-                               clearAllSettingTrackers();
-                        </xsl:if>
-                        <xsl:if test="$min=0 or $choice">
-                             //update the setting tracker
-                            <xsl:value-of select="$settingTracker"/> = true;
-                        </xsl:if>
+                               <!--
 
-                           java.util.List list =
-                        org.apache.axis2.databinding.utils.ConverterUtil.toList(<xsl:value-of select="$varName"/>);
-                           list.add(param);
-                           this.<xsl:value-of select="$varName"/> =
-                         (<xsl:value-of select="$propertyType"/>)list.toArray(
-                        new <xsl:value-of select="$basePropertyType"/>[list.size()]);
+                               we special case the 'array' scenario and generate a
+                               convenience method for adding elements one by one to
+                               the array. The current implementation is somewhat
+                               inefficient but gets the job done.Since a primitive
+                               cannot be treated as an object it has to be ignored!
+
+                             -->
+                             <xsl:if test="not(@primitive)">
+                             /**
+                             * Auto generated add method for the array for convenience
+                             * @param param <xsl:value-of select="$basePropertyType"/>
+                             */
+                             public void add<xsl:value-of select="$javaName"/>(<xsl:value-of select="$basePropertyType"/> param){
+                                   if (<xsl:value-of select="$varName"/> == null){
+                                   <xsl:value-of select="$varName"/> = new <xsl:value-of select="$propertyType"/>{};
+                                   }
 
-                         }
-                         </xsl:if>
-                         <!-- end of special casing for the array-->
+                            <xsl:if test="$choice">
+                                   clearAllSettingTrackers();
+                            </xsl:if>
+                            <xsl:if test="$min=0 or $choice">
+                                 //update the setting tracker
+                                <xsl:value-of select="$settingTracker"/> = true;
+                            </xsl:if>
 
-                           </xsl:when>
-                        <!-- Non array setter method-->
-                        <xsl:otherwise>
-                        /**
-                           * Auto generated setter method
-                           * @param param <xsl:value-of select="$javaName"/>
-                           */
-                           public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
-                        <xsl:if test="$choice">
-                            clearAllSettingTrackers();
-                        </xsl:if>
-                        <xsl:if test="$min=0 or $choice">
-                            //update the setting tracker
-                        <xsl:value-of select="$settingTracker"/> = true;
-                        </xsl:if>
+                               java.util.List list =
+                            org.apache.axis2.databinding.utils.ConverterUtil.toList(<xsl:value-of select="$varName"/>);
+                               list.add(param);
+                               this.<xsl:value-of select="$varName"/> =
+                             (<xsl:value-of select="$propertyType"/>)list.toArray(
+                            new <xsl:value-of select="$basePropertyType"/>[list.size()]);
 
-                           <xsl:choose>
-                        <xsl:when test="(@restrictionBaseType)">
-                           <xsl:choose>
-                            <xsl:when test="(@patternFacet)">
-                                if ( param.matches( "<xsl:value-of select="$patternFacet"/>" )) {
-                                    this.<xsl:value-of select="$varName"/>=param;
-                                }
-                                else {
-                                    throw new java.lang.RuntimeException();
-                                }
-                            </xsl:when>
-                            <xsl:when test="(@lenFacet)">
-                                if ( param.length() == <xsl:value-of select="@lenFacet"/> ) {
-                                    this.<xsl:value-of select="$varName"/>=param;
-                                }
-                                else {
-                                    throw new java.lang.RuntimeException();
-                                }
-                            </xsl:when>
-                            <xsl:when test="(@maxLenFacet) or (@minLenFacet)">
-                                if ( <xsl:if test="(@minLenFacet)"> <xsl:value-of select="$minLenFacet"/> &lt; </xsl:if> param.length() <xsl:if test="(@maxLenFacet)"> &gt; <xsl:value-of select="$maxLenFacet"/> = </xsl:if> ) {
-                                    this.<xsl:value-of select="$varName"/>=param;
-                                }
-                                else {
-                                    throw new java.lang.RuntimeException();
-                                }
-                            </xsl:when>
-                            <xsl:when test="(@maxExFacet) or (@minExFacet) or (@maxInFacet) or (@minInFacet)">
-                                if ( <xsl:if test="(@minExFacet)"> <xsl:value-of select="$minExFacet"/> &lt; </xsl:if> <xsl:if test="(@minInFacet)"> <xsl:value-of select="$minInFacet"/> &lt;= </xsl:if> param <xsl:if test="(@maxExFacet)"> &gt; <xsl:value-of select="$maxExFacet"/> </xsl:if> <xsl:if test="(@maxInFacet)"> &gt;= <xsl:value-of select="$maxInFacet"/> </xsl:if> ) {
+                             }
+                             </xsl:if>
+                             <!-- end of special casing for the array-->
 
-                                    this.<xsl:value-of select="$varName"/>=param;
-                                }
-                                else {
-                                    throw new java.lang.RuntimeException();
-                                }
+                               </xsl:when>
+                            <!-- Non array setter method-->
+                            <xsl:otherwise>
+                            /**
+                               * Auto generated setter method
+                               * @param param <xsl:value-of select="$javaName"/>
+                               */
+                               public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                            <xsl:if test="$choice">
+                                clearAllSettingTrackers();
+                            </xsl:if>
+                            <xsl:if test="$min=0 or $choice">
+                                <xsl:choose>
+                                   <xsl:when test="@primitive and not(@array)">
+                                       // setting primitive attribute tracker to true
+                                       <xsl:value-of select="$settingTracker"/> = true;
+                                   </xsl:when>
+                                   <xsl:otherwise>
+                                       if (param != null){
+                                          //update the setting tracker
+                                          <xsl:value-of select="$settingTracker"/> = true;
+                                       } else {
+                                          <xsl:choose>
+                                              <xsl:when test="@nillable">
+                                                  <xsl:value-of select="$settingTracker"/> = true;
+                                              </xsl:when>
+                                              <xsl:otherwise>
+                                                  <xsl:value-of select="$settingTracker"/> = false;
+                                              </xsl:otherwise>
+                                          </xsl:choose>
+                                       }
+                                   </xsl:otherwise>
+                                </xsl:choose>
+                            </xsl:if>
+
+                               <xsl:choose>
+                            <xsl:when test="(@restrictionBaseType)">
+                               <xsl:choose>
+                                <xsl:when test="(@patternFacet)">
+                                    if ( param.matches( "<xsl:value-of select="$patternFacet"/>" )) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@lenFacet)">
+                                    if ( param.length() == <xsl:value-of select="@lenFacet"/> ) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@maxLenFacet) or (@minLenFacet)">
+                                    if ( <xsl:if test="(@minLenFacet)"> <xsl:value-of select="$minLenFacet"/> &lt; </xsl:if> param.length() <xsl:if test="(@maxLenFacet)"> &gt; <xsl:value-of select="$maxLenFacet"/> = </xsl:if> ) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@maxExFacet) or (@minExFacet) or (@maxInFacet) or (@minInFacet)">
+                                    if ( <xsl:if test="(@minExFacet)"> <xsl:value-of select="$minExFacet"/> &lt; </xsl:if> <xsl:if test="(@minInFacet)"> <xsl:value-of select="$minInFacet"/> &lt;= </xsl:if> param <xsl:if test="(@maxExFacet)"> &gt; <xsl:value-of select="$maxExFacet"/> </xsl:if> <xsl:if test="(@maxInFacet)"> &gt;= <xsl:value-of select="$maxInFacet"/> </xsl:if> ) {
+
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new java.lang.RuntimeException();
+                                    }
+                                </xsl:when>
+                                <xsl:otherwise>
+                                     this.<xsl:value-of select="$varName"/>=param;
+                                </xsl:otherwise>
+                            </xsl:choose>
                             </xsl:when>
+
                             <xsl:otherwise>
-                                 this.<xsl:value-of select="$varName"/>=param;
+                                    this.<xsl:value-of select="$varName"/>=param;
                             </xsl:otherwise>
-                        </xsl:choose>
-                        </xsl:when>
+                            </xsl:choose>
 
-                        <xsl:otherwise>
-                                this.<xsl:value-of select="$varName"/>=param;
-                        </xsl:otherwise>
+                               }
+                            </xsl:otherwise>
                         </xsl:choose>
+                        </xsl:if>
 
-                           }
-                        </xsl:otherwise>
-                    </xsl:choose>
-                    </xsl:if>
-
-                  </xsl:otherwise>
-               </xsl:choose>
+                      </xsl:otherwise>
+                   </xsl:choose>
 
-            </xsl:otherwise>
+                </xsl:otherwise>
             </xsl:choose>
 
              <!-- end of xsl:if for not(@inherited) -->
             </xsl:if>
 
-
-
         </xsl:for-each>
 
      <!-- ######################################################################################### -->
@@ -522,8 +558,8 @@
                         xmlWriter.setPrefix(prefix, namespace);
                     }
                 } else {
-            xmlWriter.writeStartElement(parentQName.getLocalPart());
-        }
+                    xmlWriter.writeStartElement(parentQName.getLocalPart());
+                }
 
                 <!-- write the type attribute if needed -->
                <xsl:if test="$extension">
@@ -583,6 +619,8 @@
                     <xsl:variable name="settingTracker">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable>
 
                     <xsl:variable name="propertyType"><xsl:value-of select="@type"/></xsl:variable>
+                    <xsl:variable name="propertyTypeName">javax.xml.namespace.QName</xsl:variable>
+
 
                     <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if>
                     <xsl:choose>
@@ -591,25 +629,25 @@
                                 <xsl:when test="@nillable">
                                     if (<xsl:value-of select="$varName"/>==null){
 
-                        java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
 
-                    if (! namespace2.equals("")) {
-                        java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
 
-                        if (prefix2 == null) {
-                            prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                                            if (prefix2 == null) {
+                                                prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
 
-                            xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
-                            xmlWriter.writeNamespace(prefix2, namespace2);
-                            xmlWriter.setPrefix(prefix2, namespace2);
+                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                xmlWriter.writeNamespace(prefix2, namespace2);
+                                                xmlWriter.setPrefix(prefix2, namespace2);
 
-                        } else {
-                            xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
-                        }
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                            }
 
-                    } else {
-                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
-                    }
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                        }
 
 
                                        // write the nil attribute
@@ -632,207 +670,426 @@
                             </xsl:choose>
                         </xsl:when>
                         <xsl:when test="@ours and @array and not(@default)">
-                             <xsl:choose>
+                             if (<xsl:value-of select="$varName"/>!=null){
+                                    for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                        if (<xsl:value-of select="$varName"/>[i] != null){
+                                         <xsl:value-of select="$varName"/>[i].getOMElement(
+                                                   new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                                   factory).serialize(xmlWriter);
+                                        } else {
+                                           <xsl:choose>
+                                            <xsl:when test="@nillable">
+                                                    // write null attribute
+                                                    java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                                    if (! namespace2.equals("")) {
+                                                        java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                        if (prefix2 == null) {
+                                                            prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                            xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                            xmlWriter.writeNamespace(prefix2, namespace2);
+                                                            xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                        } else {
+                                                            xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                        }
+
+                                                    } else {
+                                                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                    }
+
+                                                   // write the nil attribute
+                                                   writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                   xmlWriter.writeEndElement();
+                                            </xsl:when>
+                                            <xsl:when test="$min=0">
+                                                // we don't have to do any thing since minOccures is zero
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                   throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                        }
+
+                                    }
+                             } else {
+                                <xsl:choose>
                                 <xsl:when test="@nillable">
-                                    // this property is nillable
-                                    if (<xsl:value-of select="$varName"/>!=null){
-                                    <!--this bracket needs to be closed!-->
+                                        // write null attribute
+                                        java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                            if (prefix2 == null) {
+                                                prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                xmlWriter.writeNamespace(prefix2, namespace2);
+                                                xmlWriter.setPrefix(prefix2, namespace2);
+
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                       // write the nil attribute
+                                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                       xmlWriter.writeEndElement();
                                 </xsl:when>
                                 <xsl:otherwise>
-                                    if (<xsl:value-of select="$varName"/>==null){
-                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
-                                    }
+                                       throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
                                 </xsl:otherwise>
                             </xsl:choose>
-
-                            for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
-                             <xsl:value-of select="$varName"/>[i].getOMElement(
-                                       new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
-                                       factory).serialize(xmlWriter);
-
                             }
-                            <!--we've opened a bracket for the nulls - fix it here-->
-                            <xsl:if test="@nillable">}</xsl:if>
                         </xsl:when>
 
-                         <xsl:when test="@default and @array">
+                        <xsl:when test="@default and @array">
                             <!-- Note - Assumed to be OMElement-->
-                            <xsl:choose>
-                               <xsl:when test="@nillable">
-                                    // this property is nillable
-                                    if (<xsl:value-of select="$varName"/>!=null){
-                                    <!--this bracket needs to be closed!-->
-                                </xsl:when>
-                                <xsl:otherwise>
-                                    if (<xsl:value-of select="$varName"/>==null){
-                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            if (<xsl:value-of select="$varName"/>!=null){
+                                 for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                    if (<xsl:value-of select="$varName"/>[i] != null){
+                                        <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                                    } else {
+                                       <xsl:choose>
+                                       <xsl:when test="@nillable">
+                                            // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                        </xsl:when>
+                                        <xsl:when test="$min=0">
+                                              // we have to do nothing since minOccurs is zero
+                                        </xsl:when>
+                                        <xsl:otherwise>
+                                             throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                        </xsl:otherwise>
+                                    </xsl:choose>
                                     }
-                                </xsl:otherwise>
-                            </xsl:choose>
+                                 }
+                            } else {
+                                 <xsl:choose>
+                                   <xsl:when test="@nillable">
+                                        // write null attribute
+                                        java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                            if (prefix2 == null) {
+                                                prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                xmlWriter.writeNamespace(prefix2, namespace2);
+                                                xmlWriter.setPrefix(prefix2, namespace2);
 
-                              for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
-                                  <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
-                              }
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                            }
 
-                            <!--we've opened a bracket for the nulls - fix it here-->
-                            <xsl:if test="@nillable">}</xsl:if>
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                       // write the nil attribute
+                                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                       xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                            }
 
                         </xsl:when>
 
                         <xsl:when test="@default and not(@array)">
                             <!-- Note - Assumed to be OMElement-->
-                            <xsl:choose>
-                             <xsl:when test="@nillable">
-                                    // this property is nillable
-                                    if (<xsl:value-of select="$varName"/>!=null){
-                                    <!--this bracket needs to be closed!-->
-                                </xsl:when>
-                                <xsl:otherwise>
-                                    if (<xsl:value-of select="$varName"/>==null){
+                            if (<xsl:value-of select="$varName"/>!=null){
+                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                            } else {
+                                <xsl:choose>
+                                 <xsl:when test="@nillable">
+                                        // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
+
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
+
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
                                          throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
-                                    }
-                                </xsl:otherwise>
-                             </xsl:choose>
-                             <xsl:value-of select="$varName"/>.serialize(xmlWriter);
-                             <xsl:if test="@nillable">}</xsl:if>
+                                    </xsl:otherwise>
+                                 </xsl:choose>
+                            }
+
+
                         </xsl:when>
                         <!-- handle non ADB arrays - Not any however -->
                         <xsl:when test="@array and not(@any)">
-                             <xsl:choose>
-                                <xsl:when test="@nillable">
-                                    // this property is nillable
-                                    if (<xsl:value-of select="$varName"/>!=null){
-                                    <!--this bracket needs to be closed!-->
-                                </xsl:when>
-                                <xsl:otherwise>
-                                    if (<xsl:value-of select="$varName"/>==null){
-                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
-                                    }
-                                </xsl:otherwise>
-                            </xsl:choose>
+                             if (<xsl:value-of select="$varName"/>!=null) {
+                                   for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                        <xsl:if test="@primitive">
+                                            namespace = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace.equals("")) {
+                                                prefix = xmlWriter.getPrefix(namespace);
+
+                                                if (prefix == null) {
+                                                    prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                    xmlWriter.writeNamespace(prefix, namespace);
+                                                    xmlWriter.setPrefix(prefix, namespace);
 
-                            for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
-                                        namespace = "<xsl:value-of select="$namespace"/>";
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                }
 
-                    if (! namespace.equals("")) {
-                        prefix = xmlWriter.getPrefix(namespace);
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
+                                            xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                            xmlWriter.writeEndElement();
 
-                        if (prefix == null) {
-                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                                        </xsl:if>
+                                        <xsl:if test="not(@primitive)">
+                                            if (<xsl:value-of select="$varName"/>[i] != null){
+                                                namespace = "<xsl:value-of select="$namespace"/>";
+                                                if (! namespace.equals("")) {
+                                                    prefix = xmlWriter.getPrefix(namespace);
+
+                                                    if (prefix == null) {
+                                                        prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                        xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                        xmlWriter.writeNamespace(prefix, namespace);
+                                                        xmlWriter.setPrefix(prefix, namespace);
+
+                                                    } else {
+                                                        xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                    }
+
+                                                } else {
+                                                    xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                }
+                                                xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                                xmlWriter.writeEndElement();
 
-                            xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
-                            xmlWriter.writeNamespace(prefix, namespace);
-                            xmlWriter.setPrefix(prefix, namespace);
+                                            } else {
+                                               <xsl:choose>
+                                                   <xsl:when test="@nillable">
+                                                       // write null attribute
+                                                        namespace = "<xsl:value-of select="$namespace"/>";
+                                                        if (! namespace.equals("")) {
+                                                            prefix = xmlWriter.getPrefix(namespace);
+
+                                                            if (prefix == null) {
+                                                                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                                xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                                xmlWriter.writeNamespace(prefix, namespace);
+                                                                xmlWriter.setPrefix(prefix, namespace);
+
+                                                            } else {
+                                                                xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                            }
+
+                                                        } else {
+                                                            xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                        }
+                                                        writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                        xmlWriter.writeEndElement();
+                                                   </xsl:when>
+                                                   <xsl:when test="$min=0">
+                                                       // we have to do nothing since minOccurs is zero
+                                                   </xsl:when>
+                                                   <xsl:otherwise>
+                                                       throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                   </xsl:otherwise>
 
-                        } else {
-                            xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
-                        }
+                                               </xsl:choose>
+                                            }
+                                        </xsl:if>
+                                   }
+                             } else {
+                                 <xsl:choose>
+                                    <xsl:when test="@nillable">
+                                         // write the null attribute
+                                        // write null attribute
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+                                            if (! namespace2.equals("")) {
+                                                java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                                if (prefix2 == null) {
+                                                    prefix2 = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace2);
+                                                    xmlWriter.writeNamespace(prefix2, namespace2);
+                                                    xmlWriter.setPrefix(prefix2, namespace2);
 
-                    } else {
-                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
-                    }
+                                                } else {
+                                                    xmlWriter.writeStartElement(namespace2,"<xsl:value-of select="$propertyName"/>");
+                                                }
 
+                                            } else {
+                                                xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                            }
 
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                             }
 
-                            <xsl:if test="not(@primitive)">
-                                if (<xsl:value-of select="$varName"/>[i]==null){
-                                    // write the nil attribute
-                                    writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
-                                }else{
-                                   xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
-                                }
-                            </xsl:if>
-                            <xsl:if test="@primitive">
-                                 xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
-                            </xsl:if>
-                              xmlWriter.writeEndElement();
-                            }
-                            <!--we've opened a bracket for the nulls - fix it here-->
-                            <xsl:if test="@nillable">}</xsl:if>
                         </xsl:when>
 
                          <!-- handle non ADB arrays  - Any case  - any may not be
                          nillable -->
                         <xsl:when test="@array and @any">
                             <!-- Note - Assumed to be OMElement-->
-                            for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
-                              <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                            if (<xsl:value-of select="$varName"/> != null){
+                                for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                    if (<xsl:value-of select="$varName"/>[i] != null){
+                                        <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                                    } else {
+                                        <xsl:choose>
+                                            <xsl:when test="$min=0">
+                                                // we have to do nothing since minOccures zero
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    }
+                                }
+                            } else {
+                                throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
                             }
                         </xsl:when>
                         <!-- handle any - non array case-->
                          <xsl:when test="@any">
                             <!-- Note - Assumed to be OMElement-->
-                            <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                            if (<xsl:value-of select="$varName"/> != null) {
+                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                            } else {
+                               throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            }
                         </xsl:when>
                         <!-- handle all other cases -->
                          <xsl:otherwise>
-                            <xsl:if test="not($simple)">
-                     namespace = "<xsl:value-of select="$namespace"/>";
-
-                    if (! namespace.equals("")) {
-                        prefix = xmlWriter.getPrefix(namespace);
-
-                        if (prefix == null) {
-                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
-
-                            xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
-                            xmlWriter.writeNamespace(prefix, namespace);
-                            xmlWriter.setPrefix(prefix, namespace);
+                                <xsl:if test="not($simple)">
+                                    namespace = "<xsl:value-of select="$namespace"/>";
+                                    if (! namespace.equals("")) {
+                                        prefix = xmlWriter.getPrefix(namespace);
+
+                                        if (prefix == null) {
+                                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+                                            xmlWriter.writeStartElement(prefix,"<xsl:value-of select="$propertyName"/>", namespace);
+                                            xmlWriter.writeNamespace(prefix, namespace);
+                                            xmlWriter.setPrefix(prefix, namespace);
 
-                        } else {
-                            xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
-                        }
+                                        } else {
+                                            xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                        }
 
-                    } else {
-                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
-                    }
-                            </xsl:if>
+                                    } else {
+                                        xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                    }
+                                </xsl:if>
                              <xsl:choose>
                                  <!-- handle the binary case -->
                                  <xsl:when test="@binary">
-					<!-- Handling the null byte array -->                                 
-                    if (<xsl:value-of select="$varName"/>!=null)
-                    {
-                    	org.apache.axiom.om.impl.llom.OMTextImpl <xsl:value-of select="$varName"/>_binary = new  org.apache.axiom.om.impl.llom.OMTextImpl( <xsl:value-of select="$varName"/>, org.apache.axiom.om.OMAbstractFactory.getOMFactory());
-                    	<xsl:value-of select="$varName"/>_binary.internalSerializeAndConsume(xmlWriter);
-                    }	
+
+                                        <!-- Handling the null byte array -->
+                                    if (<xsl:value-of select="$varName"/>!=null)
+                                    {
+                                        org.apache.axiom.om.impl.llom.OMTextImpl <xsl:value-of select="$varName"/>_binary = new  org.apache.axiom.om.impl.llom.OMTextImpl( <xsl:value-of select="$varName"/>, org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+                                        <xsl:value-of select="$varName"/>_binary.internalSerializeAndConsume(xmlWriter);
+                                    }
+
                                  </xsl:when>
                                  <xsl:otherwise>
-                                      <xsl:if test="not(@primitive)">
+                                    <xsl:if test="not(@primitive)">
+
                                           if (<xsl:value-of select="$varName"/>==null){
-                                          // write the nil attribute
-                                          writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
-                                         }else{
-                                          <xsl:choose>
-                                              <xsl:when test="$propertyType='javax.xml.namespace.QName'">
-                                                    java.lang.String namespaceURI =<xsl:value-of select="$varName"/>.getNamespaceURI();
-                                                    if(namespaceURI !=null){
-                                                       prefix = <xsl:value-of select="$varName"/>.getPrefix();
-                                                       if (prefix == null) {
-                                                        prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
-                                                      }
-                                                     xmlWriter.writeNamespace(prefix,namespaceURI );
-                                                     xmlWriter.writeCharacters(prefix + ":"+ org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
-                                                    } else {
-                                                       xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
-                                                    }
-                                              </xsl:when>
-                                              <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'">
-                                                  <xsl:value-of select="$varName"/>.serialize(xmlWriter);
-                                              </xsl:when>
-                                              <xsl:otherwise>
-                                               xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
-                                               </xsl:otherwise>
-                                          </xsl:choose>
-                                         }
+                                              // write the nil attribute
+                                              <xsl:choose>
+                                                  <xsl:when test="@nillable">
+                                                     writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","true",xmlWriter);
+                                                  </xsl:when>
+                                                  <xsl:otherwise>
+                                                     throw new RuntimeException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                  </xsl:otherwise>
+                                              </xsl:choose>
+                                          }else{
+                                                   <xsl:if test="$propertyTypeName=$propertyType">
+                                                        java.lang.String namespaceURI =<xsl:value-of select="$varName"/>.getNamespaceURI();
+                                                        if(namespaceURI !=null){
+                                                           prefix = <xsl:value-of select="$varName"/>.getPrefix();
+                                                           if (prefix == null) {
+                                                            prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                                                          }
+                                                         xmlWriter.writeNamespace(prefix,namespaceURI );
+                                                         xmlWriter.writeCharacters(prefix + ":"+ org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                        } else {
+                                                           xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                        }
+                                                   </xsl:if>
+                                                  <xsl:if test="not($propertyTypeName=$propertyType)">
+                                                   xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                                  </xsl:if>
+                                          }
                                     </xsl:if>
                                     <xsl:if test="@primitive">
                                        xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
-                                  </xsl:if>
+                                    </xsl:if>
                                  </xsl:otherwise>
                              </xsl:choose>
                              <xsl:if test="not($simple)">
-                    xmlWriter.writeEndElement();
+                                   xmlWriter.writeEndElement();
                              </xsl:if>
                         </xsl:otherwise>
                     </xsl:choose>
@@ -844,15 +1101,16 @@
             <!-- end of when for type & anon -->
             </xsl:when>
 
-
             <!-- Not a type and not anon. So it better be only one inclusion-->
             <xsl:otherwise>
                 <!-- if the element is associated with a type, then its gonna be only one -->
                 //We can safely assume an element has only one type associated with it
                 <xsl:variable name="varName">local<xsl:value-of select="property/@javaname"/></xsl:variable>
-                <xsl:variable name="nillable" select="property/@nillable"/>
-                <xsl:variable name="primitive" select="property/@primitive"/>
+                <xsl:variable name="nillable"><xsl:value-of select="property/@nillable"/></xsl:variable>
+                <xsl:variable name="primitive"><xsl:value-of select="property/@primitive"/></xsl:variable>
                 <xsl:variable name="propertyType"><xsl:value-of select="property/@type"/></xsl:variable>
+                <xsl:variable name="propertyTypeName">javax.xml.namespace.QName</xsl:variable>
+
 
                 <xsl:choose>
                     <!-- This better be only one!!-->
@@ -860,25 +1118,25 @@
                         <xsl:choose>
                             <xsl:when test="$nillable">
                                       if (<xsl:value-of select="$varName"/>==null){
-                        java.lang.String namespace = "<xsl:value-of select="property/@nsuri"/>";
+                                        java.lang.String namespace = "<xsl:value-of select="property/@nsuri"/>";
 
-                        if (! namespace.equals("")) {
-                            java.lang.String prefix = xmlWriter.getPrefix(namespace);
+                                        if (! namespace.equals("")) {
+                                            java.lang.String prefix = xmlWriter.getPrefix(namespace);
 
-                            if (prefix == null) {
-                                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+                                            if (prefix == null) {
+                                                prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
 
-                                xmlWriter.writeStartElement(prefix,"<xsl:value-of select="property/@name"/>", namespace);
-                                xmlWriter.writeNamespace(prefix, namespace);
-                                xmlWriter.setPrefix(prefix, namespace);
+                                                xmlWriter.writeStartElement(prefix,"<xsl:value-of select="property/@name"/>", namespace);
+                                                xmlWriter.writeNamespace(prefix, namespace);
+                                                xmlWriter.setPrefix(prefix, namespace);
 
-                            } else {

[... 606 lines stripped ...]


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org