Author: asoldano
Date: Fri Dec 14 08:24:38 2012
New Revision: 1421721
URL: http://svn.apache.org/viewvc?rev=1421721&view=rev
Log:
[CXF-4695] Applying patch
Modified:
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetUtils.java
Modified:
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetUtils.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetUtils.java?rev=1421721&r1=1421720&r2=1421721&view=diff
==============================================================================
---
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetUtils.java
(original)
+++
cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/WSDLGetUtils.java
Fri Dec 14 08:24:38 2012
@@ -21,6 +21,7 @@ package org.apache.cxf.frontend;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
+import java.net.URI;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Collection;
@@ -335,9 +336,10 @@ public class WSDLGetUtils {
List<Element> portList =
DOMUtils.findAllElementsByTagNameNS(doc.getDocumentElement(),
"http://schemas.xmlsoap.org/wsdl/",
"port");
+ String basePath = (String) message.get("http.base.path");
for (Element el : portList) {
- rewriteAddressProtocolHostPort(base, el,
"http://schemas.xmlsoap.org/wsdl/soap/");
- rewriteAddressProtocolHostPort(base, el,
"http://schemas.xmlsoap.org/wsdl/soap12/");
+ rewriteAddressProtocolHostPort(base, el, basePath,
"http://schemas.xmlsoap.org/wsdl/soap/");
+ rewriteAddressProtocolHostPort(base, el, basePath,
"http://schemas.xmlsoap.org/wsdl/soap12/");
}
}
Object rewriteSoapAddress =
message.getContextualProperty(AUTO_REWRITE_ADDRESS);
@@ -378,19 +380,23 @@ public class WSDLGetUtils {
}
}
- protected void rewriteAddressProtocolHostPort(String base, Element el,
String soapNS) {
+ protected void rewriteAddressProtocolHostPort(String base, Element el,
String httpBasePathProp, String soapNS) {
List<Element> sadEls = DOMUtils.findAllElementsByTagNameNS(el,
soapNS,
"address");
for (Element soapAddress : sadEls) {
+ String location = soapAddress.getAttribute("location").trim();
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());
+ URI locUri = new URI(location);
+ if (locUri.isAbsolute()) {
+ URL baseUrl = new URL(base);
+ StringBuilder sb = new
StringBuilder(baseUrl.getProtocol());
+
sb.append("://").append(baseUrl.getHost()).append(":").append(baseUrl.getPort())
+ .append(locUri.getPath());
+ soapAddress.setAttribute("location", sb.toString());
+ } else if (httpBasePathProp != null) {
+ soapAddress.setAttribute("location", httpBasePathProp +
location);
+ }
} catch (Exception e) {
//ignore
}