Author: sagara
Date: Tue Nov 15 01:20:54 2011
New Revision: 1201993

URL: http://svn.apache.org/viewvc?rev=1201993&view=rev
Log:
Applied the patch for AXIS2-4859. 

Modified:
    
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
    
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
    
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
    
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
    
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
    
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
    
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java
    
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties

Modified: 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/CompilerOptions.java
 Tue Nov 15 01:20:54 2011
@@ -204,4 +204,18 @@ public class CompilerOptions {
     public void setUseWrapperClasses(boolean useWrapperClasses) {
         this.isUseWrapperClasses = useWrapperClasses;
     }
+
+    /**
+     * Should unexpected elements be ignored (log warning) instead of
+     * creating an exception?
+     */
+    private boolean isIgnoreUnexpected;
+
+    public boolean isIgnoreUnexpected() {
+        return isIgnoreUnexpected;
+    }
+
+    public void setIgnoreUnexpected(boolean isIgnoreUnexpected) {
+        this.isIgnoreUnexpected = isIgnoreUnexpected;
+    }
 }

Modified: 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/ExtensionUtility.java
 Tue Nov 15 01:20:54 2011
@@ -606,6 +606,10 @@ public class ExtensionUtility {
         if 
(propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.USE_WRAPPER_CLASSES)){
             options.setUseWrapperClasses(true);
         }
+        
+        if 
(propertyMap.containsKey(SchemaConstants.SchemaCompilerArguments.IGNORE_UNEXPECTED)){
+            options.setIgnoreUnexpected(true);
+        }
 
         //set helper mode
         //this becomes effective only if the classes are unpacked

Modified: 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/SchemaConstants.java
 Tue Nov 15 01:20:54 2011
@@ -166,6 +166,8 @@ public class SchemaConstants {
         public static final String OFF_STRICT_VALIDATION = "osv";
         // this option is used to use Wrapper classes for primitives
         public static final String USE_WRAPPER_CLASSES = "uwc";
+        // This option logs warnings instead of throwing exceptions for 
unexpected elements
+        public static final String IGNORE_UNEXPECTED = "iu";
 
     }
 

Modified: 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
 Tue Nov 15 01:20:54 2011
@@ -39,6 +39,7 @@
         <xsl:variable name="particleClass" select="@particleClass"/>
         <xsl:variable name="hasParticleType" select="@hasParticleType"/>
         <xsl:variable name="usewrapperclasses" select="@usewrapperclasses"/>
+        <xsl:variable name="ignoreunexpected" select="@ignoreunexpected"/>
 
         <!-- write the class header. this should be done only when unwrapped 
-->
 
@@ -1923,6 +1924,7 @@
       *  Factory class that keeps the parse method
       */
     public static class Factory{
+        private static org.apache.commons.logging.Log log = 
org.apache.commons.logging.LogFactory.getLog(Factory.class);
 
         <!-- 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 -->
@@ -2173,6 +2175,7 @@
             </xsl:if>
 
             int event;
+            javax.xml.namespace.QName currentQName = null;
             java.lang.String nillableValue = null;
             java.lang.String prefix ="";
             java.lang.String namespaceuri ="";
@@ -2181,6 +2184,7 @@
                 while (!reader.isStartElement() &amp;&amp; 
!reader.isEndElement())
                     reader.next();
 
+                currentQName = reader.getName();
                 <xsl:if test="@nillable">
                    nillableValue = 
reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil";);
                    if ("true".equals(nillableValue) || 
"1".equals(nillableValue)){
@@ -3127,7 +3131,7 @@
                                  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
+                                    // 1 - A start element we are not 
expecting indicates an invalid parameter was passed
                                     throw new 
org.apache.axis2.databinding.ADBException("Unexpected subelement " + 
reader.getName());
                                 }
                             </xsl:if>
@@ -3143,17 +3147,40 @@
                                 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.getName());
+                                // 2 - A start element we are not expecting 
indicates a trailing invalid property
+                                <xsl:if test="$ignoreunexpected">
+                                {
+                                    log.warn("Unexpected subelement " + 
reader.getLocalName());
+                                    // consume everything, ending on the 
current element's endtag
+                                    while (!(reader.isEndElement() &amp;&amp; 
reader.getName().equals(currentQName))) {
+                                        reader.next();
+                                    }
+                                }
+                                </xsl:if>
+                                <xsl:if test="not($ignoreunexpected)">
+                                    throw new 
org.apache.axis2.databinding.ADBException("Unexpected subelement " + 
reader.getName());
+                                </xsl:if>
                             </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)">
