You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Michael K. Dean" <MK...@cmsenergy.com> on 2002/06/15 00:48:21 UTC

org.xml.sax.SAXException: Bad types (null -> class java.lang.String)

Axis is not setting a null string.  I get the following error:

7066344 [ExecuteThread: '11' for queue: 'default'] ERROR http.AxisServlet
- Exception:
org.xml.sax.SAXException: Bad types (null -> class java.lang.String)
org.xml.sax.SAXException: Bad types (null -> class java.lang.String)
        at
org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:207)
        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:859)
        at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:199)
        at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:637)
        at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:200)
        at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:258)
        at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:161)
        at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:285)
        at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:286)
        at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:570)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
        at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
        at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2495)
        at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2204)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)


It looks like  the onStartChild of the RPCHandler call
JavaUtils.isConvertable which

    public SOAPHandler onStartChild(String namespace,
                                    String localName,
                                    String prefix,
                                    Attributes attributes,
                                    DeserializationContext context)
        throws SAXException
    {
        if (log.isDebugEnabled()) {
            log.debug("Enter: RPCHandler.onStartChild()");
        }

.....
            if (paramDesc != null) {
                // Keep the association so we can use it later
                // (see RPCProvider.processMessage())
                currentParam.setParamDesc(paramDesc);

                if (type == null) {
                    type = paramDesc.getTypeQName();
                } else if (paramDesc.getJavaType() != null) {
                    // If we have an xsi:type, make sure it makes sense
                    // with the current paramDesc type
                    Class xsiClass =
                            context.getTypeMapping
().getClassForQName(type);
                    if (!JavaUtils.isConvertable(xsiClass,
                                                 paramDesc.getJavaType()))
{
                        throw new SAXException("Bad types (" +
                            xsiClass + " -> " + paramDesc.getJavaType() +
")"); // FIXME!
                    }
                }
            }
        }


Which call JavaUtils.isHolderClass(Class) to see if the String is a holder
class which it is not so iJavaUtils reports that it can not convert the
null to a string which is true but you should be able to set any object to
null.

Is this a bug or am I doing something wrong.  This seemed to work with Beta
1.


Thanks

Michael