[jbossws-commits] JBossWS SVN: r17053 - thirdparty/cxf/branches/cxf-2.4.10/rt/frontend/simple/src/main/java/org/apache/cxf/frontend.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Wed Dec 5 12:53:30 EST 2012
Author: alessio.soldano at jboss.com
Date: 2012-12-05 12:53:30 -0500 (Wed, 05 Dec 2012)
New Revision: 17053
Modified:
thirdparty/cxf/branches/cxf-2.4.10/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetInterceptor.java
Log:
[JBPAPP6-1694] Adding autoRewriteSoapAddressForAllServices option (CXF-4677)
Modified: thirdparty/cxf/branches/cxf-2.4.10/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetInterceptor.java
===================================================================
--- thirdparty/cxf/branches/cxf-2.4.10/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetInterceptor.java 2012-12-05 14:46:09 UTC (rev 17052)
+++ thirdparty/cxf/branches/cxf-2.4.10/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetInterceptor.java 2012-12-05 17:53:30 UTC (rev 17053)
@@ -82,6 +82,7 @@
public static final WSDLGetInterceptor INSTANCE = new WSDLGetInterceptor();
public static final String AUTO_REWRITE_ADDRESS = "autoRewriteSoapAddress";
+ public static final String AUTO_REWRITE_ADDRESS_ALL = "autoRewriteSoapAddressForAllServices";
public static final String PUBLISHED_ENDPOINT_URL = "publishedEndpointUrl";
private static final String WSDLS_KEY = WSDLGetInterceptor.class.getName() + ".WSDLs";
@@ -302,7 +303,6 @@
Map<String, SchemaReference> smp,
Message message) {
List<Element> elementList = null;
- Object rewriteSoapAddress = message.getContextualProperty(AUTO_REWRITE_ADDRESS);
try {
elementList = DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(),
@@ -348,7 +348,18 @@
base), e);
}
- if (rewriteSoapAddress == null || MessageUtils.isTrue(rewriteSoapAddress)) {
+ boolean rewriteAllSoapAddress = MessageUtils.isTrue(message.getContextualProperty(AUTO_REWRITE_ADDRESS_ALL));
+ if (rewriteAllSoapAddress) {
+ List<Element> portList = DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(),
+ "http://schemas.xmlsoap.org/wsdl/",
+ "port");
+ for (Element el : portList) {
+ rewriteAddressProtocolHostPort(base, el, "http://schemas.xmlsoap.org/wsdl/soap/");
+ rewriteAddressProtocolHostPort(base, el, "http://schemas.xmlsoap.org/wsdl/soap12/");
+ }
+ }
+ Object rewriteSoapAddress = message.getContextualProperty(AUTO_REWRITE_ADDRESS);
+ if (rewriteSoapAddress == null || MessageUtils.isTrue(rewriteSoapAddress) || rewriteAllSoapAddress) {
List<Element> serviceList = DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(),
"http://schemas.xmlsoap.org/wsdl/",
"service");
@@ -385,6 +396,25 @@
soapAddress.setAttribute("location", base);
}
}
+
+ protected void rewriteAddressProtocolHostPort(String base, Element el, String soapNS) {
+ List<Element> sadEls = DOMUtils.findAllElementsByTagNameNS(el,
+ soapNS,
+ "address");
+ for (Element soapAddress : sadEls) {
+ try {
+ String location = soapAddress.getAttribute("location").trim();
+ URL locUrl = new URL(location);
+ URL baseUrl = new URL(base);
+ StringBuilder sb = new StringBuilder(baseUrl.getProtocol());
+ sb.append("://").append(baseUrl.getHost()).append(":").append(baseUrl.getPort())
+ .append(locUrl.getPath());
+ soapAddress.setAttribute("location", sb.toString());
+ } catch (Exception e) {
+ //ignore
+ }
+ }
+ }
static String resolveWithCatalogs(OASISCatalogManager catalogs, String start, String base) {
try {
More information about the jbossws-commits
mailing list