Author: jim.ma
Date: 2014-08-19 03:49:15 -0400 (Tue, 19 Aug 2014)
New Revision: 18849
Modified:
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/Constants.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/addressRewrite/SoapAddressRewriteHelper.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java
Log:
[JBWS-3785][JBWS-3805]:Revert the previous change;only provide option to force change the
soap address uri scheme
Modified:
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/Constants.java
===================================================================
---
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/Constants.java 2014-08-19
07:48:01 UTC (rev 18848)
+++
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/Constants.java 2014-08-19
07:49:15 UTC (rev 18849)
@@ -45,6 +45,7 @@
public static final String CXF_WS_DISCOVERY_ENABLED =
"cxf.ws-discovery.enabled";
public static final String JBWS_CXF_DISABLE_HANDLER_AUTH_CHECKS =
"org.jboss.ws.cxf.disableHandlerAuthChecks";
public static final String JBWS_CXF_NO_LOCAL_BC =
"org.jboss.ws.cxf.noLocalBC";
+ public static final String JBWS_CXF_WSDL_URI_SCHEME =
"org.jboss.ws.cxf.wsdl.uriScheme";
public static final String JBWS_CXF_JAXWS_CLIENT_BUS_STRATEGY =
"org.jboss.ws.cxf.jaxws-client.bus.strategy";
public static final String THREAD_BUS_STRATEGY = "THREAD_BUS";
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/addressRewrite/SoapAddressRewriteHelper.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/addressRewrite/SoapAddressRewriteHelper.java 2014-08-19
07:48:01 UTC (rev 18848)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/addressRewrite/SoapAddressRewriteHelper.java 2014-08-19
07:49:15 UTC (rev 18849)
@@ -26,9 +26,9 @@
import java.net.URI;
import java.net.URL;
-import org.jboss.wsf.spi.deployment.Service;
import org.jboss.wsf.spi.management.ServerConfig;
-import org.jboss.ws.common.Constants;
+import org.jboss.wsf.spi.metadata.webservices.JBossWebservicesMetaData;
+import org.jboss.wsf.stack.cxf.client.Constants;
/**
* Helper for rewriting soap:address in published wsdl
@@ -50,7 +50,7 @@
* @param serverConfig The current ServerConfig
* @return The rewritten soap:address to be used in the wsdl
*/
- public static String getRewrittenPublishedEndpointUrl(String wsdlAddress, String
epAddress, ServerConfig serverConfig, Service service) {
+ public static String getRewrittenPublishedEndpointUrl(String wsdlAddress, String
epAddress, ServerConfig serverConfig, JBossWebservicesMetaData wsmd) {
if (wsdlAddress == null) {
return null;
}
@@ -63,7 +63,7 @@
uriScheme = serverConfig.getWebServiceUriScheme();
}
if (uriScheme == null) {
- uriScheme = (String)service.getProperty(Constants.FORCE_URI_SCHEME);
+ uriScheme = wsmd.getProperty(Constants.JBWS_CXF_WSDL_URI_SCHEME);
}
return rewriteSoapAddress(serverConfig, wsdlAddress, epAddress, uriScheme);
}
@@ -73,6 +73,11 @@
}
}
+ public static String getRewrittenPublishedEndpointUrl(String address, ServerConfig
serverConfig) {
+ return getRewrittenPublishedEndpointUrl(address, serverConfig, null);
+ }
+
+
/**
* Rewrite and get address to be used for CXF published endpoint url prop (rewritten
wsdl address).
* This method is to be used for code-first endpoints, when no wsdl is provided by the
user.
@@ -81,13 +86,46 @@
* @param serverConfig The current ServerConfig
* @return
*/
- public static String getRewrittenPublishedEndpointUrl(String address, ServerConfig
serverConfig)
+ public static String getRewrittenPublishedEndpointUrl(String address, ServerConfig
serverConfig, JBossWebservicesMetaData wsmd)
{
try
{
+ final URL tmpurl = new URL(address);
+ String uriScheme = serverConfig.getWebServiceUriScheme();
+ if (uriScheme == null && wsmd != null) {
+ uriScheme = wsmd.getProperty(Constants.JBWS_CXF_WSDL_URI_SCHEME);
+ }
+ if (uriScheme != null) {
+ String port = "";
+ if (HTTPS.equals(uriScheme))
+ {
+ int portNo = serverConfig.getWebServiceSecurePort();
+ if (portNo != 443)
+ {
+ port = ":" + portNo;
+ }
+ }
+ else
+ {
+ int portNo = serverConfig.getWebServicePort();
+ if (portNo != 80)
+ {
+ port = ":" + portNo;
+ }
+ }
+
+ StringBuilder addressBuilder = new StringBuilder();
+ addressBuilder.append(uriScheme);
+ addressBuilder.append("://");
+ addressBuilder.append(tmpurl.getHost());
+ addressBuilder.append(port);
+ addressBuilder.append(tmpurl.getPath());
+ address = addressBuilder.toString();
+
+ }
+ final URL url = new URL(address);
if (isPathRewriteRequired(serverConfig))
- {
- final URL url = new URL(address);
+ {
final String path = url.getPath();
final String tmpPath =
SEDProcessor.newInstance(serverConfig.getWebServicePathRewriteRule()).processLine(path);
final String newUrl=url.toString().replace(path, tmpPath);
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java 2014-08-19
07:48:01 UTC (rev 18848)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java 2014-08-19
07:49:15 UTC (rev 18849)
@@ -51,6 +51,7 @@
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainMetaData;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainsMetaData;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
+import org.jboss.wsf.spi.metadata.webservices.JBossWebservicesMetaData;
import org.jboss.wsf.spi.metadata.webservices.PortComponentMetaData;
import org.jboss.wsf.spi.metadata.webservices.WebserviceDescriptionMetaData;
import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
@@ -287,6 +288,7 @@
wsdlLocation = ddep.getAnnotationWsdlLocation();
}
final ServerConfig sc = getServerConfig();
+ JBossWebservicesMetaData wsmd = dep.getAttachment(JBossWebservicesMetaData.class);
if (wsdlLocation != null) {
URL wsdlUrl = dep.getResourceResolver().resolveFailSafe(wsdlLocation);
if (wsdlUrl != null) {
@@ -294,7 +296,7 @@
//do not try rewriting addresses for not-http binding
String wsdlAddress = parser.filterSoapAddress(ddep.getServiceName(),
ddep.getPortName(), SOAPAddressWSDLParser.SOAP_HTTP_NS);
- String rewrittenWsdlAddress =
SoapAddressRewriteHelper.getRewrittenPublishedEndpointUrl(wsdlAddress, ddep.getAddress(),
sc, dep.getService());
+ String rewrittenWsdlAddress =
SoapAddressRewriteHelper.getRewrittenPublishedEndpointUrl(wsdlAddress, ddep.getAddress(),
sc, wsmd);
//If "auto rewrite", leave "publishedEndpointUrl" unset
so that CXF does not force host/port values for
//wsdl imports and auto-rewrite them too; otherwise set the new address into
"publishedEndpointUrl",
//which causes CXF to override any address in the published wsdl.
@@ -308,7 +310,7 @@
//same comment as above regarding auto rewrite...
if (!SoapAddressRewriteHelper.isAutoRewriteOn(sc)) {
//force computed address for code first endpoints
-
ddep.setPublishedEndpointUrl(SoapAddressRewriteHelper.getRewrittenPublishedEndpointUrl(ddep.getAddress(),
sc));
+
ddep.setPublishedEndpointUrl(SoapAddressRewriteHelper.getRewrittenPublishedEndpointUrl(ddep.getAddress(),
sc, wsmd));
}
}
}