You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2009/07/28 12:18:25 UTC
svn commit: r798479 -
/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
Author: asoldano
Date: Tue Jul 28 10:18:24 2009
New Revision: 798479
URL: http://svn.apache.org/viewvc?rev=798479&view=rev
Log:
[CXF-2364] Allow SOAP address rewrite in wsdl according to the request call
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java?rev=798479&r1=798478&r2=798479&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/http/WSDLQueryHandler.java Tue Jul 28 10:18:24 2009
@@ -207,7 +207,7 @@
doc = XMLUtils.getParser().parse(src);
}
- updateDoc(doc, base, mp, smp);
+ updateDoc(doc, base, mp, smp, endpointInfo);
String enc = doc.getXmlEncoding();
if (enc == null) {
enc = "utf-8";
@@ -226,9 +226,10 @@
}
}
- private void updateDoc(Document doc, String base,
+ protected void updateDoc(Document doc, String base,
Map<String, Definition> mp,
- Map<String, SchemaReference> smp) {
+ Map<String, SchemaReference> smp,
+ EndpointInfo ei) {
List<Element> elementList = DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(),
"http://www.w3.org/2001/XMLSchema",
"import");
@@ -258,6 +259,24 @@
el.setAttribute("location", base + "?wsdl=" + sl);
}
}
+
+ Boolean rewriteSoapAddress = ei.getProperty("autoRewriteSoapAddress", Boolean.class);
+ if (rewriteSoapAddress != null && rewriteSoapAddress.booleanValue()) {
+ elementList = DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(),
+ "http://schemas.xmlsoap.org/wsdl/",
+ "port");
+ for (Element el : elementList) {
+ String name = el.getAttribute("name");
+ if (name.equals(ei.getName().getLocalPart())) {
+ Element soapAddress = DOMUtils.findAllElementsByTagNameNS(el,
+ "http://schemas.xmlsoap.org/wsdl/soap/",
+ "address")
+ .iterator().next();
+ soapAddress.setAttribute("location", base);
+ }
+ }
+ }
+
doc.setXmlStandalone(true);
}