You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ve...@apache.org on 2009/07/03 21:41:37 UTC

svn commit: r790996 [4/6] - in /webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template: ADBBeanTemplate-bean.xsl ADBBeanTemplate-helpermode.xsl ADBBeanTemplate.xsl

Added: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl?rev=790996&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl (added)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl Fri Jul  3 19:41:36 2009
@@ -0,0 +1,2439 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License. You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied. See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:template match="bean[@helperMode]">
+
+        <xsl:variable name="name" select="@name"/>
+        <xsl:variable name="choice" select="@choice"/>
+        <xsl:variable name="simple" select="@simple"/>
+        <xsl:variable name="ordered" select="@ordered"/>
+        <xsl:variable name="unordered" select="not($ordered)"/>  <!-- for convenience -->
+        <xsl:variable name="isType" select="@type"/>
+        <xsl:variable name="anon" select="@anon"/>
+
+        <xsl:variable name="nsuri" select="@nsuri"/>
+        <xsl:variable name="originalName" select="@originalName"/>
+        <xsl:variable name="nsprefix" select="@nsprefix"/>
+        <xsl:variable name="extension" select="@extension"/>
+        <xsl:variable name="restriction" select="@restriction"/>
+        <xsl:variable name="mapperClass" select="@mapperClass"/>
+        <xsl:variable name="package" select="@package"/>
+        <xsl:variable name="helpername"><xsl:value-of select="$name"/>Helper</xsl:variable>
+       <!-- write the class header. this should be done only when unwrapped -->
+
+        <xsl:if test="not(not(@unwrapped) or (@skip-write))">
+/**
+ * <xsl:value-of select="$name"/>.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis2 version: #axisVersion# #today#
+ */
+
+            package <xsl:value-of select="@package"/>;
+            /**
+            *  <xsl:value-of select="$name"/> bean class
+            */
+        </xsl:if>
+
+
+    <xsl:choose>
+    <xsl:when test="not(@helper)">
+
+    public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$name"/> <xsl:if test="$extension"> extends <xsl:value-of select="$extension"/></xsl:if>
+        {
+        <xsl:choose>
+            <xsl:when test="@type">/* This type was generated from the piece of schema that had
+                name = <xsl:value-of select="$originalName"/>
+                Namespace URI = <xsl:value-of select="$nsuri"/>
+                Namespace Prefix = <xsl:value-of select="$nsprefix"/>
+                */
+            </xsl:when>
+            <xsl:otherwise>
+                public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName(
+                "<xsl:value-of select="$nsuri"/>",
+                "<xsl:value-of select="$originalName"/>",
+                "<xsl:value-of select="$nsprefix"/>");
+
+            </xsl:otherwise>
+        </xsl:choose>
+
+        private static java.lang.String generatePrefix(java.lang.String namespace) {
+            if(namespace.equals("<xsl:value-of select="$nsuri"/>")){
+                return "<xsl:value-of select="$nsprefix"/>";
+            }
+            return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+        }
+
+        <xsl:if test="$choice">
+            /** Whenever a new property is set ensure all others are unset
+             *  There can be only one choice and the last one wins
+             */
+            private void clearAllSettingTrackers() {
+            <xsl:for-each select="property">
+                local<xsl:value-of select="@javaname"/>Tracker = false;
+           </xsl:for-each>
+            }
+        </xsl:if>
+
+
+        <xsl:for-each select="property">
+            <!-- Write only the NOT inherited properties-->
+            <xsl:if test="not(@inherited)">
+
+            <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
+            <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+            <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
+
+            <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+            <xsl:variable name="varName">local<xsl:value-of select="$javaName"/></xsl:variable>
+            <xsl:variable name="settingTracker">local<xsl:value-of select="$javaName"/>Tracker</xsl:variable>
+
+
+            <xsl:variable name="lenFacet"><xsl:value-of select="@lenFacet"/></xsl:variable>
+               <xsl:variable name="maxLenFacet"><xsl:value-of select="@maxLenFacet"/></xsl:variable>
+               <xsl:variable name="minLenFacet"><xsl:value-of select="@minLenFacet"/></xsl:variable>
+               <xsl:variable name="maxExFacet"><xsl:value-of select="@maxExFacet"/></xsl:variable>
+               <xsl:variable name="minExFacet"><xsl:value-of select="@minExFacet"/></xsl:variable>
+               <xsl:variable name="maxInFacet"><xsl:value-of select="@maxInFacet"/></xsl:variable>
+               <xsl:variable name="minInFacet"><xsl:value-of select="@minInFacet"/></xsl:variable>
+               <xsl:variable name="patternFacet"><xsl:value-of select="@patternFacet"/></xsl:variable>
+            <xsl:variable name="shortTypeNameUncapped"  select="@shorttypename"/>
+            <xsl:variable name="shortTypeName"
+               select="concat(translate( substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" />
+
+
+            <xsl:choose>
+                <xsl:when test="@removed">
+
+               /**
+               * Auto generated getter method
+               * Overridden from <xsl:value-of select="$restriction"/>
+               *
+               * @throws org.apache.axis2.databinding.ADBException
+               */
+               public  <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text>get<xsl:value-of select="$javaName"/>(){
+                   throw new java.lang.org.apache.axis2.databinding.ADBException("property has removed");
+               }
+
+               /**
+               * Auto generated setter method
+               * Overridden from <xsl:value-of select="$restriction"/>
+               *
+               * @param param <xsl:value-of select="$javaName"/>
+               * @throws org.apache.axis2.databinding.ADBException
+               */
+               public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/> param){
+                      throw new org.apache.axis2.databinding.ADBException();
+               }
+
+               </xsl:when>
+                <xsl:otherwise>
+                   <xsl:choose>
+                      <xsl:when test="(@restricted) and (@occuranceChanged) and (not(@typeChanged)) and (not(@rewrite))">
+                            <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) and @array">
+                              if ((param != null) &amp;&amp; (param.length &gt; <xsl:value-of select="@maxOccurs"/>)){
+                                throw new org.apache.axis2.databinding.ADBException();
+                              }
+                         </xsl:if>
+                         <xsl:if test="$min!=0 and @array">
+                              if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                                throw new org.apache.axis2.databinding.ADBException();
+                              }
+                         </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);
+
+                         <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>
+
+                        }
+
+                        <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>
+
+                                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>
+
+                                } 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>
+
+                            }
+
+                        </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"/>;
+                           }
+
+                           <!-- 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>
+
+
+                               <!-- 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 org.apache.axis2.databinding.ADBException();
+                              }
+                              </xsl:if>
+                              <xsl:if test="$min!=0">
+                              if ((param != null) &amp;&amp; (param.length &lt; <xsl:value-of select="$min"/>)){
+                                throw new org.apache.axis2.databinding.ADBException();
+                              }
+                              </xsl:if>
+                              }
+
+
+                             /**
+                              * 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>
+                                      this.<xsl:value-of select="$varName"/>=param;
+                              }
+
+                               <!--
+
+                               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 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:if>
+                             <!-- end of special casing for the array-->
+
+                               </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 org.apache.axis2.databinding.ADBException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@lenFacet)">
+                                    if ( param.length() == <xsl:value-of select="@lenFacet"/> ) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new org.apache.axis2.databinding.ADBException();
+                                    }
+                                </xsl:when>
+                                <xsl:when test="(@maxLenFacet) or (@minLenFacet)">
+
+                                    if ( <xsl:if test="(@minLenFacet)"> (<xsl:value-of select="$minLenFacet"/> &lt; param.length()) </xsl:if>
+                                        <xsl:if test="(@maxLenFacet)"> <xsl:if test="(@minLenFacet)"> &amp;&amp; </xsl:if> (param.length() &gt;= <xsl:value-of select="$maxLenFacet"/>) </xsl:if> ) {
+                                        this.<xsl:value-of select="$varName"/>=param;
+                                    }
+                                    else {
+                                        throw new org.apache.axis2.databinding.ADBException();
+                                    }
+                                </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 org.apache.axis2.databinding.ADBException();
+                                    }
+                                </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;
+                            </xsl:otherwise>
+                            </xsl:choose>
+
+                               }
+                            </xsl:otherwise>
+                        </xsl:choose>
+                        </xsl:if>
+
+                      </xsl:otherwise>
+                   </xsl:choose>
+
+                </xsl:otherwise>
+            </xsl:choose>
+
+             <!-- end of xsl:if for not(@inherited) -->
+            </xsl:if>
+
+        </xsl:for-each>
+
+   }
+    </xsl:when>
+    <xsl:otherwise>
+    <!--  Start of helper generation part of the template-->
+public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$helpername"/> {
+
+     <!-- get OMElement methods that allows direct writing. generated inside the helper class-->
+     <xsl:variable name="fullyQualifiedName"><xsl:value-of select="$package"/>.<xsl:value-of select="$name"/></xsl:variable>
+     <xsl:variable name="fullyQualifiedHelperName"><xsl:value-of select="$package"/>.<xsl:value-of select="$helpername"/></xsl:variable>
+
+        private static java.lang.String generatePrefix(java.lang.String namespace) {
+            if(namespace.equals(<xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME.getNamespaceURI())){
+                return <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME.getPrefix();
+            }
+            return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+        }
+
+        /**
+            * isReaderMTOMAware
+            * @return true if the reader supports MTOM
+            */
+          public static boolean isReaderMTOMAware(javax.xml.stream.XMLStreamReader reader) {
+               boolean isReaderMTOMAware = false;
+               <!-- workaround for the issues in the wstx reader!-->
+               try{
+                 isReaderMTOMAware = java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_DATA_HANDLERS_AWARE));
+               }catch(java.lang.IllegalArgumentException e){
+                 isReaderMTOMAware = false;
+               }
+               return isReaderMTOMAware;
+          }
+            <!-- ######################################################################################### -->
+            <!-- get OMElement methods that allows direct writing -->
+               /**
+               *
+               * @param parentQName
+               * @param factory
+               * @return org.apache.axiom.om.OMElement
+               */
+              public static org.apache.axiom.om.OMElement getOMElement(
+                      final <xsl:value-of select="$fullyQualifiedName"/> bean,
+                      final javax.xml.namespace.QName parentQName,
+                      final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException{
+
+               org.apache.axiom.om.OMDataSource dataSource = getOMDataSource(bean,parentQName, factory);
+
+               <xsl:choose>
+                   <xsl:when test="@type">
+                      return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+                      parentQName,factory,dataSource);
+                   </xsl:when>
+                   <xsl:otherwise>
+                      return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
+                      <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME,factory,dataSource);
+                   </xsl:otherwise>
+              </xsl:choose>
+              }
+
+   /**
+     *
+     * @param parentQName
+     * @param factory
+     * @return org.apache.axiom.om.OMElement
+     */
+    public static org.apache.axiom.om.OMDataSource getOMDataSource(
+            final <xsl:value-of select="$fullyQualifiedName"/> bean,
+            final javax.xml.namespace.QName parentQName,
+            final org.apache.axiom.om.OMFactory factory)throws org.apache.axis2.databinding.ADBException{
+
+
+        org.apache.axiom.om.OMDataSource dataSource =
+                       new org.apache.axis2.databinding.ADBHelperDataSource(bean,parentQName,"<xsl:value-of select="$fullyQualifiedHelperName"/>"){
+
+         public void serialize(
+                           javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+
+           <xsl:value-of select="$fullyQualifiedName"/> typedBean =
+                               (<xsl:value-of select="$fullyQualifiedName"/>)bean;
+
+             <xsl:choose>
+            <xsl:when test="@type or @anon">
+                <!-- For a type write the passed in QName first-->
+
+                java.lang.String prefix = parentQName.getPrefix();
+                java.lang.String namespace = parentQName.getNamespaceURI();
+
+                if (namespace != null) {
+                    java.lang.String writerPrefix = xmlWriter.getPrefix(namespace);
+                    if (writerPrefix != null) {
+                        xmlWriter.writeStartElement(namespace, parentQName.getLocalPart());
+                    } else {
+                        if (prefix == null) {
+                            prefix = generatePrefix(namespace);
+                        }
+
+                        xmlWriter.writeStartElement(prefix, parentQName.getLocalPart(), namespace);
+                        xmlWriter.writeNamespace(prefix, namespace);
+                        xmlWriter.setPrefix(prefix, namespace);
+                    }
+                } else {
+                    xmlWriter.writeStartElement(parentQName.getLocalPart());
+                }
+
+                <!-- write the type attribute if needed -->
+               <xsl:if test="$extension">
+               writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type",
+                       registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>")+":<xsl:value-of select="$originalName"/>",
+                       xmlWriter);
+               </xsl:if>
+                <!--First serialize the attributes!-->
+                <xsl:for-each select="property[@attribute]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">typedBean.local<xsl:value-of select="@javaname"/></xsl:variable>
+                     <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:choose>
+                        <!-- Note - It is assumed that any attributes are OMAttributes-->
+                        <xsl:when test="@any and not(@array)">
+                           writeAttribute(<xsl:value-of select="$varName"/>.getNamespace().getName(),
+                                                     <xsl:value-of select="$varName"/>.getLocalName(),
+                                                     <xsl:value-of select="$varName"/>.getAttributeValue(),
+                                                     xmlWriter);
+                        </xsl:when>
+                        <xsl:when test="@any and @array">
+                             if (<xsl:value-of select="$varName"/> != null) {
+                                 for (int i=0;i &lt;<xsl:value-of select="$varName"/>.length;i++){
+                                     writeAttribute(<xsl:value-of select="$varName"/>[i].getNamespace().getName(),
+                                                    <xsl:value-of select="$varName"/>[i].getLocalName(),
+                                                    <xsl:value-of select="$varName"/>[i].getAttributeValue(),xmlWriter);
+                                     }
+                             }
+                        </xsl:when>
+                        <!-- there can never be attribute arrays in the normal case-->
+                        <xsl:when test="@optional">
+                             // optional attribute <xsl:value-of select="$propertyName"/>
+                             try {
+                                writeAttribute("<xsl:value-of select="$namespace"/>",
+                                               "<xsl:value-of select="$propertyName"/>",
+                                               org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>), xmlWriter);
+                            } catch (NullPointerException e) {
+                                // If <xsl:value-of select="$varName"/> was null
+                                // it can not be serialized.
+                            }
+                        </xsl:when>
+                        <xsl:otherwise>
+                             writeAttribute("<xsl:value-of select="$namespace"/>",
+                                                     "<xsl:value-of select="$propertyName"/>",
+                                                      org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>),
+                            xmlWriter);
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:for-each>
+
+                <!-- Now serialize the elements-->
+                <xsl:for-each select="property[not(@attribute)]">
+                    <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable>
+                    <xsl:variable name="varName">typedBean.local<xsl:value-of select="@javaname"/></xsl:variable>
+                    <xsl:variable name="javaname"><xsl:value-of select="@javaname"/></xsl:variable>
+                    <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable>
+                    <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable>
+                    <xsl:variable name="settingTracker">typedBean.local<xsl:value-of select="@javaname"/>Tracker</xsl:variable>
+
+                    <xsl:variable name="propertyType"><xsl:value-of select="@type"/></xsl:variable>
+
+                    <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if>
+                    <xsl:choose>
+                        <xsl:when test="@ours and not(@array) and not(@default)">
+                            <xsl:choose>
+                                <xsl:when test="@nillable">
+                                    if (<xsl:value-of select="$varName"/>==null){
+
+                                            java.lang.String namespace2 = "<xsl:value-of select="$namespace"/>";
+
+                                        if (! namespace2.equals("")) {
+                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace2);
+
+                                            if (prefix2 == null) {
+                                                prefix2 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+
+                                       // write the nil attribute
+                                      writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                      xmlWriter.writeEndElement();
+                                    }else{
+                                     <xsl:value-of select="@type"/>Helper.getOMDataSource(<xsl:value-of select="$varName"/>,
+                                       new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                        factory).serialize(xmlWriter);
+                                    }
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    if (<xsl:value-of select="$varName"/>==null){
+                                         throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    }
+                                   <xsl:value-of select="@type"/>Helper.getOMDataSource(<xsl:value-of select="$varName"/>,
+                                       new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"),
+                                       factory).serialize(xmlWriter);
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:when>
+                        <xsl:when test="@ours and @array and not(@default)">
+                             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="@arrayBaseType"/>Helper.getOMDataSource(<xsl:value-of select="$varName"/>[i],
+                                                   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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                                    }
+
+                                                   // write the nil attribute
+                                                   writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",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 org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                       // write the nil attribute
+                                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                       xmlWriter.writeEndElement();
+                                </xsl:when>
+                                <xsl:otherwise>
+                                       throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                </xsl:otherwise>
+                            </xsl:choose>
+                            }
+                        </xsl:when>
+
+                        <xsl:when test="@default and @array">
+                            <!-- Note - Assumed to be OMElement-->
+                            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){
+                                           // 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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                            }
+                                            <xsl:value-of select="$varName"/>[i].serialize(xmlWriter);
+                                            xmlWriter.writeEndElement();
+                                    } 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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",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 org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                        </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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                        }
+
+                                       // write the nil attribute
+                                       writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                       xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new org.apache.axis2.databinding.ADBException("<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-->
+                            if (<xsl:value-of select="$varName"/>!=null){
+                                // 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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                }
+                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                                xmlWriter.writeEndElement();
+                            } 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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                 </xsl:choose>
+                            }
+
+
+                        </xsl:when>
+                        <!-- handle non ADB arrays - Not any however -->
+                        <xsl:when test="@array and not(@any)">
+                             if (<xsl:value-of select="$varName"/>!=null) {
+                                   namespace = "<xsl:value-of select="$namespace"/>";
+                                   boolean emptyNamespace = namespace == null || namespace.length() == 0;
+                                   prefix =  emptyNamespace ? null : xmlWriter.getPrefix(namespace);
+                                   for (int i = 0;i &lt; <xsl:value-of select="$varName"/>.length;i++){
+                                        <xsl:if test="@primitive">
+                                            if (!emptyNamespace) {
+                                                if (prefix == null) {
+                                                    java.lang.String prefix2 = generatePrefix(namespace);
+
+                                                    xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                    xmlWriter.writeNamespace(prefix2, namespace);
+                                                    xmlWriter.setPrefix(prefix2, 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();
+
+                                        </xsl:if>
+                                        <xsl:if test="not(@primitive)">
+                                            if (<xsl:value-of select="$varName"/>[i] != null){
+                                                if (!emptyNamespace) {
+                                                    if (prefix == null) {
+                                                        java.lang.String prefix2 = generatePrefix(namespace);
+
+                                                        xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                        xmlWriter.writeNamespace(prefix2, namespace);
+                                                        xmlWriter.setPrefix(prefix2, namespace);
+
+                                                    } else {
+                                                        xmlWriter.writeStartElement(namespace,"<xsl:value-of select="$propertyName"/>");
+                                                    }
+
+                                                } else {
+                                                    xmlWriter.writeStartElement("<xsl:value-of select="$propertyName"/>");
+                                                }
+                                            <xsl:choose>
+                                                <xsl:when test="$propertyType='java.lang.String[]'">
+                                                    xmlWriter.writeCharacters(<xsl:value-of select="$varName"/>[i]);
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                    xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i]));
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                                xmlWriter.writeEndElement();
+
+                                            } else {
+                                               <xsl:choose>
+                                                   <xsl:when test="@nillable">
+                                                       // write null attribute
+                                                        namespace = "<xsl:value-of select="$namespace"/>";
+                                                        if (! namespace.equals("")) {
+                                                            java.lang.String prefix2 = xmlWriter.getPrefix(namespace);
+
+                                                            if (prefix2 == null) {
+                                                                prefix2 = generatePrefix(namespace);
+
+                                                                xmlWriter.writeStartElement(prefix2,"<xsl:value-of select="$propertyName"/>", namespace);
+                                                                xmlWriter.writeNamespace(prefix2, namespace);
+                                                                xmlWriter.setPrefix(prefix2, 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","1",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 org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                   </xsl:otherwise>
+
+                                               </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 = generatePrefix(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("<xsl:value-of select="$propertyName"/>");
+                                            }
+
+                                           // write the nil attribute
+                                           writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                           xmlWriter.writeEndElement();
+                                    </xsl:when>
+                                    <xsl:otherwise>
+                                         throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                    </xsl:otherwise>
+                                </xsl:choose>
+                             }
+
+                        </xsl:when>
+
+                         <!-- handle non ADB arrays  - Any case  - any may not be
+                         nillable -->
+                        <xsl:when test="@array and @any">
+                            <!-- Note - Assumed to be OMElement-->
+                            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 org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                    }
+                                }
+                            } else {
+                                throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                            }
+                        </xsl:when>
+                        <!-- handle any - non array case-->
+                         <xsl:when test="@any">
+                            <!-- Note - Assumed to be OMElement-->
+                            if (<xsl:value-of select="$varName"/> != null) {
+                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                            } else {
+                               throw new org.apache.axis2.databinding.ADBException("<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 = generatePrefix(namespace);
+
+                                            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"/>");
+                                    }
+                                </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="$javaname"/>_binary = new  org.apache.axiom.om.impl.llom.OMTextImpl( <xsl:value-of select="$varName"/>, org.apache.axiom.om.OMAbstractFactory.getOMFactory());
+                                        <xsl:value-of select="$javaname"/>_binary.internalSerializeAndConsume(xmlWriter);
+                                    }
+
+                                 </xsl:when>
+                                 <xsl:otherwise>
+                                    <xsl:if test="not(@primitive)">
+
+                                          if (<xsl:value-of select="$varName"/>==null){
+                                              // write the nil attribute
+                                              <xsl:choose>
+                                                  <xsl:when test="@nillable">
+                                                     writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                                  </xsl:when>
+                                                  <xsl:otherwise>
+                                                     throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!");
+                                                  </xsl:otherwise>
+                                              </xsl:choose>
+                                          }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 = generatePrefix(namespaceURI);
+                                                          }
+                                                         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:when test="$propertyType='java.lang.String'">
+                                                   xmlWriter.writeCharacters(<xsl:value-of select="$varName"/>);
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                   xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                          }
+                                    </xsl:if>
+                                    <xsl:if test="@primitive">
+                                       xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                    </xsl:if>
+                                 </xsl:otherwise>
+                             </xsl:choose>
+                             <xsl:if test="not($simple)">
+                                   xmlWriter.writeEndElement();
+                             </xsl:if>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="$min=0 or $choice">}</xsl:if>
+
+                </xsl:for-each>
+                   <!-- write the end element for the type-->
+               xmlWriter.writeEndElement();
+            <!-- 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">typedBean.local<xsl:value-of select="property/@javaname"/></xsl:variable>
+                <xsl:variable name="nillable" select="property/@nillable"></xsl:variable>
+                <xsl:variable name="primitive" select="property/@primitive"></xsl:variable>
+                <xsl:variable name="propertyType"><xsl:value-of select="property/@type"/></xsl:variable>
+
+                <xsl:choose>
+                    <!-- This better be only one!!-->
+                    <xsl:when test="property/@ours">
+                        <xsl:choose>
+                            <xsl:when test="$nillable">
+                                      if (<xsl:value-of select="$varName"/>==null){
+                                        java.lang.String namespace = "<xsl:value-of select="property/@nsuri"/>";
+
+                                        if (! namespace.equals("")) {
+                                            java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                                            if (prefix == null) {
+                                                prefix = generatePrefix(namespace);
+
+                                                xmlWriter.writeStartElement(prefix,"<xsl:value-of select="property/@name"/>", namespace);
+                                                xmlWriter.writeNamespace(prefix, namespace);
+                                                xmlWriter.setPrefix(prefix, namespace);
+
+                                            } else {
+                                                xmlWriter.writeStartElement(namespace,"<xsl:value-of select="property/@name"/>");
+                                            }
+
+                                        } else {
+                                            xmlWriter.writeStartElement("<xsl:value-of select="property/@name"/>");
+                                        }
+
+                                        // write the nil attribute
+                                        writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                        xmlWriter.writeEndElement();
+                                       }else{
+                                         <xsl:value-of select="property/@type"/>Helper.getOMDataSource(<xsl:value-of select="$varName"/>,
+                                         <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME,
+                                         factory).serialize(xmlWriter);
+                                       }
+                            </xsl:when>
+                            <xsl:otherwise>
+                                 if (<xsl:value-of select="$varName"/>==null){
+                                   throw new org.apache.axis2.databinding.ADBException("Property cannot be null!");
+                                 }
+                                 <xsl:value-of select="property/@type"/>Helper.getOMDataSource(<xsl:value-of select="$varName"/>,
+                                         <xsl:value-of select="$fullyQualifiedName"/>.MY_QNAME,
+                                         factory).serialize(xmlWriter);
+                            </xsl:otherwise>
+                        </xsl:choose>
+                    </xsl:when>
+                    <!-- end of ours block-->
+                    <xsl:otherwise>
+                        <xsl:if test="not(property/@simple)">
+                            java.lang.String namespace = "<xsl:value-of select="property/@nsuri"/>";
+                            java.lang.String localName = "<xsl:value-of select="property/@name"/>";
+                        </xsl:if>
+                        <xsl:if test="property/@simple">
+                            java.lang.String namespace = parentQName.getNamespaceURI();
+                            java.lang.String localName = parentQName.getLocalPart();
+                        </xsl:if>
+                            if (! namespace.equals("")) {
+                                java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                                if (prefix == null) {
+                                    prefix = generatePrefix(namespace);
+
+                                    xmlWriter.writeStartElement(prefix, localName, namespace);
+                                    xmlWriter.writeNamespace(prefix, namespace);
+                                    xmlWriter.setPrefix(prefix, namespace);
+
+                                } else {
+                                    xmlWriter.writeStartElement(namespace, localName);
+                                }
+
+                            } else {
+                                xmlWriter.writeStartElement(localName);
+                            }
+                            <xsl:if test="not($primitive)">
+                                          if (<xsl:value-of select="$varName"/>==null){
+                                            <xsl:choose>
+                                                <xsl:when test="$nillable">
+                                                     // write the nil attribute
+                                                     writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","nil","1",xmlWriter);
+                                                </xsl:when>
+                                                <xsl:otherwise>
+                                                     throw new org.apache.axis2.databinding.ADBException("Value cannot be null !!");
+                                                </xsl:otherwise>
+                                            </xsl:choose>
+                                         }else{
+                                        <xsl:choose>
+                                            <xsl:when test="$propertyType='javax.xml.namespace.QName'">
+                                                writeQName(<xsl:value-of select="$varName"/>,xmlWriter);
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'">
+                                                <xsl:value-of select="$varName"/>.serialize(xmlWriter);
+                                            </xsl:when>
+                                            <xsl:when test="$propertyType='java.lang.String'">
+                                                       xmlWriter.writeCharacters(<xsl:value-of select="$varName"/>);
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                       xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                                            </xsl:otherwise>
+                                        </xsl:choose>
+                                         }
+                                    </xsl:if>
+                            <xsl:if test="$primitive">
+                               xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>));
+                            </xsl:if>
+                       xmlWriter.writeEndElement();
+                    </xsl:otherwise>
+                </xsl:choose>
+            </xsl:otherwise>
+        </xsl:choose>
+
+        }
+
+        /**
+                  * Util method to write an attribute with the ns prefix
+                  */
+                  private void writeAttribute(java.lang.String prefix,java.lang.String namespace,java.lang.String attName,
+                                              java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+                      if (xmlWriter.getPrefix(namespace) == null) {
+                               xmlWriter.writeNamespace(prefix, namespace);
+                               xmlWriter.setPrefix(prefix, namespace);
+
+                      }
+
+                      xmlWriter.writeAttribute(namespace,attName,attValue);
+
+                 }
+
+                 /**
+                  * Util method to write an attribute without the ns prefix
+                  */
+                  private void writeAttribute(java.lang.String namespace,java.lang.String attName,
+                                              java.lang.String attValue,javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException{
+                        if (namespace.equals(""))
+                      {
+                          xmlWriter.writeAttribute(attName,attValue);
+                      }
+                      else
+                      {
+                          registerPrefix(xmlWriter, namespace);
+                          xmlWriter.writeAttribute(namespace,attName,attValue);
+                      }
+                  }
+
+                 /**
+                 * Register a namespace prefix
+                 */
+                 private java.lang.String registerPrefix(javax.xml.stream.XMLStreamWriter xmlWriter, java.lang.String namespace) throws javax.xml.stream.XMLStreamException {
+                        java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+                        if (prefix == null) {
+                            prefix = createPrefix();
+
+                            while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) {
+                                prefix = createPrefix();
+                            }
+
+                            xmlWriter.writeNamespace(prefix, namespace);
+                            xmlWriter.setPrefix(prefix, namespace);
+                        }
+
+                        return prefix;
+                    }
+
+                 /**
+                  * Create a prefix
+                  */
+                  private java.lang.String createPrefix() {
+                        return "ns" + (int)Math.random();
+                  }
+                };
+
+                return dataSource;
+            }
+
+
+        /**
+        * static method to create the object
+        * Precondition:  If this object is an element, the current or next start element starts this object and any intervening reader events are ignorable
+        *                If this object is not an element, it is a complex type and the reader is at the event just after the outer start element
+        * Postcondition: If this object is an element, the reader is positioned at its end element
+        *                If this object is a complex type, the reader is positioned at the end element of its outer element
+        */
+        public static <xsl:value-of select="$fullyQualifiedName"/> parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{
+            <xsl:if test="not(property/enumFacet)"><xsl:value-of select="$fullyQualifiedName"/> object = new <xsl:value-of select="$fullyQualifiedName"/>();</xsl:if>
+            <xsl:if test="property/enumFacet"><xsl:value-of select="$name"/> object = null;</xsl:if>
+            int event;
+            java.lang.String nillableValue = null;
+            try {
+                <!-- Advance to our start element, or if we are a complex type, to our first property start element or the outer end element if no properties -->
+                while (!reader.isStartElement() &amp;&amp; !reader.isEndElement())
+                    reader.next();
+
+                <xsl:if test="@nillable">
+                   nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil");
+                   if ("true".equals(nillableValue) || "1".equals(nillableValue)){
+                         // Skip the element and report the null value.  It cannot have subelements.
+                         while (!reader.isEndElement())
+                             reader.next();
+                         <xsl:choose>
+                             <xsl:when test="@type or @anon">
+                                 return null;
+                             </xsl:when>
+                             <xsl:otherwise>
+                                 return object;
+                             </xsl:otherwise>
+                         </xsl:choose>
+
+                   }
+                </xsl:if>
+                  <xsl:if test="$isType or $anon">
+                if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){

[... 1000 lines stripped ...]