[ https://issues.apache.org/jira/browse/CXF-3747?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jesse Pangburn closed CXF-3747. ------------------------------- Verified by downloading latest version of affected file(s) from SVN on the 2.4.x fixes branch, building CXF 2.4.2 with the fixed file(s) and testing this defect > Dispatch client fails to set WS-Addressing Action header when WSDL's > soap:operation does not have a style attribute > ------------------------------------------------------------------------------------------------------------------- > > Key: CXF-3747 > URL: https://issues.apache.org/jira/browse/CXF-3747 > Project: CXF > Issue Type: Bug > Components: JAX-WS Runtime > Affects Versions: 2.4.1 > Reporter: Jesse Pangburn > Assignee: Daniel Kulp > Priority: Minor > Labels: dispatch, ws-addressing > Fix For: 2.3.7, 2.4.3 > > Attachments: patch3747.txt, patch3747and3748.txt > > Original Estimate: 2h > Remaining Estimate: 2h > > I found the cause of the problem to be a bug in this method in CXF (I have > version 2.4.1): > private Map<String, QName> createPayloadEleOpNameMap(BindingInfo > bindingInfo) { > Map<String, QName> payloadElementMap = new java.util.HashMap<String, > QName>(); > for (BindingOperationInfo bop : bindingInfo.getOperations()) { > SoapOperationInfo soi = > (SoapOperationInfo)bop.getExtensor(SoapOperationInfo.class); > if (soi != null) { > if ("document".equals(soi.getStyle())) { > // if doc > if (bop.getOperationInfo().getInput() != null > && > !bop.getOperationInfo().getInput().getMessageParts().isEmpty()) { > QName qn = > bop.getOperationInfo().getInput().getMessagePartByIndex(0) > .getElementQName(); > payloadElementMap.put(qn.toString(), > bop.getOperationInfo().getName()); > } > } else if ("rpc".equals(soi.getStyle())) { > // if rpc > > payloadElementMap.put(bop.getOperationInfo().getName().toString(), > bop.getOperationInfo() > .getName()); > } > } > } > return payloadElementMap; > } > The problem is that it requires the SoapOperationInfo to have a style > attribute, but in the W3C spec for WSDL it says the style attribute on the > soap operation is optional, specifically 'If the attribute is not specified, > it defaults to the value specified in the soap:binding element. If the > soap:binding element does not specify a style, it is assumed to be > "document".' So the code needs to check if the soi has a style and if not > read it from the binding and if not then set it as "document". This is not a > problem in the WSDLs generated by CXF (as I found out with a HelloWorld test) > because it creates these optional style attributes, but since W3C says people > can generate WSDLs without these (and I ran into one) I think it's worth > fixing. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira