Bug 1103847

Summary: [GSS] (6.3.x) CXF-5665, CXF-5841 - CXF duplicates PolicyReferences in generated WSDL under certain circumstances
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Kyle Lape <klape>
Component: Web ServicesAssignee: baranowb <bbaranow>
Status: VERIFIED --- QA Contact: Rostislav Svoboda <rsvoboda>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.2.0CC: asoldano, bbaranow, bmaxwell, istudens, jawilson, jbliznak, jkudrnac, myarboro, vtunka
Target Milestone: CR1Keywords: Triaged
Target Release: EAP 6.3.2   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: Doc Type: Known Issue
Doc Text:
A bug in the CXF component shipped with JBoss EAP 6 causes `PolicyReferences` to be duplicated when using Java First WS-Policy Annotations (such as @Policies). The resulting WSDL generates multiple 'PolicyReference' elements when there is no separate Java interface. This issue is expected to be resolved in a future release of the product.
Story Points: ---
Clone Of: 1083770 Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On: 1083770    
Bug Blocks: 1115216, 1132166, 1144103, 1087653    

Description Kyle Lape 2014-06-02 17:55:32 UTC
+++ This bug was initially created as a clone of Bug #1083770 +++

[Copied problem description from CXF Jira]

In CXF 2.7.10 when using Java First WS-Policy Annotations such as:
	@Policy(uri = "annotationpolicies/TestOperationPolicy.xml"), 
	@Policy(uri = "annotationpolicies/TestOperationInputPolicy.xml", 
			placement = Policy.Placement.BINDING_OPERATION_INPUT), 
	@Policy(uri = "annotationpolicies/TestOperationOutputPolicy.xml", 
			placement = Policy.Placement.BINDING_OPERATION_OUTPUT), 
	@Policy(uri = "annotationpolicies/TestOperationPTPolicy.xml", 
			placement = Policy.Placement.PORT_TYPE_OPERATION), 
	@Policy(uri = "annotationpolicies/TestOperationPTInputPolicy.xml", 
			placement = Policy.Placement.PORT_TYPE_OPERATION_INPUT), 
	@Policy(uri = "annotationpolicies/TestOperationPTOutputPolicy.xml", 
			placement = Policy.Placement.PORT_TYPE_OPERATION_OUTPUT) 

The resulting WSDL ends up generating multiple PolicyReference elements when there is no separate Java Interface for example:

<wsdl:operation name="echoInt">
		<soap:operation soapAction="" style="document"/>
		<wsp:PolicyReference URI="#echoIntBindingOpPolicy"/>
		<wsp:PolicyReference URI="#echoIntBindingOpPolicy"/>
		<wsdl:input name="echoInt">
				<soap:body use="literal"/>
				<wsp:PolicyReference URI="#echoIntBindingOpInputPolicy"/>
				<wsp:PolicyReference URI="#echoIntBindingOpInputPolicy"/>
		<wsdl:output name="echoIntResponse">
				<soap:body use="literal"/>
				<wsp:PolicyReference URI="#echoIntBindingOpOutputPolicy"/>
				<wsp:PolicyReference URI="#echoIntBindingOpOutputPolicy"/>

--- Additional comment from Scott Mumford on 2014-04-22 21:43:21 EDT ---

Flagged as Known Issue as ticket unresolved at the time of writing the release note.

--- Additional comment from Nichola Moore on 2014-05-13 22:00:56 EDT ---

Now set to bug fix as requested in bug 1096876. 
A resolution needs to be added to the doc text, however.

--- Additional comment from Nichola Moore on 2014-05-14 00:57:11 EDT ---

Set back to known issue. Flag reset in error.

--- Additional comment from Kyle Lape on 2014-05-30 12:35:23 EDT ---

This should already be included in 6.3.0 since this fix was included in CXF 2.7.11:

klape@localhost cxf$ git tag --contains eb5ac69120bc7799997740ff6817864039b55518

Comment 1 baranowb 2014-06-03 07:08:15 UTC
Fix is in: http://git.app.eng.bos.redhat.com/git/apache/cxf.git/commit/?h=cxf-2.7.11-redhat&id=eb5ac69120bc7799997740ff6817864039b55518 , if CXF is bumped to 2.7.11-redhatX this issue can be closed.

Comment 3 Jan Blizňák 2014-06-19 14:32:45 UTC
I still see reported issue in 6.2.4.CP.CR1:

Defining webservice with no interface like this:

      serviceName = "HelloWorldServiceNoInterface",
      portName = "HelloWorld1", 
      name = "HelloWorld1", 
      targetNamespace = "http://www.jboss.org/jbossas/quickstarts/wshelloworld/HelloWorld1"
@Policy(uri = "ws-policy/x509SecurityPolicy.xml", placement = Policy.Placement.BINDING)
public class HelloWorldServiceNoInterface {

        @Policy(uri = "ws-policy/inputPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION_INPUT),
        @Policy(uri = "ws-policy/outputPolicy.xml", placement = Policy.Placement.PORT_TYPE_OPERATION_OUTPUT)
    public String sayHello() {
        return "Hello World!";

still results in multiple PolicyReference elements in wsdl:

<wsdl:portType name="HelloWorld1">
  <wsdl:operation name="sayHello2">
    <wsdl:input message="tns:sayHello2" name="sayHello2">
      <wsp:PolicyReference URI="#Input_Security_Policy"/>
      <wsp:PolicyReference URI="#Input_Security_Policy"/>
    <wsdl:output message="tns:sayHello2Response" name="sayHello2Response">
      <wsp:PolicyReference URI="#Output_Security_Policy"/>
      <wsp:PolicyReference URI="#Output_Security_Policy"/>
<wsdl:binding name="HelloWorldServiceNoInterfaceSoapBinding" type="tns:HelloWorld1">
  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  <wsp:PolicyReference URI="#X509SecurityPolicy"/>
  <wsp:PolicyReference URI="#X509SecurityPolicy"/>
  <wsdl:operation name="sayHello2">
    <soap:operation soapAction="" style="document"/>
    <wsdl:input name="sayHello2">
      <soap:body use="literal"/>
    <wsdl:output name="sayHello2Response">
    <soap:body use="literal"/>

Comment 4 Scott Mumford 2014-06-23 01:56:13 UTC
Converted release note to Known Issue as failed QA

Comment 12 baranowb 2014-07-08 10:34:42 UTC
Shifting to 6.3.1 - this require new spin of CXF (2.7.12 iirc)

Comment 14 Jan Blizňák 2014-10-16 09:35:47 UTC
Verified on 6.3.2.CP.CR1