You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Andrei Shakirin <as...@talend.com> on 2014/04/11 11:44:57 UTC

Extended support for wsdl11external WS-PolicyAttachments references

Hi,

Currently CXF supports only limited set of references for external WS-PolicyAttachments (wsa:EndpointReferenceType):

<attachments xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:test="http://x.y.z/Assertions">
    <wsp:PolicyAttachment>
        <wsp:AppliesTo>
            <wsa:EndpointReferenceType xmlns:wsa="http://www.w3.org/2005/08/addressing">
                <wsa:Address>http://x.y.z/GreeterPort</wsa:Address>
            </wsa:EndpointReferenceType>
        </wsp:AppliesTo>
        <wsp:Policy>
           <test:A>A</test:A>
        </wsp:Policy>
    </wsp:PolicyAttachment>    
</attachments>

I propose to extend that to support at least some URI Domain Expression for wsdl11:
wsdl11.definitions() 
wsdl11.service(service) 
wsdl11.binding(binding)
wsdl11.bindingOperation(binding/operation)
wsdl11.bindingOperation.input(binding/operation)
wsdl11.bindingOperation.output(binding/operation)
wsdl11.bindingOperation.fault(binding/operation/fault)

I see that some work was started in cxf-rt-ws-policy Wsdl11XPointerDomainExpression class, but it seems that is not complete.
Partly it is also implemented in systests org.apache.cxf.systest.ws.policy.UriDomainExpression and org.apache.cxf.systest.ws.policy.UriDomainExpressionBuilder

I would create Jira and add support for wsdl11 references.
Any suggestions / objections?

Regards,
Andrei.


RE: Extended support for wsdl11external WS-PolicyAttachments references

Posted by Andrei Shakirin <as...@talend.com>.
Hi Dan,

URIDomainExpressionBuilder [1] was added to support all WSDL11 domain expressions accordingly spec [2] (excluding wsdl11.extension(namespace,identifier)).
I am thinking about registration of this builder as default bus extension (the same way as EndpointReferenceDomainExpressionBuilder):
- from one side default registration is comfortable for users applying WSDL11 expressions in external attachments, this will work just out of the box.
- from other side, if user would like to register own domain expression (like in one security integration test [3]), it will be very difficult to replace default builder. 

The problem is that SpringConfiguredBeanLocator used in DomainExpressionBuilderRegistry loads Spring beans on first step and then checks for Bus extensions (using ExtensionManager). Beans specified in custom configuration will be overwritten by registered bus extension.
If client or service is created using spring configuration, it is not trivial to replace default DomainExpressionBuilder (it is possible with ExtensionManagerImpl internal methods, but not convenient).

I see following options:
(a) Leave the code as is and document that user have to register URIDomainExpressionBuilder as bus extension or as a bean to use WSDL11 expressions.
(b) Change initialization order in SpringConfiguredBeanLocator to give spring beans higher priority as bus extensions (this can have side effects)
(c) Introduce convenient mechanism to replace/remove registered bus extensions or control behaviour of ConfiguredBeanLocator.
 
What is your opinion? May be I am missing something and option (c) is already available?

Regards,
Andrei.

[1] https://fisheye6.atlassian.com/changelog/cxf?cs=a4ea197c50c99d0c02d9226484c3ee0f8fa63b05  
[2] http://www.w3.org/TR/2007/NOTE-wsdl11elementidentifiers-20070720/ 
[3] https://fisheye6.atlassian.com/browse/cxf/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/UriDomainExpression.java 

