Committers:

I believe I have located a bug in the current Apache SOAP source that prevents
the default encoding from being correctly applied.

The SOAPMappingRegistry class, a subclass of XMLJavaMappingRegistry, now support
chaining, i.e. an instance has a parent, with the parent being null for the
"root" instance.  When looking up a mapping, the chain is followed if necessary
to resolve the mapping.

The XMLJavaMappingRegistry class has a method setDefaultEncodingStyle, which
sets the default encoding style.  When this method is called on a
SOAPMappingRegistry instance, the default encoding style is set only for the
particular link in the chain.  It is *not* set for the parent (and recursively
for all parents).  This breaks the proper application of the default.

The attached patch properly overrides setDefaultEncodingStyle for
SOAPMappingRegistry.

Scott Nichol

--- i:\xml-soap\java\src\org\apache\soap\encoding\SOAPMappingRegistry.java      Tue 
Apr 09 07:20:18 2002
+++ i:\xml-soap\java\src\org\apache\soap\encoding-fix\SOAPMappingRegistry.java  Tue 
+Apr 09 13:49:18 2002
@@ -425,6 +425,16 @@
     }
   }
 
+  /** Set the default encoding style.  If the query*() calls
+   * are invoked with a null encodingStyleURI parameter, we'll
+   * use this instead.
+   */
+  public void setDefaultEncodingStyle(String defEncStyle) {
+      super.setDefaultEncodingStyle(defEncStyle);
+      if (parent != null)
+             parent.setDefaultEncodingStyle(defEncStyle);
+  }
+
   /**
    * Return the schemaURI that was used to create this registry
    * instance.

Reply via email to