Re: Custom SOAP Decoders
Andrew Van Uitert <[email protected]>
| Newsgroups | gmane.comp.mozilla.devel.xml |
|---|---|
| Organization | Another Netscape Collabra Server User |
| Message-ID | <[email protected]> |
Andrew Van Uitert wrote: > I am trying to create a custom SOAP decoder in Mozilla 1.7 that I > install into a SOAPCall javascript object, that will be called when my > Axis SOAP server returns a complex type. So far the interaction on basic > types, and arrays of basic types has been good. But getting to the data > for a complex type in Mozilla has been impossible. > > I am certain that my Axis server works fine, since I have been able to > create an Axis client that decodes the complex object fine. > > I has spent days trying to get my decode function to work, unfortunately > I have had little luck. > > I was wondering if anyone knows of some examples of setting a custom > decoder and having it work right. The only resource I have found is at > > http://lxr.mozilla.org/mozilla/source/extensions/webservices/docs/Soap_Scripts_in_Mozilla.html > > > I modified the build of mozilla to send debug to my console, and from > what I can tell the documentation as listed above is incorrect. > > The documentation states, > > Encoding or decoding of data always begins with a default encoder or > decoder, which then may lookup additional encoders or decoders by a > string key as required. For either the 1.1 or 1.2 version of the > default SOAP encoding, the default encoder and decoder use the schema > type's namespaceURI and name, separated by "#" to look up additional > decoders for specific schema types. Additional encoders and decoders > registered within the default encodings will automatically be invoked as > an object identified as the corresponding type is processed. > > From my debug output, I never see the key (as specified above) actually > looked up by the default decoder. > > I modified the following files to send output to my console every time a > key was looked up, and I never saw a lookup for the key for my complex > type on a response. I did see that my decoder was registered for the key. > > nsDefaultSOAPDecoder.cpp > nsSOAPEncoding.cpp > > To summarize. > > Are there any working concrete examples of a custom decoder ? > > Why is the default decoder not looking for the key as it proccesses an > incoming message ? > > Best Regards, > Andy So it turns out that mozilla does not like mutlirefs in its response. This is why the key was never looked up in the decoding of the response. Axis by default uses multirefs. By adding the following to your server-config.wsdd, you can turn multirefs off for Axis. <parameter name="sendMultiRefs" value="false"/> Once the multirefs are off, you can register your decoder and have it work accordingly. Best Regards, Andy