WS-Policy issues when upgrading from Axis2 1.6.0 to Axis2 1.6.2

"Shah, Sumit (CGI Federal)" <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <3357D2C72D9A0345A66DFB0B043C04166C9AD92B@FFX-S-EX-C1.cgifederal.com>
Hello,

I am running into WS Policy parsing issues when upgrading Axis2 from 1.6.0 to 1.6.2. The policies that successfully load (via WSDL11ToAxisServiceBuilder.processPoliciesInDefintion) in version 1.6.0 do not work when I go to 1.6.2. I do notice that in 1.6.2, Axis now uses PolicyBuilder (Neethi) which was not the case in 1.6.0. Is there any change with respect to policy parsing that I should  be aware of? I would appreciate any help.

Here is the stack trace:

Caused by: java.lang.NullPointerException
        at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.getEventType(XMLStreamReaderWrapper.java:108)
        at org.apache.axiom.util.stax.dialect.BEAStreamReaderWrapper.getEncoding(BEAStreamReaderWrapper.java:90)
        at org.apache.axiom.om.impl.builder.StAXBuilder.<init>(StAXBuilder.java:125)
        at org.apache.axiom.om.impl.builder.StAXOMBuilder.<init>(StAXOMBuilder.java:104)
        at org.apache.axiom.om.impl.llom.factory.AbstractOMMetaFactory.createOMBuilder(AbstractOMMetaFactory.java:103)
        at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:295)
        at org.apache.neethi.builders.converters.DOMToOMConverter.convert(DOMToOMConverter.java:36)
        at org.apache.neethi.builders.converters.DOMToOMConverter.convert(DOMToOMConverter.java:32)
        at org.apache.neethi.builders.converters.ConverterRegistry.convert(ConverterRegistry.java:159)
        at org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(AssertionBuilderFactoryImpl.java:135)
        at org.apache.neethi.AssertionBuilderFactoryImpl.build(AssertionBuilderFactoryImpl.java:117)
        at org.apache.neethi.PolicyBuilder.processOperationElement(PolicyBuilder.java:224)
        at org.apache.neethi.PolicyBuilder.getAllOperator(PolicyBuilder.java:184)
        at org.apache.neethi.PolicyBuilder.processOperationElement(PolicyBuilder.java:217)
        at org.apache.neethi.PolicyBuilder.getExactlyOneOperator(PolicyBuilder.java:180)
        at org.apache.neethi.PolicyBuilder.processOperationElement(PolicyBuilder.java:215)
        at org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
        at org.apache.neethi.PolicyBuilder.getPolicy(PolicyBuilder.java:124)
        at org.apache.neethi.PolicyEngine.getPolicy(PolicyEngine.java:111)
        at org.apache.axis2.util.PolicyUtil.getPolicyComponent(PolicyUtil.java:173)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processPoliciesInDefintion(WSDL11ToAxisServiceBuilder.java:3120)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.processPoliciesInDefintion(WSDL11ToAxisServiceBuilder.java:3098)
        at org.apache.axis2.description.WSDL11ToAxisServiceBuilder.populateService(WSDL11ToAxisServiceBuilder.java:374)
        at org.apache.axis2.description.AxisService.createClientSideAxisService(AxisService.java:2369)
        at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:211)

This is a sample services file. I am only showing a single operation, but I have multiple operations, each with its own policy:
<service name="WSSecurityTestService" targetNamespace="http://wssecuritytest.impl.webservices.test.com">
  <schema schemaNamespace="http://wssecuritytest.impl.webservices.test.com"/>
  <parameter name="ServiceClass">com.test.webservices.impl.wssecuritytest.WSSecurityTestService</parameter>
  <parameter name="useOriginalwsdl">true</parameter>
  <parameter name="wsdlFile">WSSecurityTestService.wsdl</parameter>
  <parameter name="modifyUserWSDLPortAddress">true</parameter>
  <module ref="addressing"/>
  <messageReceivers>
    <messageReceiver class="com.test.webservices.receivers.JAXBInOnlyMessageReceiver" mep="http://www.w3.org/ns/wsdl/in-only"/>
    <messageReceiver class="com.test.webservices.receivers.JAXBInOnlyMessageReceiver" mep="http://www.w3.org/ns/wsdl/robust-in-only"/>
    <messageReceiver class="com.test.webservices.receivers.JAXBMessageReceiver" mep="http://www.w3.org/ns/wsdl/in-out"/>
  </messageReceivers>