> -----Original Message-----
> From: Daniel Kulp [mailto:dkulp@apache.org]
> Sent: Freitag, 11. April 2014 19:40
> To: dev@cxf.apache.org; Andrei Shakirin
> Subject: Re: Extended support for wsdl11external WS-PolicyAttachments
> references
> 
> 
> No objections here.   I think we just implemented the few basic places to meet
> whatever test case we were shooting for with the old Microsoft interoperability
> tests and didn't go much further.
> 
> Dan
> 
> 
> On Apr 11, 2014, at 5:44 AM, Andrei Shakirin <as...@talend.com> wrote:
> 
> > Hi,
> >
> > Currently CXF supports only limited set of references for external WS-
> PolicyAttachments (wsa:EndpointReferenceType):
> >
> > <attachments xmlns:wsp="http://www.w3.org/ns/ws-policy"
> xmlns:test="http://x.y.z/Assertions">
> >    <wsp:PolicyAttachment>
> >        <wsp:AppliesTo>
> >            <wsa:EndpointReferenceType
> xmlns:wsa="http://www.w3.org/2005/08/addressing">
> >                <wsa:Address>http://x.y.z/GreeterPort</wsa:Address>
> >            </wsa:EndpointReferenceType>
> >        </wsp:AppliesTo>
> >        <wsp:Policy>
> >           <test:A>A</test:A>
> >        </wsp:Policy>
> >    </wsp:PolicyAttachment>
> > </attachments>
> >
> > I propose to extend that to support at least some URI Domain Expression for
> wsdl11:
> > wsdl11.definitions()
> > wsdl11.service(service)
> > wsdl11.binding(binding)
> > wsdl11.bindingOperation(binding/operation)
> > wsdl11.bindingOperation.input(binding/operation)
> > wsdl11.bindingOperation.output(binding/operation)
> > wsdl11.bindingOperation.fault(binding/operation/fault)
> >
> > I see that some work was started in cxf-rt-ws-policy
> Wsdl11XPointerDomainExpression class, but it seems that is not complete.
> > Partly it is also implemented in systests
> > org.apache.cxf.systest.ws.policy.UriDomainExpression and
> > org.apache.cxf.systest.ws.policy.UriDomainExpressionBuilder
> >
> > I would create Jira and add support for wsdl11 references.
> > Any suggestions / objections?
> >
> > Regards,
> > Andrei.
> >
> 
> --
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog Talend Community Coder -
> http://coders.talend.com


Re: Extended support for wsdl11external WS-PolicyAttachments references

Posted by Daniel Kulp <dk...@apache.org>.
No objections here.   I think we just implemented the few basic places to meet whatever test case we were shooting for with the old Microsoft interoperability tests and didn’t go much further. 

Dan


On Apr 11, 2014, at 5:44 AM, Andrei Shakirin <as...@talend.com> wrote:

> Hi,
> 
> Currently CXF supports only limited set of references for external WS-PolicyAttachments (wsa:EndpointReferenceType):
> 
> <attachments xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:test="http://x.y.z/Assertions">
>    <wsp:PolicyAttachment>
>        <wsp:AppliesTo>
>            <wsa:EndpointReferenceType xmlns:wsa="http://www.w3.org/2005/08/addressing">
>                <wsa:Address>http://x.y.z/GreeterPort</wsa:Address>
>            </wsa:EndpointReferenceType>
>        </wsp:AppliesTo>
>        <wsp:Policy>
>           <test:A>A</test:A>
>        </wsp:Policy>
>    </wsp:PolicyAttachment>    
> </attachments>
> 
> I propose to extend that to support at least some URI Domain Expression for wsdl11:
> wsdl11.definitions() 
> wsdl11.service(service) 
> wsdl11.binding(binding)
> wsdl11.bindingOperation(binding/operation)
> wsdl11.bindingOperation.input(binding/operation)
> wsdl11.bindingOperation.output(binding/operation)
> wsdl11.bindingOperation.fault(binding/operation/fault)
> 
> I see that some work was started in cxf-rt-ws-policy Wsdl11XPointerDomainExpression class, but it seems that is not complete.
> Partly it is also implemented in systests org.apache.cxf.systest.ws.policy.UriDomainExpression and org.apache.cxf.systest.ws.policy.UriDomainExpressionBuilder
> 
> I would create Jira and add support for wsdl11 references.
> Any suggestions / objections?
> 
> Regards,
> Andrei.
> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com