[ https://issues.apache.org/jira/browse/AXIS2-4114?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Veithen reopened AXIS2-4114: ------------------------------------ As pointed out by Mary Thompson in a comment above, there is still one case that has not been addressed: In the case where the service throws a fault there is no axisMessage in the message context. Since MessageContext#findBindingMessage doesn't test if axisMessage is null, there will be a NullPointerException in that case. > Problem to retrieve the effective policy from MessageContext when we have > policy attachment at binding level > ------------------------------------------------------------------------------------------------------------ > > Key: AXIS2-4114 > URL: https://issues.apache.org/jira/browse/AXIS2-4114 > Project: Axis 2.0 (Axis2) > Issue Type: Bug > Components: kernel > Reporter: Dobri Kitipov > Assignee: Nandana Mihindukulasooriya > Attachments: MessageContext_effectivePolicy.patch > > > Hi, > I have a problem when I try to get the effective policy from a MessageContext > when I have a policy attached at the binding level of a Web Service. I am > using Axis2 1.4.0 > Let me explain a little bit the scenario I have. I am using an AAR that has > into its services.xml: > <parameter name="useOriginalwsdl">true</parameter> > and a PolicyAttachment at its service level: > <wsp:PolicyAttachment > xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> > <wsp:AppliesTo> > <policy-subject identifier="binding:soap11"/> > <policy-subject identifier="binding:soap12"/> > </wsp:AppliesTo> > <wsp:Policy wsu:Id="User" > xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" > xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">... > </wsp:PolicyAttachment> > As a result the WSDL generated has the policy specified and policy reference > at the binding subject level. Here is an excerpt from the wsdl for the > SOAP11Binding: > <wsdl:binding name="MTOMServiceSOAP11Binding" type="tns:MTOMServicePortType"> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsp:PolicyReference URI="#User"/> > At client side I have a dynamic client. So the issue is that when I invoke > the service and the WSDL is read and the corresponding AxisService object is > crated at the client side I have some modules' handlers that take palce. One > of them is a custom one in which I have the following invocation: > Policy policy = msgCtx.getEffectivePolicy(); > The problem is that this returns "null"! I debugged this and it came out that > msgCtx is not null. When the method is invoked it tries to calculate the > effective policy as given below. > AxisBindingMessage bindingMessage = > (AxisBindingMessage) > getProperty(Constants.AXIS_BINDING_MESSAGE); > if (bindingMessage != null) { > return bindingMessage.getEffectivePolicy(); > } else { > if (axisMessage != null) { > return axisMessage.getEffectivePolicy(); > } else { > return null; > } > } > where bindingMessage is null and axisMessage.getEffectivePolicy(); returns > null, too. When I dig through the AxisService -> AxisEndpoint -> AxisBinding > -> here the PolicySubject is in fact a PolicyReference to the Policy that is > set into the AxisService policyMap. So as a result > axisMessage.getEffectivePolicy() returns null and I can not get the Policy I > need. > I saw that I need something like the AxisDescription.getApplicablePolicy in > order to locate the real Policy of a given PolicyReference. > You can see the patch applied that I have tested and seem to me that works > fine. > Thank you in advance, > Dobri -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.