+                          <xsl:if test="not(property/enumFacet) and 
not($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.getName());
+                                        // 3 - A start element we are not 
expecting indicates an invalid parameter was passed
+                                        <xsl:if test="$ignoreunexpected">
+                                            log.warn("Unexpected subelement " 
+ reader.getLocalName());
+                                            // consume everything, ending on 
the unexpected subelement's endtag
+                                            javax.xml.namespace.QName subQName 
= reader.getName();
+                                            while (!(reader.isEndElement() 
&amp;&amp; reader.getName().equals(subQName))) {
+                                                reader.next();
+                                            }
+                                            // skip past this extra element 
completely
+                                            reader.next();
+                                        </xsl:if>
+                                        <xsl:if test="not($ignoreunexpected)">
+                                            throw new 
org.apache.axis2.databinding.ADBException("Unexpected subelement " + 
reader.getName());
+                                        </xsl:if>
                              }
                           </xsl:if>
                              } else {

Modified: 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
 Tue Nov 15 01:20:54 2011
@@ -35,6 +35,7 @@
         <xsl:variable name="restriction" select="@restriction"/>
         <xsl:variable name="mapperClass" select="@mapperClass"/>
         <xsl:variable name="usewrapperclasses" select="@usewrapperclasses"/>
+        <xsl:variable name="ignoreunexpected" select="@ignoreunexpected"/>
         <xsl:variable name="package" select="@package"/>
         <xsl:variable name="helpername"><xsl:value-of 
select="$name"/>Helper</xsl:variable>
 
@@ -1400,12 +1401,14 @@ public <xsl:if test="not(@unwrapped) or 
             <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;
+            javax.xml.namespace.QName currentQName;
             java.lang.String nillableValue = null;
             try {
                 <!-- Advance to our start element, or if we are a complex 
type, to our first property start element or the outer end element if no 
properties -->
                 while (!reader.isStartElement() &amp;&amp; 
!reader.isEndElement())
                     reader.next();
 
+                currentQName = reader.getName();
                 <xsl:if test="@nillable">
                    nillableValue = 
reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil";);
                    if ("true".equals(nillableValue) || 
"1".equals(nillableValue)){
@@ -2039,7 +2042,7 @@ public <xsl:if test="not(@unwrapped) or 
                             </xsl:if>
                             <xsl:if test="$ordered and $min!=0">
                                 else{
-                                    // A start element we are not expecting 
indicates an invalid parameter was passed
+                                    // 1 - 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>
@@ -2049,16 +2052,39 @@ public <xsl:if test="not(@unwrapped) or 
                             while (!reader.isStartElement() &amp;&amp; 
!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());
+                                // 2 - A start element we are not expecting 
indicates a trailing invalid property
+                                <xsl:if test="$ignoreunexpected">
+                                {
+                                    log.warn("Unexpected subelement " + 
reader.getLocalName());
+                                    // consume everything, ending on the 
current element's endtag
+                                    while (!(reader.isEndElement() &amp;&amp; 
reader.getName().equals(currentQName))) {
+                                        reader.next();
+                                    }
+                                }
+                                </xsl:if>
+                                <xsl:if test="not($ignoreunexpected)">
+                                    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">
                           <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());
+                                        // 3 - A start element we are not 
expecting indicates an invalid parameter was passed
+                                        <xsl:if test="$ignoreunexpected">
+                                            log.warn("Unexpected subelement " 
+ reader.getLocalName());
+                                            // consume everything, ending on 
the unexpected subelement's endtag
+                                            javax.xml.namespace.QName subQName 
= reader.getName();
+                                            while (!(reader.isEndElement() 
&amp;&amp; reader.getName().equals(subQName))) {
+                                                reader.next();
+                                            }
+                                            // skip past this extra element 
completely
+                                            reader.next();
+                                        </xsl:if>
+                                        <xsl:if test="not($ignoreunexpected)">
+                                            throw new 
org.apache.axis2.databinding.ADBException("Unexpected subelement " + 
reader.getLocalName());
+                                        </xsl:if>
                              }
                           </xsl:if>
                              } else reader.next();  <!-- At neither a start 
nor an end element, skip it -->

Modified: 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
 Tue Nov 15 01:20:54 2011
@@ -107,6 +107,8 @@ public class JavaBeanWriter implements B
 
     private boolean isSuppressPrefixesMode = false;
 
+    private boolean isIgnoreUnexpected = false;
+
     /**
      * package for the mapping class
      */
@@ -170,6 +172,7 @@ public class JavaBeanWriter implements B
             packageName = options.getPackageName();
             writeClasses = options.isWriteOutput();
             isUseWrapperClasses = options.isUseWrapperClasses();
+            isIgnoreUnexpected = options.isIgnoreUnexpected();
 
             if (!writeClasses) {
                 wrapClasses = false;
@@ -552,6 +555,10 @@ public class JavaBeanWriter implements B
             XSLTUtils.addAttribute(model, "usewrapperclasses", "yes", rootElt);
         }
 
+        if (isIgnoreUnexpected) {
+            XSLTUtils.addAttribute(model, "ignoreunexpected", "yes", rootElt);
+        }
+
         if (metainf.isExtension()) {
             XSLTUtils.addAttribute(model, "extension", metainf
                     .getExtensionClassName(), rootElt);

Modified: 
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/WSDL2Code.java
 Tue Nov 15 01:20:54 2011
@@ -51,7 +51,7 @@ public class WSDL2Code {
 
         System.out.println(CodegenMessages.getMessage("wsdl2code.arg"));
         System.out.println(CodegenMessages.getMessage("wsdl2code.arg1"));
-        for (int i = 2; i <= 49; i++) {
+        for (int i = 2; i <= 50; i++) {
             System.out.println("  " + 
CodegenMessages.getMessage("wsdl2code.arg" + i));
         }
     }

Modified: 
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties?rev=1201993&r1=1201992&r2=1201993&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
 (original)
+++ 
axis/axis2/java/core/trunk/modules/codegen/src/org/apache/axis2/wsdl/i18n/resource.properties
 Tue Nov 15 01:20:54 2011
@@ -73,17 +73,18 @@ wsdl2code.arg35=                        
 wsdl2code.arg36=                           \t\t\t      they have to generate 
the xmlbeans code seperately with the scomp command comes with the
 wsdl2code.arg37=                           \t\t\t      xmlbeans distribution 
and replace the Axis2 generated classes with correct classes
 wsdl2code.arg38=                           \t\t\t   -EbindingFileName <path>   
            (for jaxbri) - specify the file path for the episode file
-wsdl2code.arg39=  --noBuildXML             Don't generate the build.xml in the 
output directory
-wsdl2code.arg40=  --noWSDL                 Don't generate WSDL's in the 
resources directory
-wsdl2code.arg41=  --noMessageReceiver      Don't generate a MessageReceiver in 
the generated sources
-wsdl2code.arg42=  --http-proxy-host <host> Proxy host address if you are 
behind a firewall
-wsdl2code.arg43=  --http-proxy-port <port> Proxy port address if you are 
behind a firewall
-wsdl2code.arg44=  -ep <package-name-list>  Exclude packages - these packages 
are deleted after code generation
-wsdl2code.arg45=  -sin <interface-name>    Skeleton interface name - used to 
specify a name for skeleton interface other than the default one
-wsdl2code.arg46=  -scn <class-name>        Skeleton class name - used to 
specify a name for skeleton class other than the default one
-wsdl2code.arg47=  -oaa <override-absolute-address>  -change the absolute http 
addresses to local file addresses generated by wsdl2java tool
-wsdl2code.arg48=  -ebc <exception-base-class>  -generated Exceptions are 
inherited from this exception rather than the java.lang.Exception class
-wsdl2code.arg49=  -uon <use-operation-name>  -by default the first letter of 
the generated method name changeed to lowercase. This option stops that and 
make it same as operation name 
+wsdl2code.arg39=                           \t\t\t   -Eiu (for ADB) - Ignore 
Unexpected elements instead of throwing ADBException
+wsdl2code.arg40=  --noBuildXML             Don't generate the build.xml in the 
output directory
+wsdl2code.arg41=  --noWSDL                 Don't generate WSDL's in the 
resources directory
+wsdl2code.arg42=  --noMessageReceiver      Don't generate a MessageReceiver in 
the generated sources
+wsdl2code.arg43=  --http-proxy-host <host> Proxy host address if you are 
behind a firewall
+wsdl2code.arg44=  --http-proxy-port <port> Proxy port address if you are 
behind a firewall
+wsdl2code.arg45=  -ep <package-name-list>  Exclude packages - these packages 
are deleted after code generation
+wsdl2code.arg46=  -sin <interface-name>    Skeleton interface name - used to 
specify a name for skeleton interface other than the default one
+wsdl2code.arg47=  -scn <class-name>        Skeleton class name - used to 
specify a name for skeleton class other than the default one
+wsdl2code.arg48=  -oaa <override-absolute-address>  -change the absolute http 
addresses to local file addresses generated by wsdl2java tool
+wsdl2code.arg49=  -ebc <exception-base-class>  -generated Exceptions are 
inherited from this exception rather than the java.lang.Exception class
+wsdl2code.arg50=  -uon <use-operation-name>  -by default the first letter of 
the generated method name changeed to lowercase. This option stops that and 
make it same as operation name 
 
 ################## prop file loader #################################
 propfileload.frameworkMismatch=Number of frameworks and extension names do not 
match!


Reply via email to