| <!-- |
| ~ 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:output method="text"/> |
| |
| <!-- cater for the multiple classes - wrappped mode --> |
| <xsl:template match="/beans"> |
| <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable> |
| /** |
| * <xsl:value-of select="$name"/>.java |
| * |
| * This file was auto-generated from WSDL |
| * by the Apache Axis2 version: #axisVersion# #today# |
| */ |
| |
| <xsl:if test="string-length(normalize-space(@package)) > 0"> |
| package <xsl:value-of select="@package"/>; |
| </xsl:if> |
| |
| /** |
| * <xsl:value-of select="$name"/> wrapped bean classes |
| */ |
| public class <xsl:value-of select="$name"/>{ |
| |
| <xsl:apply-templates/> |
| |
| } |
| </xsl:template> |
| |
| <!--cater for the multiple classes - unwrappped mode --> |
| <xsl:template match="/"> |
| <xsl:apply-templates/> |
| </xsl:template> |
| |
| <xsl:template match="bean[not(@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="union" select="@union"/> |
| <xsl:variable name="list" select="@list"/> |
| |
| <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="particleClass" select="@particleClass"/> |
| <xsl:variable name="hasParticleType" select="@hasParticleType"/> |
| <xsl:variable name="usewrapperclasses" select="@usewrapperclasses"/> |
| <!-- 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# |
| */ |
| <xsl:if test="string-length(normalize-space(@package)) > 0"> |
| package <xsl:value-of select="@package"/>; |
| </xsl:if> |
| |
| /** |
| * <xsl:value-of select="$name"/> bean class |
| */ |
| </xsl:if> |
| public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> <xsl:if test="@isAbstract and @unwrapped and not(@skip-write)">abstract</xsl:if> class <xsl:value-of select="$name"/> <xsl:if test="$extension"> extends <xsl:value-of select="$extension"/></xsl:if> <xsl:if test="$restriction"> extends <xsl:value-of select="$restriction"/></xsl:if> |
| <xsl:if test="$union and not($restriction) and not($extension)"> extends org.apache.axis2.databinding.types.Union </xsl:if> |
| implements org.apache.axis2.databinding.ADBBean{ |
| <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"> |
| <xsl:if test="not(@attribute)"> |
| local<xsl:value-of select="@javaname"/>Tracker = false; |
| </xsl:if> |
| </xsl:for-each> |
| } |
| </xsl:if> |
| |
| |
| <xsl:for-each select="property"> |
| <!-- Write only the NOT inherited properties |
| but we have to generate two specital methods for simple type restriction and extenesions --> |
| <xsl:if test="not(@inherited) or ($simple and $extension) or ($simple and $restriction)"> |
| |
| <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 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(); |
| } |
| |
| </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) && (param.length > <xsl:value-of select="@maxOccurs"/>)){ |
| throw new java.lang.RuntimeException(); |
| } |
| </xsl:if> |
| <xsl:if test="$min!=0 and @array"> |
| if ((param != null) && (param.length < <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); |
| |
| <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> |
| */ |
| |
| <xsl:if test="not(@inherited)"> |
| <xsl:choose> |
| <xsl:when test="@defaultValue"> |
| protected <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> = |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>("<xsl:value-of |
| select="@defaultValue"/>"); |
| </xsl:when> |
| <xsl:otherwise> |
| protected <xsl:value-of select="$propertyType"/><xsl:text> </xsl:text><xsl:value-of select="$varName" /> ; |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| </xsl:if> |
| <xsl:if test="enumFacet"> |
| private static java.util.HashMap _table_ = new java.util.HashMap(); |
| |
| // Constructor |
| <xsl:if test="not(@inherited)"> |
| protected <xsl:value-of select="$name"/>(<xsl:value-of select="$propertyType"/> value, boolean isRegisterValue) { |
| <xsl:value-of select="$varName" /> = value; |
| if (isRegisterValue){ |
| <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:if> |
| <xsl:if test="@inherited"> |
| protected <xsl:value-of select="$name"/>(<xsl:value-of select="$propertyType"/> value, boolean isRegisterValue) { |
| super(value,false); |
| if (isRegisterValue){ |
| <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:if> |
| <xsl:if test="not(@inherited)"> |
| <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:if> |
| |
| <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"/>,true); |
| </xsl:for-each> |
| |
| public <xsl:value-of select="$propertyType"/> getValue() { return <xsl:value-of select="$varName" />;} |
| |
| 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) && (param.length > <xsl:value-of select="@maxOccurs"/>)){ |
| throw new java.lang.RuntimeException(); |
| } |
| </xsl:if> |
| <xsl:if test="$min!=0"> |
| if ((param != null) && (param.length < <xsl:value-of select="$min"/>)){ |
| throw new java.lang.RuntimeException(); |
| } |
| </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:choose> |
| <xsl:when test="$usewrapperclasses"> |
| if (false) { |
| </xsl:when> |
| <xsl:when test="$propertyType='int'"> |
| if (param==java.lang.Integer.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| if (param==java.lang.Long.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| if (param==java.lang.Byte.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| if (java.lang.Double.isNaN(param)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| if (java.lang.Float.isNaN(param)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| if (param==java.lang.Short.MIN_VALUE) { |
| </xsl:when> |
| <xsl:otherwise> |
| if (false) { |
| </xsl:otherwise> |
| </xsl:choose> |
| <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> |
| } else { |
| <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 (org.apache.axis2.databinding.utils.ConverterUtil.convertToString(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 (org.apache.axis2.databinding.utils.ConverterUtil.convertToString(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"/> <= java.lang.String.valueOf(param).length())</xsl:if> |
| <xsl:if test="(@maxLenFacet)"> <xsl:if test="(@minLenFacet)"> && </xsl:if> (java.lang.String.valueOf(param).length() <= <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"> |
| <xsl:if test="@maxExFacet"> |
| if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, "<xsl:value-of select="$maxExFacet"/>") < 0){ |
| this.<xsl:value-of select="$varName"/>=param; |
| } |
| else { |
| throw new java.lang.RuntimeException(); |
| } |
| </xsl:if> |
| <xsl:if test="@minExFacet"> |
| if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, "<xsl:value-of select="$minExFacet"/>") > 0){ |
| this.<xsl:value-of select="$varName"/>=param; |
| } |
| else { |
| throw new java.lang.RuntimeException(); |
| } |
| </xsl:if> |
| <xsl:if test="@maxInFacet"> |
| if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, "<xsl:value-of select="$maxInFacet"/>") <= 0){ |
| this.<xsl:value-of select="$varName"/>=param; |
| } |
| else { |
| throw new java.lang.RuntimeException(); |
| } |
| </xsl:if> |
| <xsl:if test="@minInFacet"> |
| if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, "<xsl:value-of select="$minInFacet"/>") >= 0){ |
| this.<xsl:value-of select="$varName"/>=param; |
| } |
| else { |
| throw new java.lang.RuntimeException(); |
| } |
| </xsl:if> |
| |
| </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> |
| |
| <!-- generate from string and to string methods for |
| simple types to be ued in attribute handling --> |
| <xsl:if test="$simple and not(@attribute) and not(enumFacet)"> |
| |
| 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:otherwise> |
| </xsl:choose> |
| |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <!-- end of xsl:if for not(@inherited) --> |
| </xsl:if> |
| |
| </xsl:for-each> |
| |
| <!-- we don't need to generate the setObject method in parent classes --> |
| <xsl:if test="$union and $simple and not($restriction) and not($extension)"> |
| <!-- generate class for a union type --> |
| |
| public void setObject(java.lang.Object object){ |
| <xsl:for-each select="memberType"> |
| <xsl:if test="position() > 1">} else </xsl:if> |
| if (object instanceof <xsl:value-of select="@type"/>){ |
| this.localObject = object; |
| </xsl:for-each> |
| } else { |
| throw new java.lang.RuntimeException("Invalid object type"); |
| } |
| } |
| |
| </xsl:if> |
| |
| <xsl:if test="$list and not($restriction) and not($extension)" > |
| <xsl:variable name="javaName"><xsl:value-of select="itemtype/@javaname"/></xsl:variable> |
| <xsl:variable name="varName">local<xsl:value-of select="itemtype/@javaname"/></xsl:variable> |
| <xsl:variable name="varType"><xsl:value-of select="itemtype/@type"/></xsl:variable> |
| <xsl:variable name="primitive"><xsl:value-of select="itemtype/@primitive"/></xsl:variable> |
| |
| protected <xsl:value-of select="$varType"/>[] <xsl:value-of select="$varName"/>; |
| |
| public <xsl:value-of select="$varType"/>[] get<xsl:value-of select="$javaName"/>(){ |
| return <xsl:value-of select="$varName"/>; |
| } |
| |
| public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$varType"/>[] itemList){ |
| this.<xsl:value-of select="$varName"/> = itemList; |
| } |
| |
| public java.lang.String toString() { |
| java.lang.StringBuffer outString = new java.lang.StringBuffer(); |
| if (<xsl:value-of select="$varName"/> != null){ |
| for(int i = 0; i < <xsl:value-of select="$varName"/>.length;i++){ |
| <xsl:choose> |
| <xsl:when test="$primitive"> |
| outString.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])).append(" "); |
| </xsl:when> |
| <xsl:otherwise> |
| outString.append(<xsl:value-of select="$varName"/>[i].toString()).append(" "); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| } |
| return outString.toString().trim(); |
| } |
| </xsl:if> |
| |
| /** |
| * 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 org.apache.axiom.om.OMElement getOMElement ( |
| final javax.xml.namespace.QName parentQName, |
| final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException{ |
| |
| |
| <xsl:choose> |
| <xsl:when test="@type"> |
| org.apache.axiom.om.OMDataSource dataSource = |
| new org.apache.axis2.databinding.ADBDataSource(this,parentQName){ |
| |
| public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException { |
| <xsl:value-of select="$name"/>.this.serialize(parentQName,factory,xmlWriter); |
| } |
| }; |
| return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl( |
| parentQName,factory,dataSource); |
| </xsl:when> |
| <xsl:otherwise> |
| org.apache.axiom.om.OMDataSource dataSource = |
| new org.apache.axis2.databinding.ADBDataSource(this,MY_QNAME){ |
| |
| public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException { |
| <xsl:value-of select="$name"/>.this.serialize(MY_QNAME,factory,xmlWriter); |
| } |
| }; |
| return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl( |
| MY_QNAME,factory,dataSource); |
| </xsl:otherwise> |
| </xsl:choose> |
| } |
| |
| public void serialize(final javax.xml.namespace.QName parentQName, |
| final org.apache.axiom.om.OMFactory factory, |
| org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) |
| throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{ |
| serialize(parentQName,factory,xmlWriter,false); |
| } |
| |
| public void serialize(final javax.xml.namespace.QName parentQName, |
| final org.apache.axiom.om.OMFactory factory, |
| org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter, |
| boolean serializeType) |
| throws javax.xml.stream.XMLStreamException, org.apache.axis2.databinding.ADBException{ |
| <xsl:choose> |
| |
| <xsl:when test="$simple and $union"> |
| // fist write the start element |
| java.lang.String namespace = parentQName.getNamespaceURI(); |
| java.lang.String localName = parentQName.getLocalPart(); |
| |
| 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:for-each select="memberType"> |
| <xsl:if test="position() > 1">} else </xsl:if> |
| if (localObject instanceof <xsl:value-of select="@type"/>){ |
| java.lang.String namespacePrefix = registerPrefix(xmlWriter,"<xsl:value-of select="@nsuri"/>"); |
| if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)){ |
| writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type", |
| namespacePrefix+":<xsl:value-of select="@originalName"/>", |
| xmlWriter); |
| } else { |
| writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type", |
| "<xsl:value-of select="@originalName"/>", |
| xmlWriter); |
| } |
| |
| <xsl:choose> |
| <xsl:when test="@type='javax.xml.namespace.QName'"> |
| writeQName((javax.xml.namespace.QName)localObject,xmlWriter); |
| </xsl:when> |
| <xsl:otherwise> |
| xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString((<xsl:value-of select="@type"/>)localObject)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:for-each> |
| } else { |
| throw new org.apache.axis2.databinding.ADBException("Invalid object type"); |
| } |
| xmlWriter.writeEndElement(); |
| </xsl:when> |
| |
| <xsl:when test="$simple and $list"> |
| |
| <xsl:variable name="javaName"><xsl:value-of select="itemtype/@javaname"/></xsl:variable> |
| <xsl:variable name="varType"><xsl:value-of select="itemtype/@type"/></xsl:variable> |
| |
| // first write the start element |
| java.lang.String namespace = parentQName.getNamespaceURI(); |
| java.lang.String localName = parentQName.getLocalPart(); |
| |
| 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:choose> |
| <xsl:when test="$varType='javax.xml.namespace.QName'"> |
| writeQNames(local<xsl:value-of select="$javaName"/>,xmlWriter); |
| </xsl:when> |
| <xsl:otherwise> |
| xmlWriter.writeCharacters(<xsl:value-of select="$name"/>.this.toString()); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| xmlWriter.writeEndElement(); |
| </xsl:when> |
| |
| <xsl:when test="@type or @anon"> |
| <!-- For a type write the passed in QName first |
| we create special particle classes for Sequence,Choice and all elements to |
| handle maxOccurs correctly. So these classes should not write parent Qname--> |
| |
| |
| java.lang.String prefix = null; |
| java.lang.String namespace = null; |
| <xsl:if test="not($particleClass)"> |
| |
| prefix = parentQName.getPrefix(); |
| namespace = parentQName.getNamespaceURI(); |
| |
| if ((namespace != null) && (namespace.trim().length() > 0)) { |
| 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()); |
| } |
| </xsl:if> |
| |
| |
| <!-- write the type attribute if needed --> |
| <xsl:if test="not($extension) or @anon"> |
| if (serializeType){ |
| </xsl:if> |
| |
| java.lang.String namespacePrefix = registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>"); |
| if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)){ |
| writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type", |
| namespacePrefix+":<xsl:value-of select="$originalName"/>", |
| xmlWriter); |
| } else { |
| writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type", |
| "<xsl:value-of select="$originalName"/>", |
| xmlWriter); |
| } |
| |
| <xsl:if test="not($extension) or @anon"> |
| } |
| </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">local<xsl:value-of select="@javaname"/></xsl:variable> |
| <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable> |
| <xsl:variable name="propertyType"><xsl:value-of select="@type"/></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 <<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> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="@ours"> |
| <!-- this can only be a simple type --> |
| if (<xsl:value-of select="$varName"/> != null){ |
| writeAttribute("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>", |
| <xsl:value-of select="$varName"/>.toString(), xmlWriter); |
| } |
| <xsl:if test="not(@optional)"> |
| else { |
| throw new org.apache.axis2.databinding.ADBException("required attribute <xsl:value-of select="$varName"/> is null"); |
| } |
| </xsl:if> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="@primitive"> |
| <xsl:choose> |
| <xsl:when test="$usewrapperclasses"> |
| if (true) { |
| </xsl:when> |
| <xsl:when test="$propertyType='int'"> |
| if (<xsl:value-of select="$varName"/>!=java.lang.Integer.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| if (<xsl:value-of select="$varName"/>!=java.lang.Long.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| if (<xsl:value-of select="$varName"/>!=java.lang.Byte.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| if (!java.lang.Double.isNaN(<xsl:value-of select="$varName"/>)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| if (!java.lang.Float.isNaN(<xsl:value-of select="$varName"/>)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| if (<xsl:value-of select="$varName"/>!=java.lang.Short.MIN_VALUE) { |
| </xsl:when> |
| <xsl:otherwise> |
| if (true) { |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:otherwise> |
| if (<xsl:value-of select="$varName"/> != null){ |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| writeQNameAttribute("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>", |
| <xsl:value-of select="$varName"/>, xmlWriter); |
| |
| </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:if test="not(@optional)"> |
| else { |
| throw new org.apache.axis2.databinding.ADBException("required attribute <xsl:value-of select="$varName"/> is null"); |
| } |
| </xsl:if> |
| </xsl:otherwise> |
| </xsl:choose> |
| </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">local<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">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable> |
| |
| <xsl:variable name="propertyType"><xsl:value-of select="@type"/></xsl:variable> |
| <xsl:variable name="propertyBaseType"><xsl:value-of select="@arrayBaseType"/></xsl:variable> |
| <xsl:variable name="particleClassType" select="@particleClassType"></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="$varName"/>.serialize(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"), |
| factory,xmlWriter); |
| } |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="$particleClassType"> |
| 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="$varName"/>.serialize(null,factory,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="$varName"/>.serialize(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"), |
| factory,xmlWriter); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:when test="@ours and @array and not(@default)"> |
| <xsl:choose> |
| <xsl:when test="$particleClassType"> |
| <!-- if it is a particle clase that can only be minOccurs zero or not --> |
| if (<xsl:value-of select="$varName"/>!=null){ |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| <xsl:value-of select="$varName"/>[i].serialize(null,factory,xmlWriter); |
| } else { |
| <xsl:choose> |
| <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 { |
| throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!"); |
| } |
| </xsl:when> |
| <xsl:otherwise> |
| if (<xsl:value-of select="$varName"/>!=null){ |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| <xsl:value-of select="$varName"/>[i].serialize(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"), |
| factory,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: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 < <xsl:value-of select="$varName"/>.length;i++){ |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| |
| if (<xsl:value-of select="$varName"/>[i] instanceof org.apache.axis2.databinding.ADBBean){ |
| ((org.apache.axis2.databinding.ADBBean)<xsl:value-of select="$varName"/>[i]).serialize( |
| new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"), |
| factory,xmlWriter,true); |
| } else { |
| 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"/>"); |
| } |
| org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>[i], 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){ |
| if (<xsl:value-of select="$varName"/> instanceof org.apache.axis2.databinding.ADBBean){ |
| ((org.apache.axis2.databinding.ADBBean)<xsl:value-of select="$varName"/>).serialize( |
| new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"), |
| factory,xmlWriter,true); |
| } else { |
| 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"/>"); |
| } |
| org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>, 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 < <xsl:value-of select="$varName"/>.length;i++){ |
| <xsl:if test="@primitive"> |
| <xsl:choose> |
| <xsl:when test="$usewrapperclasses"> |
| if (true) { |
| </xsl:when> |
| <xsl:when test="$propertyBaseType='int'"> |
| if (<xsl:value-of select="$varName"/>[i]!=java.lang.Integer.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyBaseType='long'"> |
| if (<xsl:value-of select="$varName"/>[i]!=java.lang.Long.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyBaseType='byte'"> |
| if (<xsl:value-of select="$varName"/>[i]!=java.lang.Byte.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyBaseType='double'"> |
| if (!java.lang.Double.isNaN(<xsl:value-of select="$varName"/>[i])) { |
| </xsl:when> |
| <xsl:when test="$propertyBaseType='float'"> |
| if (!java.lang.Float.isNaN(<xsl:value-of select="$varName"/>[i])) { |
| </xsl:when> |
| <xsl:when test="$propertyBaseType='short'"> |
| if (<xsl:value-of select="$varName"/>[i]!=java.lang.Short.MIN_VALUE) { |
| </xsl:when> |
| <xsl:otherwise> |
| if (true) { |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:if> |
| <xsl:if test="not(@primitive)"> |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| </xsl:if> |
| 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:if test="@primitive"> |
| xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| xmlWriter.writeEndElement(); |
| </xsl:if> |
| |
| <xsl:if test="not(@primitive)"> |
| <xsl:choose> |
| <xsl:when test="@binary"> |
| xmlWriter.writeDataHandler(<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(); |
| </xsl:if> |
| } 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 = 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"/>"); |
| } |
| 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 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 < <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) |
| { |
| xmlWriter.writeDataHandler(<xsl:value-of select="$varName"/>); |
| } |
| </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'"> |
| 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"> |
| <!-- we have to check for nillability with min value --> |
| <xsl:choose> |
| <xsl:when test="$usewrapperclasses"> |
| if (false) { |
| </xsl:when> |
| <xsl:when test="$propertyType='int'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Integer.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Long.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Byte.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| if (java.lang.Double.isNaN(<xsl:value-of select="$varName"/>)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| if (java.lang.Float.isNaN(<xsl:value-of select="$varName"/>)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Short.MIN_VALUE) { |
| </xsl:when> |
| <xsl:otherwise> |
| if (false) { |
| </xsl:otherwise> |
| </xsl:choose> |
| <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 { |
| 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--> |
| <xsl:if test="not($particleClass)"> |
| xmlWriter.writeEndElement(); |
| </xsl:if> |
| <!-- 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> |
| <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="$varName"/>.serialize(MY_QNAME,factory,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="$varName"/>.serialize(MY_QNAME,factory,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); |
| } |
| |
| // add the type details if this is used in a simple type |
| if (serializeType){ |
| java.lang.String namespacePrefix = registerPrefix(xmlWriter,"<xsl:value-of select="$nsuri"/>"); |
| if ((namespacePrefix != null) && (namespacePrefix.trim().length() > 0)){ |
| writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type", |
| namespacePrefix+":<xsl:value-of select="$originalName"/>", |
| xmlWriter); |
| } else { |
| writeAttribute("xsi","http://www.w3.org/2001/XMLSchema-instance","type", |
| "<xsl:value-of select="$originalName"/>", |
| xmlWriter); |
| } |
| } |
| <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:when test="property/@default"> |
| org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(<xsl:value-of select="$varName"/>, xmlWriter); |
| </xsl:when> |
| <xsl:when test="property/@binary"> |
| <!-- Handling the null byte array --> |
| if (<xsl:value-of select="$varName"/>!=null) |
| { |
| xmlWriter.writeDataHandler(<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"> |
| |
| <!-- we have to check for nillability with min value --> |
| <xsl:choose> |
| <xsl:when test="$usewrapperclasses"> |
| if (false) { |
| </xsl:when> |
| <xsl:when test="$propertyType='int'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Integer.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Long.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Byte.MIN_VALUE) { |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| if (java.lang.Double.isNaN(<xsl:value-of select="$varName"/>)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| if (java.lang.Float.isNaN(<xsl:value-of select="$varName"/>)) { |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| if (<xsl:value-of select="$varName"/>==java.lang.Short.MIN_VALUE) { |
| </xsl:when> |
| <xsl:otherwise> |
| if (false) { |
| </xsl:otherwise> |
| </xsl:choose> |
| <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("property value cannot be null!!"); |
| </xsl:otherwise> |
| </xsl:choose> |
| } else { |
| 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); |
| } |
| } |
| |
| |
| /** |
| * Util method to write an attribute without the ns prefix |
| */ |
| private void writeQNameAttribute(java.lang.String namespace, java.lang.String attName, |
| javax.xml.namespace.QName qname, javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException { |
| |
| java.lang.String attributeNamespace = qname.getNamespaceURI(); |
| java.lang.String attributePrefix = xmlWriter.getPrefix(attributeNamespace); |
| if (attributePrefix == null) { |
| attributePrefix = registerPrefix(xmlWriter, attributeNamespace); |
| } |
| java.lang.String attributeValue; |
| if (attributePrefix.trim().length() > 0) { |
| attributeValue = attributePrefix + ":" + qname.getLocalPart(); |
| } else { |
| attributeValue = qname.getLocalPart(); |
| } |
| |
| if (namespace.equals("")) { |
| xmlWriter.writeAttribute(attName, attributeValue); |
| } else { |
| registerPrefix(xmlWriter, namespace); |
| xmlWriter.writeAttribute(namespace, attName, attributeValue); |
| } |
| } |
| /** |
| * method to handle Qnames |
| */ |
| |
| private void writeQName(javax.xml.namespace.QName qname, |
| javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException { |
| java.lang.String namespaceURI = qname.getNamespaceURI(); |
| if (namespaceURI != null) { |
| java.lang.String prefix = xmlWriter.getPrefix(namespaceURI); |
| if (prefix == null) { |
| prefix = generatePrefix(namespaceURI); |
| xmlWriter.writeNamespace(prefix, namespaceURI); |
| xmlWriter.setPrefix(prefix,namespaceURI); |
| } |
| |
| if (prefix.trim().length() > 0){ |
| xmlWriter.writeCharacters(prefix + ":" + org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname)); |
| } else { |
| // i.e this is the default namespace |
| xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname)); |
| } |
| |
| } else { |
| xmlWriter.writeCharacters(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qname)); |
| } |
| } |
| |
| private void writeQNames(javax.xml.namespace.QName[] qnames, |
| javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException { |
| |
| if (qnames != null) { |
| // we have to store this data until last moment since it is not possible to write any |
| // namespace data after writing the charactor data |
| java.lang.StringBuffer stringToWrite = new java.lang.StringBuffer(); |
| java.lang.String namespaceURI = null; |
| java.lang.String prefix = null; |
| |
| for (int i = 0; i < qnames.length; i++) { |
| if (i > 0) { |
| stringToWrite.append(" "); |
| } |
| namespaceURI = qnames[i].getNamespaceURI(); |
| if (namespaceURI != null) { |
| prefix = xmlWriter.getPrefix(namespaceURI); |
| if ((prefix == null) || (prefix.length() == 0)) { |
| prefix = generatePrefix(namespaceURI); |
| xmlWriter.writeNamespace(prefix, namespaceURI); |
| xmlWriter.setPrefix(prefix,namespaceURI); |
| } |
| |
| if (prefix.trim().length() > 0){ |
| stringToWrite.append(prefix).append(":").append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i])); |
| } else { |
| stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i])); |
| } |
| } else { |
| stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i])); |
| } |
| } |
| xmlWriter.writeCharacters(stringToWrite.toString()); |
| } |
| |
| } |
| |
| |
| /** |
| * 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 = generatePrefix(namespace); |
| |
| while (xmlWriter.getNamespaceContext().getNamespaceURI(prefix) != null) { |
| prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); |
| } |
| |
| xmlWriter.writeNamespace(prefix, namespace); |
| xmlWriter.setPrefix(prefix, namespace); |
| } |
| |
| return prefix; |
| } |
| |
| |
| <!-- ######################################################################################### --> |
| /** |
| * databinding method to get an XML representation of this object |
| * |
| */ |
| public javax.xml.stream.XMLStreamReader getPullParser(javax.xml.namespace.QName qName) |
| throws org.apache.axis2.databinding.ADBException{ |
| |
| |
| <xsl:choose> |
| <xsl:when test="@type or @anon"> |
| java.util.ArrayList elementList = new java.util.ArrayList(); |
| java.util.ArrayList attribList = new java.util.ArrayList(); |
| |
| <xsl:if test="$extension"> |
| attribList.add(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema-instance","type")); |
| attribList.add(new javax.xml.namespace.QName("<xsl:value-of select="$nsuri"/>","<xsl:value-of select="$originalName"/>")); |
| </xsl:if> |
| |
| <xsl:for-each select="property[not(@attribute)]"> |
| <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable> |
| <xsl:variable name="varName">local<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">local<xsl:value-of select="@javaname"/>Tracker</xsl:variable> |
| |
| |
| <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if> |
| <xsl:choose> |
| <xsl:when test="(@ours or @default) and not(@array)"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| <!-- Arraylist can handle null's --> |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(<xsl:value-of select="$varName"/>==null?null: |
| <xsl:value-of select="$varName"/>); |
| </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!!"); |
| } |
| elementList.add(<xsl:value-of select="$varName"/>); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:when test="(@ours or @default) and @array"> |
| if (<xsl:value-of select="$varName"/>!=null) { |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(<xsl:value-of select="$varName"/>[i]); |
| } else { |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(null); |
| </xsl:when> |
| <xsl:when test="$min=0"> |
| // nothing to do |
| </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"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(<xsl:value-of select="$varName"/>); |
| </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){ |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| <xsl:if test="not(@primitive)"> |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| } else { |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(null); |
| </xsl:when> |
| <xsl:when test="$min=0"> |
| // have to do nothing |
| </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> |
| <xsl:if test="@primitive"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| |
| </xsl:if> |
| |
| } |
| } else { |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(null); |
| </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"> |
| if (<xsl:value-of select="$varName"/> != null) { |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| } else { |
| <xsl:choose> |
| <xsl:when test="$min=0"> |
| // have to do nothing |
| </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"> |
| if (<xsl:value-of select="$varName"/> != null){ |
| elementList.add(org.apache.axis2.databinding.utils.Constants.OM_ELEMENT_KEY); |
| elementList.add(<xsl:value-of select="$varName"/>); |
| } else { |
| throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!"); |
| } |
| </xsl:when> |
| <!-- handle binary - Since it is a Datahandler, we can just add it to the list |
| and the ADB pullparser would handle it right--> |
| <xsl:when test="@binary"> |
| <xsl:choose> |
| <xsl:when test="$simple"> |
| elementList.add(org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT); |
| </xsl:when> |
| <xsl:otherwise> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| </xsl:otherwise> |
| </xsl:choose> |
| elementList.add(<xsl:value-of select="$varName"/>); |
| </xsl:when> |
| <!-- the usual case!!!!--> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="$simple"> |
| <!-- if the type is simple then this must be only the element text --> |
| elementList.add(org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT); |
| </xsl:when> |
| <xsl:otherwise> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:if test="@primitive"> |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| </xsl:if> |
| <xsl:if test="not(@primitive)"> |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(<xsl:value-of select="$varName"/>==null?null: |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| </xsl:when> |
| <xsl:otherwise> |
| if (<xsl:value-of select="$varName"/> != null){ |
| elementList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| } else { |
| throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!"); |
| } |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:if> |
| |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:if test="$min=0 or $choice">}</xsl:if> |
| </xsl:for-each> |
| |
| <xsl:for-each select="property[@attribute]"> |
| <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable> |
| <xsl:variable name="varName">local<xsl:value-of select="@javaname"/></xsl:variable> |
| <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable> |
| <xsl:choose> |
| <xsl:when test="@any and not(@array)"> |
| attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY); |
| attribList.add(<xsl:value-of select="$varName"/>); |
| </xsl:when> |
| <xsl:when test="@any and @array"> |
| for (int i=0;i <<xsl:value-of select="$varName"/>.length;i++){ |
| attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY); |
| attribList.add(<xsl:value-of select="$varName"/>[i]); |
| } |
| </xsl:when> |
| <xsl:otherwise> |
| attribList.add( |
| new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>")); |
| <xsl:choose> |
| <xsl:when test="@ours"> |
| attribList.add(<xsl:value-of select="$varName"/>.toString()); |
| </xsl:when> |
| <xsl:otherwise> |
| attribList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:for-each> |
| |
| return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), attribList.toArray()); |
| <!-- end of when for type & anon --> |
| </xsl:when> |
| <xsl:when test="$union and $simple"> |
| return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME, |
| new java.lang.Object[]{ |
| org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT, |
| localObject.toString() |
| }, |
| null); |
| </xsl:when> |
| |
| <xsl:when test="$list and $simple"> |
| return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME, |
| new java.lang.Object[]{ |
| org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT, |
| toString() |
| }, |
| null); |
| </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> |
| <xsl:variable name="primitive" select="property/@primitive"></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){ |
| return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(MY_QNAME); |
| }else{ |
| return <xsl:value-of select="$varName"/>.getPullParser(MY_QNAME); |
| } |
| </xsl:when> |
| <xsl:otherwise>return <xsl:value-of select="$varName"/>.getPullParser(MY_QNAME);</xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="$nillable and not($primitive)"> |
| if (<xsl:value-of select="$varName"/>==null){ |
| return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(MY_QNAME); |
| }else{ |
| return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME, |
| new java.lang.Object[]{ |
| org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT, |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>) |
| }, |
| null); |
| } |
| </xsl:when> |
| <xsl:otherwise> return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME, |
| new java.lang.Object[]{ |
| org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT, |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>) |
| }, |
| null);</xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| |
| <!-- ######################################################################################### --> |
| |
| /** |
| * Factory class that keeps the parse method |
| */ |
| public static class Factory{ |
| |
| <!-- generate some utility factory methods here we must add these methods to a factory class |
| since otherwise it gives a compilation exception in jdk 1.4 --> |
| <xsl:if test="$union and $simple"> |
| <!-- generate methods for a union type --> |
| public static <xsl:value-of select="$name"/> fromString(javax.xml.stream.XMLStreamReader xmlStreamReader, |
| java.lang.String namespaceURI, |
| java.lang.String type) throws org.apache.axis2.databinding.ADBException { |
| |
| <xsl:value-of select="$name"/> object = null; |
| try { |
| if ("http://www.w3.org/2001/XMLSchema".equals(namespaceURI)) { |
| object = new <xsl:value-of select="$name"/>(); |
| object.setObject(xmlStreamReader, namespaceURI, type); |
| } else { |
| object = new <xsl:value-of select="$name"/>(); |
| object.setObject(<xsl:value-of select="$mapperClass"/>.getTypeObject(namespaceURI, type, xmlStreamReader)); |
| } |
| return object; |
| } catch (java.lang.Exception e) { |
| throw new org.apache.axis2.databinding.ADBException("Error in parsing value"); |
| } |
| } |
| |
| public static <xsl:value-of select="$name"/> fromString(java.lang.String value, |
| java.lang.String namespaceURI){ |
| <xsl:value-of select="$name"/> object = new <xsl:value-of select="$name"/>(); |
| boolean isValueSet = false; |
| <xsl:for-each select="memberType"> |
| // we have to set the object with the first matching type. |
| if (!isValueSet) { |
| <xsl:choose> |
| <xsl:when test="@nsuri='http://www.w3.org/2001/XMLSchema'"> |
| try { |
| java.lang.reflect.Method converterMethod = |
| org.apache.axis2.databinding.utils.ConverterUtil.class.getMethod( |
| "convertTo<xsl:value-of select="@shorttypename"/>", |
| new java.lang.Class[]{java.lang.String.class}); |
| object.setObject(converterMethod.invoke(null, new java.lang.Object[]{value})); |
| isValueSet = true; |
| } catch (java.lang.Exception e) { |
| } |
| </xsl:when> |
| <xsl:otherwise> |
| try { |
| object.setObject(<xsl:value-of select="@type"/>.Factory.fromString(value, namespaceURI)); |
| isValueSet = true; |
| } catch (java.lang.Exception e) { |
| } |
| </xsl:otherwise> |
| </xsl:choose> |
| } |
| </xsl:for-each> |
| return object; |
| } |
| |
| public static <xsl:value-of select="$name"/> fromString(javax.xml.stream.XMLStreamReader xmlStreamReader, |
| java.lang.String content) { |
| if (content.indexOf(":") > -1){ |
| java.lang.String prefix = content.substring(0,content.indexOf(":")); |
| java.lang.String namespaceUri = xmlStreamReader.getNamespaceContext().getNamespaceURI(prefix); |
| return <xsl:value-of select="$name"/>.Factory.fromString(content,namespaceUri); |
| } else { |
| return <xsl:value-of select="$name"/>.Factory.fromString(content,""); |
| } |
| } |
| |
| </xsl:if> |
| |
| <xsl:if test="$list and $simple"> |
| |
| <xsl:variable name="javaName"><xsl:value-of select="itemtype/@javaname"/></xsl:variable> |
| <xsl:variable name="varType"><xsl:value-of select="itemtype/@type"/></xsl:variable> |
| <xsl:variable name="ours"><xsl:value-of select="itemtype/@ours"/></xsl:variable> |
| <xsl:variable name="shortTypeNameUncapped" select="itemtype/@shorttypename"/> |
| <xsl:variable name="shortTypeName" |
| select="concat(translate( substring($shortTypeNameUncapped, 1, 1 ),'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($shortTypeNameUncapped, 2, string-length($shortTypeNameUncapped)))" /> |
| |
| |
| public static <xsl:value-of select="$name"/> fromString(javax.xml.stream.XMLStreamReader xmlStreamReader, |
| java.lang.String content) |
| throws org.apache.axis2.databinding.ADBException { |
| |
| <xsl:value-of select="$name"/> object = new <xsl:value-of select="$name"/>(); |
| java.lang.String[] values = content.split(" +"); |
| <xsl:value-of select="$varType"/>[] objectValues = new <xsl:value-of select="$varType"/>[values.length]; |
| |
| <xsl:if test="$varType='javax.xml.namespace.QName'"> |
| java.lang.String prefix = null; |
| java.lang.String namespace = null; |
| </xsl:if> |
| |
| <xsl:if test="string-length(normalize-space($ours)) > 0"> |
| java.lang.String valueContent = null; |
| java.lang.String prefix = null; |
| java.lang.String namespace = null; |
| </xsl:if> |
| |
| |
| try { |
| for (int i = 0; i < values.length; i++) { |
| <xsl:choose> |
| <xsl:when test="$varType='javax.xml.namespace.QName'"> |
| if (values[i].indexOf(":") > 0){ |
| prefix = values[i].substring(0,values[i].indexOf(":")); |
| } else { |
| prefix = ""; |
| } |
| namespace = xmlStreamReader.getNamespaceURI(prefix); |
| objectValues[i] = org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(values[i],namespace); |
| </xsl:when> |
| <xsl:when test="string-length(normalize-space($ours)) > 0"> |
| valueContent = values[i]; |
| if (valueContent.indexOf(":") > 0){ |
| prefix = valueContent.substring(0,valueContent.indexOf(":")); |
| } else { |
| prefix = ""; |
| } |
| namespace = xmlStreamReader.getNamespaceURI(prefix); |
| objectValues[i] = <xsl:value-of select="$varType"/>.Factory.fromString(valueContent,namespace); |
| </xsl:when> |
| <xsl:otherwise> |
| objectValues[i] = |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(values[i]); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| object.set<xsl:value-of select="$javaName"/>(objectValues); |
| return object; |
| } catch (java.lang.Exception e) { |
| throw new org.apache.axis2.databinding.ADBException(); |
| } |
| |
| } |
| </xsl:if> |
| |
| <xsl:for-each select="property"> |
| <xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable> |
| <xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></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:if test="$simple and not(@attribute) and not(enumFacet)"> |
| public static <xsl:value-of select="$name"/> fromString(java.lang.String value, |
| java.lang.String namespaceURI){ |
| <xsl:value-of select="$name"/> returnValue = new <xsl:value-of select="$name"/>(); |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| returnValue.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(value,namespaceURI)); |
| </xsl:when> |
| <xsl:otherwise> |
| returnValue.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(value)); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| return returnValue; |
| } |
| |
| public static <xsl:value-of select="$name"/> fromString(javax.xml.stream.XMLStreamReader xmlStreamReader, |
| java.lang.String content) { |
| if (content.indexOf(":") > -1){ |
| java.lang.String prefix = content.substring(0,content.indexOf(":")); |
| java.lang.String namespaceUri = xmlStreamReader.getNamespaceContext().getNamespaceURI(prefix); |
| return <xsl:value-of select="$name"/>.Factory.fromString(content,namespaceUri); |
| } else { |
| return <xsl:value-of select="$name"/>.Factory.fromString(content,""); |
| } |
| } |
| |
| </xsl:if> |
| <xsl:if test="enumFacet"> |
| 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,java.lang.String namespaceURI) |
| 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> |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| return fromValue(org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(value,namespaceURI)); |
| </xsl:when> |
| <xsl:otherwise> |
| return fromValue(org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(value)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } catch (java.lang.Exception e) { |
| throw new java.lang.IllegalArgumentException(); |
| } |
| } |
| |
| public static <xsl:value-of select="$name"/> fromString(javax.xml.stream.XMLStreamReader xmlStreamReader, |
| java.lang.String content) { |
| if (content.indexOf(":") > -1){ |
| java.lang.String prefix = content.substring(0,content.indexOf(":")); |
| java.lang.String namespaceUri = xmlStreamReader.getNamespaceContext().getNamespaceURI(prefix); |
| return <xsl:value-of select="$name"/>.Factory.fromString(content,namespaceUri); |
| } else { |
| return <xsl:value-of select="$name"/>.Factory.fromString(content,""); |
| } |
| } |
| </xsl:if> |
| |
| </xsl:for-each> |
| |
| /** |
| * 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="$name"/> parse(javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{ |
| <xsl:variable name="isEnumFacet" select="property/enumFacet"/> |
| <xsl:if test="not($isEnumFacet)"><xsl:value-of select="$name"/> object = |
| <xsl:choose><xsl:when test="@isAbstract">null;</xsl:when><xsl:otherwise>new <xsl:value-of select="$name"/>();</xsl:otherwise></xsl:choose> |
| </xsl:if> |
| <xsl:if test="$isEnumFacet"> |
| <xsl:value-of select="$name"/> object = null; |
| // initialize a hash map to keep values |
| java.util.Map attributeMap = new java.util.HashMap(); |
| java.util.List extraAttributeList = new java.util.ArrayList(); |
| </xsl:if> |
| |
| int event; |
| java.lang.String nillableValue = null; |
| java.lang.String prefix =""; |
| java.lang.String namespaceuri =""; |
| 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() && !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> |
| <!-- this class can have only one property --> |
| <xsl:variable name="propertyType"><xsl:value-of select="property/@type"/></xsl:variable> |
| <xsl:variable name="javaName"><xsl:value-of select="property/@javaname"/></xsl:variable> |
| <xsl:choose> |
| <xsl:when test="$propertyType='int'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Integer.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Long.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Byte.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Double.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Float.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Short.MIN_VALUE); |
| </xsl:when> |
| </xsl:choose> |
| return object; |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| </xsl:if> |
| <!-- partical classes can not have any types --> |
| <xsl:if test="(($isType or $anon or $union) and not($particleClass))"> |
| if (reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","type")!=null){ |
| java.lang.String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", |
| "type"); |
| if (fullTypeName!=null){ |
| java.lang.String nsPrefix = null; |
| if (fullTypeName.indexOf(":") > -1){ |
| nsPrefix = fullTypeName.substring(0,fullTypeName.indexOf(":")); |
| } |
| nsPrefix = nsPrefix==null?"":nsPrefix; |
| |
| java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1); |
| <xsl:choose> |
| <xsl:when test="$union"> |
| java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix); |
| object = <xsl:value-of select="$name"/>.Factory.fromString(reader,nsUri,type); |
| </xsl:when> |
| <xsl:otherwise> |
| if (!"<xsl:value-of select="$originalName"/>".equals(type)){ |
| //find namespace for the prefix |
| java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix); |
| return (<xsl:value-of select="$name"/>)<xsl:value-of select="$mapperClass"/>.getTypeObject( |
| nsUri,type,reader); |
| } |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:if test="@isAbstract"> |
| throw new org.apache.axis2.databinding.ADBException("The an abstract class can not be instantiated !!!"); |
| </xsl:if> |
| |
| } |
| <xsl:if test="$union"> |
| } else { |
| // i.e this is an union type with out specific xsi:type |
| java.lang.String content = reader.getElementText(); |
| if (content.indexOf(":") > -1){ |
| // i.e. this could be a qname |
| prefix = content.substring(0,content.indexOf(":")); |
| namespaceuri = reader.getNamespaceContext().getNamespaceURI(prefix); |
| object = <xsl:value-of select="$name"/>.Factory.fromString(content,namespaceuri); |
| } else { |
| object = <xsl:value-of select="$name"/>.Factory.fromString(content,""); |
| } |
| </xsl:if> |
| |
| } |
| |
| </xsl:if> |
| |
| <xsl:if test="$list"> |
| java.lang.String content = reader.getElementText(); |
| object = <xsl:value-of select="$name"/>.Factory.fromString(reader,content); |
| </xsl:if> |
| |
| <!-- populate attributes here!!!. The attributes are part of an element, not part of a type --> |
| // Note all attributes that were handled. Used to differ normal attributes |
| // from anyAttributes. |
| java.util.Vector handledAttributes = new java.util.Vector(); |
| <!-- if this is an enumeration then we have to read attributes after--> |
| |
| <xsl:for-each select="property[@attribute]"> |
| <xsl:variable name="propertyName" select="@name"/> |
| <xsl:variable name="propertyType" select="@type"/> |
| <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:variable name="javaName" select="@javaname"/> |
| <xsl:variable name="namespace" select="@nsuri"/> |
| <xsl:variable name="attribName">tempAttrib<xsl:value-of select="$javaName"/></xsl:variable> |
| |
| <xsl:if test="$propertyName != 'extraAttributes'"> |
| // handle attribute "<xsl:value-of select="$propertyName"/>" |
| java.lang.String <xsl:value-of select="$attribName"/> = |
| <xsl:choose> |
| <xsl:when test="string-length(normalize-space($namespace)) > 0"> |
| reader.getAttributeValue("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"); |
| </xsl:when> |
| <xsl:otherwise> |
| reader.getAttributeValue(null,"<xsl:value-of select="$propertyName"/>"); |
| </xsl:otherwise> |
| </xsl:choose> |
| if (<xsl:value-of select="$attribName"/>!=null){ |
| java.lang.String content = <xsl:value-of select="$attribName"/>; |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| int index = <xsl:value-of select="$attribName"/>.indexOf(":"); |
| if(index > -1){ |
| prefix = <xsl:value-of select="$attribName"/>.substring(0,index); |
| } else { |
| // i.e this is in default namesace |
| prefix = ""; |
| } |
| namespaceuri = reader.getNamespaceURI(prefix); |
| <xsl:choose> |
| <xsl:when test="$isEnumFacet"> |
| attributeMap.put("<xsl:value-of select="$javaName"/>", |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(<xsl:value-of select="$attribName"/>,namespaceuri)); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(<xsl:value-of select="$attribName"/>,namespaceuri)); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="$isEnumFacet"> |
| attributeMap.put("<xsl:value-of select="$javaName"/>", |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(<xsl:value-of select="$attribName"/>)); |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="@ours"> |
| object.set<xsl:value-of select="$javaName"/>( |
| <xsl:value-of select="@type"/>.Factory.fromString(reader,<xsl:value-of select="$attribName"/>)); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(<xsl:value-of select="$attribName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| } else { |
| <xsl:choose> |
| <xsl:when test="@optional"> |
| <xsl:if test="@primitive"> |
| <xsl:choose> |
| <xsl:when test="$propertyType='int'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Integer.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Long.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Byte.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Double.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Float.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Short.MIN_VALUE); |
| </xsl:when> |
| </xsl:choose> |
| </xsl:if> |
| </xsl:when> |
| <xsl:otherwise> |
| throw new org.apache.axis2.databinding.ADBException("Required attribute <xsl:value-of select="$propertyName"/> is missing"); |
| </xsl:otherwise> |
| </xsl:choose> |
| } |
| handledAttributes.add("<xsl:value-of select="$propertyName"/>"); |
| </xsl:if> |
| |
| <!-- Handle anyAttributes here --> |
| <xsl:if test="$propertyName = 'extraAttributes'"> |
| // now run through all any or extra attributes |
| // which were not reflected until now |
| for (int i=0; i < reader.getAttributeCount(); i++) { |
| if (!handledAttributes.contains(reader.getAttributeLocalName(i))) { |
| // this is an anyAttribute and we create |
| // an OMAttribute for this |
| org.apache.axiom.om.impl.llom.OMAttributeImpl attr = |
| new org.apache.axiom.om.impl.llom.OMAttributeImpl( |
| reader.getAttributeLocalName(i), |
| new org.apache.axiom.om.impl.dom.NamespaceImpl( |
| reader.getAttributeNamespace(i), reader.getAttributePrefix(i)), |
| reader.getAttributeValue(i), |
| org.apache.axiom.om.OMAbstractFactory.getOMFactory()); |
| |
| // and add it to the extra attributes |
| <xsl:choose> |
| <xsl:when test="property/enumFacet"> |
| extraAttributeList.add(attr); |
| </xsl:when> |
| <xsl:otherwise> |
| object.addExtraAttributes(attr); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| } |
| </xsl:if> |
| |
| </xsl:for-each> |
| |
| |
| <xsl:if test="($isType or $anon) and not($simple) and not($particleClass)"> |
| <!-- Skip the outer start element in order to process the subelements. --> |
| reader.next(); |
| </xsl:if> |
| <!-- If we are not a type and not an element with anonymous type, then we are an element with one property for our named type. --> |
| <!-- Our single named-type property applies to our entire outer element, so don't skip it. --> |
| <!-- First loop creates arrayLists for handling arrays --> |
| <xsl:for-each select="property[not(@attribute)]"> |
| <xsl:if test="@array"> |
| java.util.ArrayList list<xsl:value-of select="position()"/> = new java.util.ArrayList(); |
| </xsl:if> |
| </xsl:for-each> |
| |
| <xsl:if test="property[not(@attribute)]"> |
| <xsl:if test="$unordered and not($particleClass)"> <!-- Properties can be in any order --> |
| while(!reader.isEndElement()) { |
| if (reader.isStartElement() <xsl:if test="$simple"> || reader.hasText()</xsl:if>){ |
| </xsl:if> |
| </xsl:if> |
| |
| <!-- Now reloop and populate the code --> |
| <xsl:for-each select="property[not(@attribute)]"> |
| <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable> |
| <xsl:variable name="propertyType"><xsl:value-of select="@type"/></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:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable> |
| <xsl:variable name="listName">list<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="loopBoolName">loopDone<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="startQname">startQname<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="stateMachineName">stateMachine<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="builderName">builder<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable> |
| <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable> |
| <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable> |
| <xsl:variable name="particleClassType" select="@particleClassType"></xsl:variable> |
| |
| <xsl:variable name="propQName">new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>")</xsl:variable> |
| |
| <xsl:choose> |
| <xsl:when test="$unordered and not($choice and $hasParticleType)"> <!-- One property per iteration if unordered --> |
| <xsl:if test="position()>1"> |
| else |
| </xsl:if> |
| </xsl:when> |
| <xsl:otherwise> |
| <!-- If sequence, advance to start of next property or to end of outer element --> |
| while (!reader.isStartElement() && !reader.isEndElement()) reader.next(); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:if test="not(enumFacet)"> |
| <xsl:choose> |
| <xsl:when test="$shortTypeName='OMElement'"> |
| if (reader.isStartElement()){ |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:if test="$particleClassType and ($choice or ($min=0))"> |
| <!-- since we can not validate the parser before going to next class |
| we have to sollow an excpetions : todo find a better solsution--> |
| try{ |
| </xsl:if> |
| if (reader.isStartElement() <xsl:if test="$simple"> || reader.hasText()</xsl:if> <xsl:if test="not($simple) and not($particleClassType)">&& <xsl:value-of select="$propQName"/>.equals(reader.getName())</xsl:if>){ |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| </xsl:if> |
| <xsl:choose> |
| <xsl:when test="@array"> |
| <!-- We must be a named type or element with anonymous type. --> |
| <!-- Elements with a named type have a single simple (non-array) property for their type --> |
| // Process the array and step past its final element's end. |
| <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable> |
| <xsl:choose> |
| <xsl:when test="@ours"> |
| <xsl:choose> |
| <xsl:when test="$particleClassType"> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader)); |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader)); |
| } |
| } |
| // call the converter utility to convert and set the array |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class, |
| <xsl:value-of select="$listName"/>)); |
| |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:choose> |
| <!-- if the base property type is a soap encoding array then extension |
| mapper class should also passed--> |
| <xsl:when test="$basePropertyType='org.apache.axis2.databinding.types.soapencoding.Array'"> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader, |
| <xsl:value-of select="$mapperClass"/>.class)); |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader)); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:if test="@nillable">}</xsl:if> |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| // We should be at the end element, but make sure |
| while (!reader.isEndElement()) |
| reader.next(); |
| // Step out of this element |
| reader.next(); |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){ |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:choose> |
| <!-- if the base property type is a soap encoding array then extension |
| mapper class should also passed--> |
| <xsl:when test="$basePropertyType='org.apache.axis2.databinding.types.soapencoding.Array'"> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader, |
| <xsl:value-of select="$mapperClass"/>.class)); |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>.Factory.parse(reader)); |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:if test="@nillable">}</xsl:if> |
| }else{ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| } |
| } |
| // call the converter utility to convert and set the array |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class, |
| <xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <!-- End of Array handling of ADB classes --> |
| |
| <!--Let's handle xs:any here--> |
| <xsl:when test="@any"> |
| boolean <xsl:value-of select="$loopBoolName"/>=false; |
| |
| while (!<xsl:value-of select="$loopBoolName"/>){ |
| event = reader.getEventType(); |
| if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){ |
| |
| // We need to wrap the reader so that it produces a fake START_DOCUEMENT event |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> |
| = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader), reader.getName()); |
| |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement()); |
| reader.next(); |
| if (reader.isEndElement()) { |
| // we have two countinuos end elements |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| |
| }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <!-- End of Array handling of ADB classes --> |
| <xsl:when test="@default"> |
| |
| boolean <xsl:value-of select="$loopBoolName"/>=false; |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName( |
| "<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>"); |
| |
| while (!<xsl:value-of select="$loopBoolName"/>){ |
| event = reader.getEventType(); |
| if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event |
| && <xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| |
| <!-- if-block that handles nillable --> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| }else{ |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(reader, |
| <xsl:value-of select="$mapperClass"/>.class)); |
| <xsl:if test="@nillable">}</xsl:if> |
| } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$listName"/>.toArray()); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <!-- handling binary case --> |
| <xsl:when test="@binary"> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| |
| if (isReaderMTOMAware(reader) |
| && |
| java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY))) |
| { |
| //MTOM aware reader - get the datahandler directly and put it in the object |
| <xsl:value-of select="$listName"/>.add( |
| (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER)); |
| } else { |
| // Step in |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && <xsl:value-of select="$propQName"/>.equals(reader.getName())) { |
| reader.next(); |
| } |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE))) |
| { |
| java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8"); |
| <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id)); |
| reader.next(); |
| reader.next(); |
| } else if(reader.hasText()) { |
| //Do the usual conversion |
| java.lang.String content = reader.getText(); |
| <xsl:value-of select="$listName"/>.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content)); |
| reader.next(); |
| } |
| |
| } |
| |
| |
| <xsl:if test="@nillable">}</xsl:if> |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| // Ensure we are at the EndElement |
| while (!reader.isEndElement()){ |
| reader.next(); |
| } |
| // Step out of this element |
| reader.next(); |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){ |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| |
| <xsl:if test="not($simple)">reader.next();</xsl:if> |
| if (isReaderMTOMAware(reader) |
| && |
| java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY))) |
| { |
| //MTOM aware reader - get the datahandler directly and put it in the object |
| <xsl:value-of select="$listName"/>.add( |
| (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER)); |
| } else { |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE))) |
| { |
| java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8"); |
| <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id)); |
| reader.next(); |
| reader.next(); |
| } else if(reader.hasText()) { |
| //Do the usual conversion |
| java.lang.String content = reader.getText(); |
| <xsl:value-of select="$listName"/>.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content)); |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:if test="@nillable">}</xsl:if> |
| }else{ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| } |
| } |
| // call the converter utility to convert and set the array |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="@default"> |
| boolean <xsl:value-of select="$loopBoolName"/>=false; |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName( |
| "<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>"); |
| |
| while (!<xsl:value-of select="$loopBoolName"/>){ |
| event = reader.getEventType(); |
| if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event |
| && <xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| |
| <!-- if-block that handles nillable --> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| }else{ |
| </xsl:if> |
| |
| // We need to wrap the reader so that it produces a fake START_DOCUEMENT event |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> |
| = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader), <xsl:value-of select="$startQname"/>); |
| |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement()); |
| <xsl:if test="@nillable">}</xsl:if> |
| } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| </xsl:when> |
| <!-- End of Array handling of default class - that is the OMElement --> |
| <xsl:otherwise> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='int'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Integer.MIN_VALUE)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='long'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Long.MIN_VALUE)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='byte'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Byte.MIN_VALUE)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='double'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Double.NaN)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='float'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Float.NaN)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='short'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Short.MIN_VALUE)); |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="$listName"/>.add(null); |
| </xsl:otherwise> |
| </xsl:choose> |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(reader.getElementText()); |
| <xsl:if test="@nillable">}</xsl:if> |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| // Ensure we are at the EndElement |
| while (!reader.isEndElement()){ |
| reader.next(); |
| } |
| // Step out of this element |
| reader.next(); |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){ |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='int'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Integer.MIN_VALUE)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='long'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Long.MIN_VALUE)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='byte'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Byte.MIN_VALUE)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='double'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Double.NaN)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='float'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Float.NaN)); |
| </xsl:when> |
| <xsl:when test="$basePropertyType='short'"> |
| <xsl:value-of select="$listName"/>.add(String.valueOf(java.lang.Short.MIN_VALUE)); |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="$listName"/>.add(null); |
| </xsl:otherwise> |
| </xsl:choose> |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(reader.getElementText()); |
| <xsl:if test="@nillable">}</xsl:if> |
| }else{ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| } |
| } |
| // call the converter utility to convert and set the array |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:when test="@ours"> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| object.set<xsl:value-of select="$javaName"/>(null); |
| reader.next(); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| }else{ |
| </xsl:if> |
| <xsl:choose> |
| <!-- if the base property type is a soap encoding array then extension |
| mapper class should also passed--> |
| <xsl:when test="$propertyType='org.apache.axis2.databinding.types.soapencoding.Array'"> |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/>.Factory.parse(reader, |
| <xsl:value-of select="$mapperClass"/>.class)); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/>.Factory.parse(reader)); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:if test="($isType or $anon) and not($particleClassType)"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| <xsl:if test="@nillable">}</xsl:if> |
| </xsl:when> |
| <!-- start of any handling. Any can also be @default so we need to handle the any case before default! --> |
| <xsl:when test="@any"> |
| <!--No concerns of being nillable here. if it's ours and if the nillable attribute was present |
| we would have outputted a null already--> |
| <!--This can be any element and we may not know the name. so we pick the name of the element from the parser--> |
| //use the QName from the parser as the name for the builder |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = reader.getName(); |
| |
| // We need to wrap the reader so that it produces a fake START_DOCUMENT event |
| // this is needed by the builder classes |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> = |
| new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>); |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement()); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:when> |
| <!-- end of adb type handling code --> |
| <!-- start of OMelement handling --> |
| <xsl:when test="@default"> |
| object.set<xsl:value-of select="$javaName"/>(org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(reader, |
| <xsl:value-of select="$mapperClass"/>.class)); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:when> |
| <!-- end of OMelement handling --> |
| <!-- start of the simple types handling for binary content--> |
| <xsl:when test="@binary"> |
| <xsl:if test="not($simple)">reader.next();</xsl:if> |
| if (isReaderMTOMAware(reader) |
| && |
| java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY))) |
| { |
| //MTOM aware reader - get the datahandler directly and put it in the object |
| object.set<xsl:value-of select="$javaName"/>( |
| (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER)); |
| } else { |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE))) |
| { |
| java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8"); |
| object.set<xsl:value-of select="$javaName"/>(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id)); |
| reader.next(); |
| <xsl:if test="($isType or $anon) and not($simple)"> |
| reader.next(); |
| </xsl:if> |
| } else if(reader.hasText()) { |
| //Do the usual conversion |
| java.lang.String content = reader.getText(); |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content)); |
| <xsl:if test="($isType or $anon) and not($simple)"> |
| reader.next(); |
| </xsl:if> |
| } |
| } |
| |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:when> |
| <!-- start of the simple types handling --> |
| <xsl:otherwise> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if (!"true".equals(nillableValue) && !"1".equals(nillableValue)){ |
| </xsl:if> |
| java.lang.String content = reader.getElementText(); |
| <xsl:if test="not(enumFacet)"> |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| int index = content.indexOf(":"); |
| if(index > 0){ |
| prefix = content.substring(0,index); |
| } else { |
| prefix = ""; |
| } |
| namespaceuri = reader.getNamespaceURI(prefix); |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(content,namespaceuri)); |
| </xsl:when> |
| <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'"> |
| org.apache.axiom.om.OMFactory fac = org.apache.axiom.om.OMAbstractFactory.getOMFactory(); |
| org.apache.axiom.om.OMNamespace omNs = fac.createOMNamespace("<xsl:value-of select="$namespace"/>", ""); |
| org.apache.axiom.om.OMElement _value<xsl:value-of select="$javaName"/> = fac.createOMElement("<xsl:value-of select="$propertyName"/>", omNs); |
| _value<xsl:value-of select="$javaName"/>.addChild(fac.createOMText(_value<xsl:value-of select="$javaName"/>, content)); |
| object.set<xsl:value-of select="$javaName"/>(_value<xsl:value-of select="$javaName"/>); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(content)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:if> |
| <xsl:if test="(enumFacet)"> |
| if (content.indexOf(":") > 0) { |
| // this seems to be a Qname so find the namespace and send |
| prefix = content.substring(0, content.indexOf(":")); |
| namespaceuri = reader.getNamespaceURI(prefix); |
| object = <xsl:value-of select="$name"/>.Factory.fromString(content,namespaceuri); |
| } else { |
| // this seems to be not a qname send and empty namespace incase of it is |
| // check is done in fromString method |
| object = <xsl:value-of select="$name"/>.Factory.fromString(content,""); |
| } |
| <!-- set the attribute values here since onbject is not initalized yet --> |
| <xsl:for-each select="../property[@attribute]"> |
| <xsl:variable name="propertyName" select="@name"/> |
| <xsl:variable name="propertyType" select="@type"/> |
| <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:variable name="javaName" select="@javaname"/> |
| <xsl:variable name="attribName">tempObjectAttrib<xsl:value-of select="$propertyName"/></xsl:variable> |
| |
| <xsl:if test="$propertyName != 'extraAttributes'"> |
| // handle attribute "<xsl:value-of select="$propertyName"/>" |
| java.lang.Object <xsl:value-of select="$attribName"/> = |
| attributeMap.get("<xsl:value-of select="$javaName"/>"); |
| if (<xsl:value-of select="$attribName"/>!=null){ |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| object.set<xsl:value-of select="$javaName"/>((javax.xml.namespace.QName)<xsl:value-of select="$attribName"/>); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$shortTypeName"/>)<xsl:value-of select="$attribName"/>); |
| </xsl:otherwise> |
| </xsl:choose> |
| } |
| </xsl:if> |
| |
| <!-- Handle anyAttributes here --> |
| <xsl:if test="$propertyName = 'extraAttributes'"> |
| for(java.util.Iterator iter = extraAttributeList.iterator();iter.hasNext();){ |
| object.addExtraAttributes((org.apache.axiom.om.impl.llom.OMAttributeImpl)iter.next()); |
| } |
| </xsl:if> |
| |
| </xsl:for-each> |
| |
| </xsl:if> |
| <xsl:if test="@nillable"> |
| } else { |
| <!-- set the variable value according to the variable type --> |
| <xsl:choose> |
| <xsl:when test="$propertyType='int'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Integer.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Long.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Byte.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Double.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Float.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Short.MIN_VALUE); |
| </xsl:when> |
| </xsl:choose> |
| reader.getElementText(); // throw away text nodes if any. |
| } |
| </xsl:if> |
| <xsl:if test="($isType or $anon) and not($simple)"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:if test="not(enumFacet)"> |
| } // End of if for expected property start element |
| <xsl:if test="$min=0 and $ordered"> |
| else { |
| <xsl:choose> |
| <xsl:when test="$propertyType='int'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Integer.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='long'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Long.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='byte'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Byte.MIN_VALUE); |
| </xsl:when> |
| <xsl:when test="$propertyType='double'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Double.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='float'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Float.NaN); |
| </xsl:when> |
| <xsl:when test="$propertyType='short'"> |
| object.set<xsl:value-of select="$javaName"/>(java.lang.Short.MIN_VALUE); |
| </xsl:when> |
| </xsl:choose> |
| } |
| </xsl:if> |
| </xsl:if> |
| <!-- in a particle class all inner elements may be min=0 their validation done |
| inside the sequce class --> |
| <xsl:if test="$ordered and $min!=0 and not($particleClassType)"> |
| else{ |
| // A start element we are not expecting indicates an invalid parameter was passed |
| throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); |
| } |
| </xsl:if> |
| <xsl:if test="$particleClassType and ($choice or ($min=0)) and not($shortTypeName='OMElement')"> |
| <!-- since we can not validate the parser before going to next class |
| we have to sollow an excpetions : todo find a better solsution--> |
| } catch (java.lang.Exception e) {} |
| </xsl:if> |
| </xsl:for-each> |
| |
| <xsl:if test="$ordered"> <!-- pick up trailing cruft after final property before outer endElement and verify no trailing properties --> |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| <xsl:if test="not($particleClass)"> |
| if (reader.isStartElement()) |
| // A start element we are not expecting indicates a trailing invalid property |
| throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); |
| </xsl:if> |
| </xsl:if> |
| |
| <xsl:if test="property[not(@attribute)]"> <!-- this if is needed to skip all this when there are no propoerties--> |
| <xsl:if test="$unordered and not($particleClass)"> |
| <xsl:if test="not(property/enumFacet) and not($choice or $hasParticleType)"> |
| else{ |
| // A start element we are not expecting indicates an invalid parameter was passed |
| throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); |
| } |
| </xsl:if> |
| } else { |
| reader.next(); |
| } <!-- At neither a start nor an end element, skip it --> |
| } // end of while loop |
| </xsl:if> |
| </xsl:if> |
| |
| |
| |
| } catch (javax.xml.stream.XMLStreamException e) { |
| throw new java.lang.Exception(e); |
| } |
| |
| return object; |
| } |
| |
| }//end of factory class |
| |
| <!-- end of template for choice/all --> |
| |
| } |
| <!-- end of main template --> |
| </xsl:template> |
| |
| |
| <!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--> |
| <!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--> |
| <!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--> |
| <!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--> |
| <!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--> |
| <!-- $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--> |
| |
| |
| <!-- this is the common template --> |
| <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) && (param.length > <xsl:value-of select="@maxOccurs"/>)){ |
| throw new org.apache.axis2.databinding.ADBException(); |
| } |
| </xsl:if> |
| <xsl:if test="$min!=0 and @array"> |
| if ((param != null) && (param.length < <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) && (param.length > <xsl:value-of select="@maxOccurs"/>)){ |
| throw new org.apache.axis2.databinding.ADBException(); |
| } |
| </xsl:if> |
| <xsl:if test="$min!=0"> |
| if ((param != null) && (param.length < <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"/> < param.length()) </xsl:if> |
| <xsl:if test="(@maxLenFacet)"> <xsl:if test="(@minLenFacet)"> && </xsl:if> (param.length() >= <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"/> < </xsl:if> <xsl:if test="(@minInFacet)"> <xsl:value-of select="$minInFacet"/> <= </xsl:if> param <xsl:if test="(@maxExFacet)"> > <xsl:value-of select="$maxExFacet"/> </xsl:if> <xsl:if test="(@maxInFacet)"> >= <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 <<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 < <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 < <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 < <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("")) { |
| 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"/>"); |
| } |
| 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 < <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() && !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){ |
| java.lang.String fullTypeName = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance", |
| "type"); |
| if (fullTypeName!=null){ |
| java.lang.String nsPrefix = fullTypeName.substring(0,fullTypeName.indexOf(":")); |
| nsPrefix = nsPrefix==null?"":nsPrefix; |
| |
| java.lang.String type = fullTypeName.substring(fullTypeName.indexOf(":")+1); |
| if (!"<xsl:value-of select="$originalName"/>".equals(type)){ |
| //find namespace for the prefix |
| java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix); |
| return (<xsl:value-of select="$name"/>)<xsl:value-of select="$mapperClass"/>.getTypeObject( |
| nsUri,type,reader); |
| } |
| |
| } |
| |
| } |
| </xsl:if> |
| |
| <!-- populate attributes here!!!. The attributes are part of an element, not part of a type --> |
| // Note all attributes that were handled. Used to differ normal attributes |
| // from anyAttributes. |
| java.util.Vector handledAttributes = new java.util.Vector(); |
| <xsl:for-each select="property[@attribute]"> |
| <xsl:variable name="propertyName" select="@name"/> |
| <xsl:variable name="propertyType" select="@type"/> |
| <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:variable name="javaName" select="@javaname"/> |
| <xsl:variable name="namespace" select="@nsuri"/> |
| <xsl:variable name="attribName">tempAttrib<xsl:value-of select="$propertyName"/></xsl:variable> |
| |
| <xsl:if test="$propertyName != 'extraAttributes'"> |
| // handle attribute "<xsl:value-of select="$propertyName"/>" |
| java.lang.String <xsl:value-of select="$attribName"/> = |
| reader.getAttributeValue("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>"); |
| if (<xsl:value-of select="$attribName"/>!=null){ |
| java.lang.String content = <xsl:value-of select="$attribName"/>; |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| int index = <xsl:value-of select="$attribName"/>.indexOf(":"); |
| java.lang.String prefix =""; |
| java.lang.String namespaceuri =""; |
| if(index >0){ |
| prefix = <xsl:value-of select="$attribName"/>.substring(0,index); |
| namespaceuri = reader.getNamespaceURI(prefix); |
| } |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(<xsl:value-of select="$attribName"/>,namespaceuri)); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>( |
| <xsl:value-of select="$attribName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| } |
| handledAttributes.add("<xsl:value-of select="$propertyName"/>"); |
| </xsl:if> |
| |
| <!-- Handle anyAttributes here --> |
| <xsl:if test="$propertyName = 'extraAttributes'"> |
| // now run through all any or extra attributes |
| // which were not reflected until now |
| for (int i=0; i < reader.getAttributeCount(); i++) { |
| if (!handledAttributes.contains(reader.getAttributeLocalName(i))) { |
| // this is an anyAttribute and we create |
| // an OMAttribute for this |
| org.apache.axiom.om.impl.llom.OMAttributeImpl attr = |
| new org.apache.axiom.om.impl.llom.OMAttributeImpl( |
| reader.getAttributeLocalName(i), |
| new org.apache.axiom.om.impl.dom.NamespaceImpl( |
| reader.getAttributeNamespace(i), reader.getAttributePrefix(i)), |
| reader.getAttributeValue(i), |
| org.apache.axiom.om.OMAbstractFactory.getOMFactory()); |
| |
| // and add it to the extra attributes |
| object.addExtraAttributes(attr); |
| } |
| } |
| </xsl:if> |
| |
| </xsl:for-each> |
| |
| <xsl:if test="($isType or $anon) and not($simple)"> |
| <!-- Skip the outer start element in order to process the subelements. --> |
| reader.next(); |
| </xsl:if> |
| <!-- If we are not a type and not an element with anonymous type, then we are an element with one property for our named type. --> |
| <!-- Our single named-type property applies to our entire outer element, so don't skip it. --> |
| <!-- First loop creates arrayLists for handling arrays --> |
| <xsl:for-each select="property[not(@attribute)]"> |
| <xsl:if test="@array"> |
| java.util.ArrayList list<xsl:value-of select="position()"/> = new java.util.ArrayList(); |
| </xsl:if> |
| </xsl:for-each> |
| |
| <xsl:if test="property[not(@attribute)]"> |
| <xsl:if test="$unordered"> <!-- Properties can be in any order --> |
| while(!reader.isEndElement()) { |
| if (reader.isStartElement() <xsl:if test="$simple"> || reader.hasText()</xsl:if>){ |
| </xsl:if> |
| </xsl:if> |
| |
| <!-- Now reloop and populate the code --> |
| <xsl:for-each select="property[not(@attribute)]"> |
| <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable> |
| <xsl:variable name="propertyType"><xsl:value-of select="@type"/></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:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable> |
| <xsl:variable name="listName">list<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="loopBoolName">loopDone<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="startQname">startQname<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="stateMachineName">stateMachine<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="builderName">builder<xsl:value-of select="position()"/></xsl:variable> |
| <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable> |
| <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable> |
| <xsl:variable name="min"><xsl:value-of select="@minOccurs"/></xsl:variable> |
| |
| <xsl:variable name="propQName">new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>")</xsl:variable> |
| |
| <xsl:choose> |
| <xsl:when test="$unordered"> <!-- One property per iteration if unordered --> |
| <xsl:if test="position()>1"> |
| else |
| </xsl:if> |
| </xsl:when> |
| <xsl:otherwise> |
| <!-- If sequence, advance to start of next property or to end of outer element --> |
| while (!reader.isStartElement() && !reader.isEndElement()) reader.next(); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| <xsl:if test="not(enumFacet)"> |
| <xsl:choose> |
| <xsl:when test="$shortTypeName='OMElement'"> |
| if (reader.isStartElement()){ |
| </xsl:when> |
| <xsl:otherwise> |
| if (reader.isStartElement() <xsl:if test="$simple"> || reader.hasText()</xsl:if> <xsl:if test="not($simple)">&& <xsl:value-of select="$propQName"/>.equals(reader.getName())</xsl:if>){ |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| </xsl:if> |
| <xsl:choose> |
| <xsl:when test="@array"> |
| <!-- We must be a named type or element with anonymous type. --> |
| <!-- Elements with a named type have a single simple (non-array) property for their type --> |
| // Process the array and step past its final element's end. |
| <xsl:variable name="basePropertyType"><xsl:value-of select="@arrayBaseType"/></xsl:variable> |
| <xsl:choose> |
| <xsl:when test="@ours"> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>Helper.parse(reader)); |
| <xsl:if test="@nillable">}</xsl:if> |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| // We should be at the end element, but make sure |
| while (!reader.isEndElement()) |
| reader.next(); |
| // Step out of this element |
| reader.next(); |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){ |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$basePropertyType"/>Helper.parse(reader)); |
| <xsl:if test="@nillable">}</xsl:if> |
| }else{ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| } |
| } |
| // call the converter utility to convert and set the array |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class, |
| <xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <!-- End of Array handling of ADB classes --> |
| |
| <!--Let's handle xs:any here--> |
| <xsl:when test="@any"> |
| boolean <xsl:value-of select="$loopBoolName"/>=false; |
| |
| while (!<xsl:value-of select="$loopBoolName"/>){ |
| event = reader.getEventType(); |
| if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event){ |
| |
| // We need to wrap the reader so that it produces a fake START_DOCUEMENT event |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> |
| = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader), reader.getName()); |
| |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement()); |
| reader.next(); |
| if (reader.isEndElement()) { |
| // we have two countinuos end elements |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| |
| }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <!-- End of Array handling of ADB classes --> |
| <xsl:when test="@default"> |
| |
| boolean <xsl:value-of select="$loopBoolName"/>=false; |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName( |
| "<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>"); |
| |
| while (!<xsl:value-of select="$loopBoolName"/>){ |
| event = reader.getEventType(); |
| if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event |
| && <xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| |
| <!-- if-block that handles nillable --> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| }else{ |
| </xsl:if> |
| // we parse it as an omElement |
| // We need to wrap the reader so that it produces a fake START_DOCUEMENT event |
| // this is needed by the builder classes |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> = |
| new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>); |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement()); |
| <xsl:if test="@nillable">}</xsl:if> |
| } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <!-- handling binary case --> |
| <xsl:when test="@binary"> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| |
| if (isReaderMTOMAware(reader) |
| && |
| java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY))) |
| { |
| //MTOM aware reader - get the datahandler directly and put it in the object |
| <xsl:value-of select="$listName"/>.add( |
| (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER)); |
| } else { |
| // Step in |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && <xsl:value-of select="$propQName"/>.equals(reader.getName())) { |
| reader.next(); |
| } |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE))) |
| { |
| java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8"); |
| <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id)); |
| reader.next(); |
| reader.next(); |
| } else if(reader.hasText()) { |
| //Do the usual conversion |
| java.lang.String content = reader.getText(); |
| <xsl:value-of select="$listName"/>.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content)); |
| reader.next(); |
| } |
| |
| } |
| |
| |
| <xsl:if test="@nillable">}</xsl:if> |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| // Ensure we are at the EndElement |
| while (!reader.isEndElement()){ |
| reader.next(); |
| } |
| // Step out of this element |
| reader.next(); |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){ |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| |
| <xsl:if test="not($simple)">reader.next();</xsl:if> |
| if (isReaderMTOMAware(reader) |
| && |
| java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY))) |
| { |
| //MTOM aware reader - get the datahandler directly and put it in the object |
| <xsl:value-of select="$listName"/>.add( |
| (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER)); |
| } else { |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE))) |
| { |
| java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8"); |
| <xsl:value-of select="$listName"/>.add(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id)); |
| reader.next(); |
| reader.next(); |
| } else if(reader.hasText()) { |
| //Do the usual conversion |
| java.lang.String content = reader.getText(); |
| <xsl:value-of select="$listName"/>.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content)); |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:if test="@nillable">}</xsl:if> |
| }else{ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| } |
| } |
| // call the converter utility to convert and set the array |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="@default"> |
| boolean <xsl:value-of select="$loopBoolName"/>=false; |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName( |
| "<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>"); |
| |
| while (!<xsl:value-of select="$loopBoolName"/>){ |
| event = reader.getEventType(); |
| if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event |
| && <xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| |
| <!-- if-block that handles nillable --> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| }else{ |
| </xsl:if> |
| |
| // We need to wrap the reader so that it produces a fake START_DOCUEMENT event |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> |
| = new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader), <xsl:value-of select="$startQname"/>); |
| |
| <xsl:value-of select="$listName"/>.add(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement()); |
| <xsl:if test="@nillable">}</xsl:if> |
| } else if (javax.xml.stream.XMLStreamConstants.START_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_ELEMENT == event && |
| !<xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else if (javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| |
| } |
| |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| </xsl:when> |
| <!-- End of Array handling of default class - that is the OMElement --> |
| <xsl:otherwise> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(reader.getElementText()); |
| <xsl:if test="@nillable">}</xsl:if> |
| //loop until we find a start element that is not part of this array |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| // Ensure we are at the EndElement |
| while (!reader.isEndElement()){ |
| reader.next(); |
| } |
| // Step out of this element |
| reader.next(); |
| // Step to next element event. |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isEndElement()){ |
| //two continuous end elements means we are exiting the xml structure |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } else { |
| if (<xsl:value-of select="$propQName"/>.equals(reader.getName())){ |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| <xsl:value-of select="$listName"/>.add(null); |
| reader.next(); |
| } else { |
| </xsl:if> |
| <xsl:value-of select="$listName"/>.add(reader.getElementText()); |
| <xsl:if test="@nillable">}</xsl:if> |
| }else{ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| } |
| } |
| } |
| // call the converter utility to convert and set the array |
| <xsl:choose> |
| <xsl:when test="$basePropertyType='java.lang.String'"> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| <xsl:value-of select="$listName"/>.toArray(new <xsl:value-of select="$basePropertyType"/>[<xsl:value-of select="$listName"/>.size()])); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>((<xsl:value-of select="$propertyType"/>) |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToArray( |
| <xsl:value-of select="$basePropertyType"/>.class,<xsl:value-of select="$listName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:when test="@ours"> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if ("true".equals(nillableValue) || "1".equals(nillableValue)){ |
| object.set<xsl:value-of select="$javaName"/>(null); |
| reader.next(); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| }else{ |
| </xsl:if> |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$propertyType"/>Helper.parse(reader)); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| <xsl:if test="@nillable">}</xsl:if> |
| </xsl:when> |
| <!-- start of any handling. Any can also be @default so we need to handle the any case before default! --> |
| <xsl:when test="@any"> |
| <!--No concerns of being nillable here. if it's ours and if the nillable attribute was present |
| we would have outputted a null already--> |
| <!--This can be any element and we may not know the name. so we pick the name of the element from the parser--> |
| //use the QName from the parser as the name for the builder |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = reader.getName(); |
| |
| // We need to wrap the reader so that it produces a fake START_DOCUMENT event |
| // this is needed by the builder classes |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> = |
| new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>); |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement()); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:when> |
| <!-- end of adb type handling code --> |
| <!-- start of OMelement handling --> |
| <xsl:when test="@default"> |
| boolean <xsl:value-of select="$loopBoolName"/> = false; |
| javax.xml.namespace.QName <xsl:value-of select="$startQname"/> = new javax.xml.namespace.QName( |
| "<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>"); |
| |
| while(!<xsl:value-of select="$loopBoolName"/>){ |
| if (reader.isStartElement() && <xsl:value-of select="$startQname"/>.equals(reader.getName())){ |
| <xsl:value-of select="$loopBoolName"/> = true; |
| }else{ |
| reader.next(); |
| } |
| } |
| |
| <!-- todo put the code here for nillable --> |
| // We need to wrap the reader so that it produces a fake START_DOCUEMENT event |
| // this is needed by the builder classes |
| org.apache.axis2.databinding.utils.NamedStaxOMBuilder <xsl:value-of select="$builderName"/> = |
| new org.apache.axis2.databinding.utils.NamedStaxOMBuilder( |
| new org.apache.axis2.util.StreamWrapper(reader),<xsl:value-of select="$startQname"/>); |
| object.set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$builderName"/>.getOMElement().getFirstElement()); |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:when> |
| <!-- end of OMelement handling --> |
| <!-- start of the simple types handling for binary content--> |
| <xsl:when test="@binary"> |
| <xsl:if test="not($simple)">reader.next();</xsl:if> |
| if (isReaderMTOMAware(reader) |
| && |
| java.lang.Boolean.TRUE.equals(reader.getProperty(org.apache.axiom.om.OMConstants.IS_BINARY))) |
| { |
| //MTOM aware reader - get the datahandler directly and put it in the object |
| object.set<xsl:value-of select="$javaName"/>( |
| (javax.activation.DataHandler) reader.getProperty(org.apache.axiom.om.OMConstants.DATA_HANDLER)); |
| } else { |
| if (reader.getEventType() == javax.xml.stream.XMLStreamConstants.START_ELEMENT && reader.getName().equals(new javax.xml.namespace.QName(org.apache.axiom.om.impl.MTOMConstants.XOP_NAMESPACE_URI, org.apache.axiom.om.impl.MTOMConstants.XOP_INCLUDE))) |
| { |
| java.lang.String id = org.apache.axiom.om.util.ElementHelper.getContentID(reader, "UTF-8"); |
| object.set<xsl:value-of select="$javaName"/>(((org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder) ((org.apache.axiom.om.impl.llom.OMStAXWrapper) reader).getBuilder()).getDataHandler(id)); |
| reader.next(); |
| <xsl:if test="($isType or $anon) and not($simple)"> |
| reader.next(); |
| </xsl:if> |
| } else if(reader.hasText()) { |
| //Do the usual conversion |
| java.lang.String content = reader.getText(); |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToBase64Binary(content)); |
| <xsl:if test="($isType or $anon) and not($simple)"> |
| reader.next(); |
| </xsl:if> |
| } |
| } |
| |
| <xsl:if test="$isType or $anon"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:when> |
| <!-- start of the simple types handling --> |
| <xsl:otherwise> |
| <xsl:if test="@nillable"> |
| nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); |
| if (!"true".equals(nillableValue) && !"1".equals(nillableValue)){ |
| </xsl:if> |
| java.lang.String content = reader.getElementText(); |
| <xsl:if test="not(enumFacet)"> |
| <xsl:choose> |
| <xsl:when test="$propertyType='javax.xml.namespace.QName'"> |
| int index = content.indexOf(":"); |
| java.lang.String prefix =""; |
| java.lang.String namespaceuri =""; |
| if(index >0){ |
| prefix = content.substring(0,index); |
| namespaceuri = reader.getNamespaceURI(prefix); |
| } |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(content,namespaceuri)); |
| </xsl:when> |
| <xsl:when test="$propertyType='org.apache.axiom.om.OMElement'"> |
| org.apache.axiom.om.OMFactory fac = org.apache.axiom.om.OMAbstractFactory.getOMFactory(); |
| org.apache.axiom.om.OMNamespace omNs = fac.createOMNamespace("<xsl:value-of select="$namespace"/>", ""); |
| org.apache.axiom.om.OMElement _value<xsl:value-of select="$javaName"/> = fac.createOMElement("<xsl:value-of select="$propertyName"/>", omNs); |
| _value<xsl:value-of select="$javaName"/>.addChild(fac.createOMText(_value<xsl:value-of select="$javaName"/>, content)); |
| object.set<xsl:value-of select="$javaName"/>(_value<xsl:value-of select="$javaName"/>); |
| </xsl:when> |
| <xsl:otherwise> |
| object.set<xsl:value-of select="$javaName"/>( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$shortTypeName"/>(content)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:if> |
| <xsl:if test="(enumFacet)"> |
| object = <xsl:value-of select="$name"/>.fromString(content); |
| </xsl:if> |
| <xsl:if test="@nillable"> |
| } else { |
| reader.getElementText(); // throw away text nodes if any. |
| } |
| </xsl:if> |
| <xsl:if test="($isType or $anon) and not($simple)"> <!-- This is a subelement property to be consumed --> |
| reader.next(); |
| </xsl:if> |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:if test="not(enumFacet)"> |
| } // End of if for expected property start element |
| </xsl:if> |
| <xsl:if test="$ordered and $min!=0"> |
| else{ |
| // A start element we are not expecting indicates an invalid parameter was passed |
| throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); |
| } |
| </xsl:if> |
| </xsl:for-each> |
| |
| <xsl:if test="$ordered"> <!-- pick up trailing cruft after final property before outer endElement and verify no trailing properties --> |
| while (!reader.isStartElement() && !reader.isEndElement()) |
| reader.next(); |
| if (reader.isStartElement()) |
| // A start element we are not expecting indicates a trailing invalid property |
| throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); |
| </xsl:if> |
| |
| <xsl:if test="property[not(@attribute)]"> <!-- this if is needed to skip all this when there are no propoerties--> |
| <xsl:if test="$unordered"> |
| <xsl:if test="not(property/enumFacet)"> |
| else{ |
| // A start element we are not expecting indicates an invalid parameter was passed |
| throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); |
| } |
| </xsl:if> |
| } else reader.next(); <!-- At neither a start nor an end element, skip it --> |
| } // end of while loop |
| </xsl:if> |
| </xsl:if> |
| |
| |
| } catch (javax.xml.stream.XMLStreamException e) { |
| throw new java.lang.Exception(e); |
| } |
| |
| return object; |
| } |
| |
| |
| public static javax.xml.stream.XMLStreamReader getPullParser(java.lang.Object beanObject, javax.xml.namespace.QName qName) |
| throws org.apache.axis2.databinding.ADBException{ |
| |
| <xsl:value-of select="@package"/>.<xsl:value-of select="@name"/> bean = |
| (<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>)beanObject; |
| |
| <xsl:choose> |
| <xsl:when test="@type or @anon"> |
| java.util.ArrayList elementList = new java.util.ArrayList(); |
| java.util.ArrayList attribList = new java.util.ArrayList(); |
| |
| <xsl:for-each select="property[not(@attribute)]"> |
| <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable> |
| <xsl:variable name="varName">bean.local<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">bean.local<xsl:value-of select="@javaname"/>Tracker</xsl:variable> |
| |
| |
| <xsl:if test="$min=0 or $choice"> if (<xsl:value-of select="$settingTracker"/>){</xsl:if> |
| <xsl:choose> |
| <xsl:when test="(@ours or @default) and not(@array)"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| <!-- Arraylist can handle null's --> |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(<xsl:value-of select="$varName"/>==null?null: |
| <xsl:value-of select="$varName"/>); |
| </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!!"); |
| } |
| elementList.add(<xsl:value-of select="$varName"/>); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:when test="(@ours or @default) and @array"> |
| if (<xsl:value-of select="$varName"/>!=null) { |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(<xsl:value-of select="$varName"/>[i]); |
| } else { |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(null); |
| </xsl:when> |
| <xsl:when test="$min=0"> |
| // nothing to do |
| </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"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(<xsl:value-of select="$varName"/>); |
| </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){ |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| <xsl:if test="not(@primitive)"> |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| } else { |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(null); |
| </xsl:when> |
| <xsl:when test="$min=0"> |
| // have to do nothing |
| </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> |
| <xsl:if test="@primitive"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| |
| </xsl:if> |
| |
| } |
| } else { |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(null); |
| </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"> |
| if (<xsl:value-of select="$varName"/> != null) { |
| for (int i = 0;i < <xsl:value-of select="$varName"/>.length;i++){ |
| if (<xsl:value-of select="$varName"/>[i] != null){ |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])); |
| } else { |
| <xsl:choose> |
| <xsl:when test="$min=0"> |
| // have to do nothing |
| </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"> |
| if (<xsl:value-of select="$varName"/> != null){ |
| elementList.add(org.apache.axis2.databinding.utils.Constants.OM_ELEMENT_KEY); |
| elementList.add(<xsl:value-of select="$varName"/>); |
| } else { |
| throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!"); |
| } |
| </xsl:when> |
| <!-- handle binary - Since it is a Datahandler, we can just add it to the list |
| and the ADB pullparser would handle it right--> |
| <xsl:when test="@binary"> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| elementList.add(<xsl:value-of select="$varName"/>); |
| </xsl:when> |
| <!-- the usual case!!!!--> |
| <xsl:otherwise> |
| elementList.add(new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>", |
| "<xsl:value-of select="$propertyName"/>")); |
| <xsl:if test="@primitive"> |
| elementList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| </xsl:if> |
| <xsl:if test="not(@primitive)"> |
| <xsl:choose> |
| <xsl:when test="@nillable"> |
| elementList.add(<xsl:value-of select="$varName"/>==null?null: |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| </xsl:when> |
| <xsl:otherwise> |
| if (<xsl:value-of select="$varName"/> != null){ |
| elementList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| } else { |
| throw new org.apache.axis2.databinding.ADBException("<xsl:value-of select="$propertyName"/> cannot be null!!"); |
| } |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:if> |
| |
| </xsl:otherwise> |
| </xsl:choose> |
| <xsl:if test="$min=0 or $choice">}</xsl:if> |
| </xsl:for-each> |
| |
| <xsl:for-each select="property[@attribute]"> |
| <xsl:variable name="propertyName"><xsl:value-of select="@name"/></xsl:variable> |
| <xsl:variable name="varName">bean.local<xsl:value-of select="@javaname"/></xsl:variable> |
| <xsl:variable name="namespace"><xsl:value-of select="@nsuri"/></xsl:variable> |
| <xsl:choose> |
| <xsl:when test="@any and not(@array)"> |
| attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY); |
| attribList.add(<xsl:value-of select="$varName"/>); |
| </xsl:when> |
| <xsl:when test="@any and @array"> |
| for (int i=0;i <<xsl:value-of select="$varName"/>.length;i++){ |
| attribList.add(org.apache.axis2.databinding.utils.Constants.OM_ATTRIBUTE_KEY); |
| attribList.add(<xsl:value-of select="$varName"/>[i]); |
| } |
| </xsl:when> |
| <xsl:otherwise> |
| attribList.add( |
| new javax.xml.namespace.QName("<xsl:value-of select="$namespace"/>","<xsl:value-of select="$propertyName"/>")); |
| attribList.add( |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>)); |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:for-each> |
| |
| return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(qName, elementList.toArray(), attribList.toArray()); |
| <!-- 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">bean.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" 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){ |
| return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(bean.MY_QNAME); |
| }else{ |
| return <xsl:value-of select="$propertyType"/>Helper.getPullParser(<xsl:value-of select="$varName"/>,bean.MY_QNAME); |
| } |
| </xsl:when> |
| <xsl:otherwise>return <xsl:value-of select="$propertyType"/>Helper.getPullParser(<xsl:value-of select="$varName"/>,bean.MY_QNAME);</xsl:otherwise> |
| </xsl:choose> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:choose> |
| <xsl:when test="$nillable and not($primitive)"> |
| if (<xsl:value-of select="$varName"/>==null){ |
| return new org.apache.axis2.databinding.utils.reader.NullXMLStreamReader(bean.MY_QNAME); |
| }else{ |
| return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(bean.MY_QNAME, |
| new java.lang.Object[]{ |
| org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT, |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>) |
| }, |
| null); |
| } |
| </xsl:when> |
| <xsl:otherwise> return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(bean.MY_QNAME, |
| new java.lang.Object[]{ |
| org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT, |
| org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>) |
| }, |
| null);</xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| |
| } |
| </xsl:otherwise> |
| </xsl:choose> |
| <!-- end of main template --> |
| </xsl:template> |
| |
| <xsl:template match="mapper"> |
| <xsl:variable name="name" select="@name"/> |
| <xsl:variable name="helperMode" select="@helpermode"/> |
| |
| <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"/> class |
| */ |
| </xsl:if> |
| public <xsl:if test="not(@unwrapped) or (@skip-write)">static</xsl:if> class <xsl:value-of select="$name"/>{ |
| |
| public static java.lang.Object getTypeObject(java.lang.String namespaceURI, |
| java.lang.String typeName, |
| javax.xml.stream.XMLStreamReader reader) throws java.lang.Exception{ |
| |
| <xsl:for-each select="type"> |
| if ( |
| "<xsl:value-of select="@nsuri"/>".equals(namespaceURI) && |
| "<xsl:value-of select="@shortname"/>".equals(typeName)){ |
| <xsl:choose> |
| <xsl:when test="$helperMode"> |
| return <xsl:value-of select="@classname"/>Helper.parse(reader); |
| </xsl:when> |
| <xsl:otherwise> |
| return <xsl:value-of select="@classname"/>.Factory.parse(reader); |
| </xsl:otherwise> |
| </xsl:choose> |
| |
| } |
| |
| </xsl:for-each> |
| throw new org.apache.axis2.databinding.ADBException("Unsupported type " + namespaceURI + " " + typeName); |
| } |
| |
| } |
| </xsl:template> |
| </xsl:stylesheet> |