<operation mep="http://www.w3.org/ns/wsdl/in-out" name="testSAMLTokenSignedNoFault">
    <actionMapping>urn:test:WSSecurityTestService#testSAMLTokenSignedNoFault</actionMapping>
    <outputActionMapping>urn:testSAMLTokenSignedNoFaultResponse</outputActionMapping>
    <faultActionMapping faultName="RecoverableFault">urn:testSAMLTokenSignedNoFaultRecoverableFault</faultActionMapping>
    <faultActionMapping faultName="UnrecoverableFault">urn:testSAMLTokenSignedNoFaultUnrecoverableFault</faultActionMapping>
    <messageReceiver class="com.test.webservices.receivers.JAXBMessageReceiver" mep="http://www.w3.org/ns/wsdl/in-out"/>
    <module ref="rampart"/>
    <wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SAMLPolicy">
      <wsp:ExactlyOne>
        <wsp:All>
          <sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
            <wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
              <sp:InitiatorToken>
                <wsp:Policy>
                  <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
                    <wsp:Policy>
                      <sp:RequireThumbprintReference/>
                      <sp:WssX509V1Token10/>
                    </wsp:Policy>
                  </sp:X509Token>
                </wsp:Policy>
              </sp:InitiatorToken>
              <sp:RecipientToken>
                <wsp:Policy>
                  <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
                    <wsp:Policy>
                      <sp:RequireThumbprintReference/>
                      <sp:WssX509V3Token10/>
                    </wsp:Policy>
                  </sp:X509Token>
                </wsp:Policy>
              </sp:RecipientToken>
              <sp:AlgorithmSuite>
                <wsp:Policy>
                  <sp:TripleDesRsa15/>
                </wsp:Policy>
              </sp:AlgorithmSuite>
              <sp:Layout>
                <wsp:Policy>
                  <sp:Strict/>
                </wsp:Policy>
              </sp:Layout>
              <sp:IncludeTimestamp/>
              <sp:OnlySignEntireHeadersAndBody/>
            </wsp:Policy>
          </sp:AsymmetricBinding>
          <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
            <wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
              <sp:MustSupportRefKeyIdentifier/>
              <sp:MustSupportRefIssuerSerial/>
            </wsp:Policy>
          </sp:Wss10>
          <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
            <sp:Body/>
          </sp:SignedParts>
          <rampart:RampartConfig xmlns:rampart="http://ws.apache.org/rampart/policy">
            <rampart:user>interca</rampart:user>
            <rampart:passwordCallbackClass>com.test.security2.webservices.WSS4JPWCallback</rampart:passwordCallbackClass>
            <rampart:timestampPrecisionInMilliseconds>true</rampart:timestampPrecisionInMilliseconds>
            <rampart:timestampTTL>300</rampart:timestampTTL>
            <rampart:timestampMaxSkew>300</rampart:timestampMaxSkew>
            <rampart:nonceLifeTime>300</rampart:nonceLifeTime>
            <rampart:signatureCrypto>
              <rampart:crypto provider="com.test.security2.csf.webservices.WSS4JCSFCryptoImpl">
                ...
              </rampart:crypto>
            </rampart:signatureCrypto>
          </rampart:RampartConfig>
        </wsp:All>
      </wsp:ExactlyOne>
    </wsp:Policy>
  </operation>
</service>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.