Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-4699

Schema validation on Weblogic 10.3 fails with AssertionError

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.6.3, 2.6.4
    • 2.5.8, 2.6.5, 2.7.2
    • Core
    • None
    • Unknown

    Description

      When activating schema validation webservice calls fail with an AssertionError, because the Weblogic DOM-implementation uses AssertionErrors to mark unimplemented methods instead of Exceptions.

      W3CDOMStreamReader "only" catches all Exceptions when using Node.getUserData.

      From org.apache.cxf.staxutils.W3CDOMStreamReader starting with line 413:

          public Location getLocation() {
              try {
                  Object o = getCurrentNode().getUserData("location");
                  if (o instanceof Location) { 
                      return (Location)o;
                  }
              } catch (Exception ex) {
                  //ignore, probably not DOM level 3
              }
              return super.getLocation();
          }
      
      

      Since Weblogic uses an AssertionError, the DOM Level is not correctly detected and the Error is not catched:

      java.lang.AssertionError: UNIMPLEMENTED
      	at weblogic.xml.domimpl.NodeImpl.getUserData(NodeImpl.java:488)
      	at org.apache.cxf.staxutils.W3CDOMStreamReader.getLocation(W3CDOMStreamReader.java:415)
      	at org.apache.cxf.staxutils.DepthXMLStreamReader.getLocation(DepthXMLStreamReader.java:110)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.getCurrentLocation(StAXStreamConnector.java:237)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXConnector$1.getSystemId(StAXConnector.java:100)
      	at com.sun.org.apache.xerces.internal.util.SAXLocatorWrapper.getLiteralSystemId(SAXLocatorWrapper.java:63)
      	at com.sun.org.apache.xerces.internal.util.SAXLocatorWrapper.getExpandedSystemId(SAXLocatorWrapper.java:73)
      	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2398)
      	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1782)
      	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
      	at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(ValidatorHandlerImpl.java:550)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:89)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:71)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:275)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:209)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:358)
      	at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:337)
      	at org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:769)
      	at org.apache.cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:94)
      	at org.apache.cxf.jaxb.JAXBEncoderDecoder$1.run(JAXBEncoderDecoder.java:797)
      	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:795)
      	at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:630)
      	at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:157)
      	at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:203)
      	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
      	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
      	at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:236)
      	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:209)
      	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:189)
      	at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:130)
      	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:226)
      	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:146)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      [...]
      

      Attachments

        Activity

          People

            dkulp Daniel Kulp
            mail@johannesrost.de Johannes Rost
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: