Author: asoldano
Date: 2014-08-08 10:45:18 -0400 (Fri, 08 Aug 2014)
New Revision: 18838
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/BusHolder.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/EndpointImpl.java
stack/cxf/trunk/modules/server/src/test/java/org/jboss/wsf/stack/cxf/configuration/BusHolderTest.java
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jbws3098/BusHolderLifeCycleTestCase.java
Log:
[JBWS-3750] Move additional interceptor registration to Bus level (instead of Endpoint
level)
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/BusHolder.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/BusHolder.java 2014-08-08
14:01:12 UTC (rev 18837)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/BusHolder.java 2014-08-08
14:45:18 UTC (rev 18838)
@@ -21,6 +21,7 @@
*/
package org.jboss.wsf.stack.cxf.configuration;
+import java.security.AccessController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -54,6 +55,7 @@
import org.apache.cxf.wsdl11.WSDLManagerImpl;
import org.jboss.ws.api.annotation.PolicySets;
import org.jboss.ws.api.binding.BindingCustomization;
+import org.jboss.ws.common.management.AbstractServerConfig;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.WSFException;
import org.jboss.wsf.spi.classloading.ClassLoaderProvider;
@@ -61,9 +63,11 @@
import org.jboss.wsf.spi.deployment.Deployment;
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.deployment.UnifiedVirtualFile;
+import org.jboss.wsf.spi.management.ServerConfig;
import org.jboss.wsf.spi.metadata.webservices.JBossWebservicesMetaData;
import org.jboss.wsf.spi.security.JASPIAuthenticationProvider;
import org.jboss.wsf.stack.cxf.Loggers;
+import org.jboss.wsf.stack.cxf.addressRewrite.SoapAddressRewriteHelper;
import org.jboss.wsf.stack.cxf.client.Constants;
import org.jboss.wsf.stack.cxf.deployment.WSDLFilePublisher;
import org.jboss.wsf.stack.cxf.extensions.policy.PolicySetsAnnotationListener;
@@ -71,6 +75,7 @@
import org.jboss.wsf.stack.cxf.interceptor.EndpointAssociationInterceptor;
import org.jboss.wsf.stack.cxf.interceptor.HandlerAuthInterceptor;
import org.jboss.wsf.stack.cxf.interceptor.NsCtxSelectorStoreInterceptor;
+import org.jboss.wsf.stack.cxf.interceptor.WSDLSoapAddressRewriteInterceptor;
import org.jboss.wsf.stack.cxf.management.InstrumentationManagerExtImpl;
import
org.jboss.wsf.stack.cxf.security.authentication.AuthenticationMgrSubjectCreatingInterceptor;
@@ -188,7 +193,7 @@
public abstract Configurer createServerConfigurer(BindingCustomization customization,
WSDLFilePublisher wsdlPublisher, List<Endpoint> depEndpoints,
UnifiedVirtualFile root, String epConfigName, String epConfigFile);
- protected static void setInterceptors(Bus bus, Map<String, String> props)
+ protected void setInterceptors(Bus bus, Map<String, String> props)
{
//Install the EndpointAssociationInterceptor for linking every message exchange
//with the proper spi Endpoint retrieved in CXFServletExt
@@ -200,6 +205,10 @@
if ((p == null || (!"true".equalsIgnoreCase(p) &&
!"1".equalsIgnoreCase(p))) &&
!Boolean.getBoolean(Constants.JBWS_CXF_DISABLE_HANDLER_AUTH_CHECKS)) {
bus.getInInterceptors().add(new HandlerAuthInterceptor());
}
+
+ if (SoapAddressRewriteHelper.isPathRewriteRequired(getServerConfig())) {
+ bus.getInInterceptors().add(WSDLSoapAddressRewriteInterceptor.INSTANCE);
+ }
}
protected static void setResourceResolver(Bus bus, ResourceResolver resourceResolver)
@@ -336,6 +345,13 @@
return prop != null ? Long.parseLong(prop) : defaultValue;
}
+ protected ServerConfig getServerConfig() {
+ if(System.getSecurityManager() == null) {
+ return AbstractServerConfig.getServerIntegrationServerConfig();
+ }
+ return
AccessController.doPrivileged(AbstractServerConfig.GET_SERVER_INTEGRATION_SERVER_CONFIG);
+ }
+
/**
* Return the hold bus
*
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/EndpointImpl.java
===================================================================
---
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/EndpointImpl.java 2014-08-08
14:01:12 UTC (rev 18837)
+++
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/deployment/EndpointImpl.java 2014-08-08
14:45:18 UTC (rev 18838)
@@ -34,9 +34,7 @@
import org.apache.cxf.configuration.Configurer;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.frontend.WSDLGetUtils;
-import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.jaxws.support.JaxWsImplementorInfo;
-import org.apache.cxf.message.Message;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.service.model.ServiceInfo;
@@ -46,7 +44,6 @@
import org.jboss.wsf.spi.metadata.config.CommonConfig;
import org.jboss.wsf.stack.cxf.Loggers;
import org.jboss.wsf.stack.cxf.addressRewrite.SoapAddressRewriteHelper;
-import org.jboss.wsf.stack.cxf.interceptor.WSDLSoapAddressRewriteInterceptor;
/**
@@ -78,10 +75,6 @@
super.getServerFactory().setBlockPostConstruct(true);
super.doPublish(addr);
- // A custom interceptor is required when the server config attributes for
rewriting
- // the path in a WSDL URL (i.e., <soap:address location= ...) are set
- replaceWSDLGetInterceptor();
-
//allow for configuration so that the wsdlPublisher can be set be the
JBossWSCXFConfigurer
configureObject(this);
setupConfigHandlers();
@@ -90,18 +83,6 @@
}
/**
- * Add interceptor that enables the desired soap:address rewrite
- */
- private void replaceWSDLGetInterceptor(){
- if (SoapAddressRewriteHelper.isPathRewriteRequired(getServerConfig())) {
- List<Interceptor<? extends Message>> inInterceptors =
getInInterceptors();
- if(!inInterceptors.contains(WSDLSoapAddressRewriteInterceptor.INSTANCE)){
- inInterceptors.add(WSDLSoapAddressRewriteInterceptor.INSTANCE);
- }
- }
- }
-
- /**
* Sets the JAXWS endpoint config for the current endpoint. This is called by
configurer when
* org.apache.cxf.jaxws.EndpointImpl#getServer(..) executes
'configureObject(this)'
*
Modified:
stack/cxf/trunk/modules/server/src/test/java/org/jboss/wsf/stack/cxf/configuration/BusHolderTest.java
===================================================================
---
stack/cxf/trunk/modules/server/src/test/java/org/jboss/wsf/stack/cxf/configuration/BusHolderTest.java 2014-08-08
14:01:12 UTC (rev 18837)
+++
stack/cxf/trunk/modules/server/src/test/java/org/jboss/wsf/stack/cxf/configuration/BusHolderTest.java 2014-08-08
14:45:18 UTC (rev 18838)
@@ -21,6 +21,7 @@
*/
package org.jboss.wsf.stack.cxf.configuration;
+import java.io.File;
import java.util.HashMap;
import java.util.Map;
@@ -30,6 +31,8 @@
import org.apache.cxf.ws.policy.selector.FirstAlternativeSelector;
import org.apache.cxf.ws.policy.selector.MaximalAlternativeSelector;
import org.jboss.ws.common.deployment.DefaultDeploymentModelFactory;
+import org.jboss.ws.common.management.AbstractServerConfig;
+import org.jboss.wsf.spi.management.ServerConfig;
import org.jboss.wsf.spi.metadata.webservices.JBossWebservicesMetaData;
import org.jboss.wsf.stack.cxf.client.Constants;
import org.jboss.wsf.stack.cxf.metadata.services.DDBeans;
@@ -67,7 +70,31 @@
props.put(Constants.CXF_POLICY_ALTERNATIVE_SELECTOR_PROP, alternative);
wsmd = new JBossWebservicesMetaData(null, null, null, null, props, null, null);
}
- BusHolder holder = new NonSpringBusHolder(new DDBeans());
+ BusHolder holder = new NonSpringBusHolder(new DDBeans()) {
+ protected ServerConfig getServerConfig() {
+ return new AbstractServerConfig()
+ {
+ @Override
+ public File getServerTempDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ public File getServerDataDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ public File getHomeDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+ };
try {
holder.configure(null, null, wsmd, new
DefaultDeploymentModelFactory().newDeployment("testDeployment", null, null));
return
holder.getBus().getExtension(PolicyEngine.class).getAlternativeSelector().getClass().getName();
Modified:
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jbws3098/BusHolderLifeCycleTestCase.java
===================================================================
---
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jbws3098/BusHolderLifeCycleTestCase.java 2014-08-08
14:01:12 UTC (rev 18837)
+++
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jbws3098/BusHolderLifeCycleTestCase.java 2014-08-08
14:45:18 UTC (rev 18838)
@@ -21,12 +21,15 @@
*/
package org.jboss.test.ws.jaxws.cxf.jbws3098;
+import java.io.File;
import java.net.URL;
import org.apache.cxf.Bus;
import org.apache.cxf.buslifecycle.BusLifeCycleListener;
import org.apache.cxf.buslifecycle.BusLifeCycleManager;
import org.jboss.ws.common.deployment.DefaultDeploymentModelFactory;
+import org.jboss.ws.common.management.AbstractServerConfig;
+import org.jboss.wsf.spi.management.ServerConfig;
import org.jboss.wsf.stack.cxf.client.util.SpringUtils;
import org.jboss.wsf.stack.cxf.configuration.BusHolder;
import org.jboss.wsf.stack.cxf.configuration.NonSpringBusHolder;
@@ -47,18 +50,74 @@
{
if (SpringUtils.isSpringAvailable(Thread.currentThread().getContextClassLoader()))
{
- simpleShutdownTest(new SpringBusHolder(null, null, new URL[]{}));
- shutdownTestWithInnerShutdown(new SpringBusHolder(null, null, new URL[]{}));
- shutdownTestWithNoShutdown(new SpringBusHolder(null, null, new URL[]{}));
+ simpleShutdownTest(newSpringBusHolderInstance());
+ shutdownTestWithInnerShutdown(newSpringBusHolderInstance());
+ shutdownTestWithNoShutdown(newSpringBusHolderInstance());
}
else
{
- simpleShutdownTest(new NonSpringBusHolder(new DDBeans()));
- shutdownTestWithInnerShutdown(new NonSpringBusHolder(new DDBeans()));
- shutdownTestWithNoShutdown(new NonSpringBusHolder(new DDBeans()));
+ simpleShutdownTest(newNonSpringBusHolderInstance());
+ shutdownTestWithInnerShutdown(newNonSpringBusHolderInstance());
+ shutdownTestWithNoShutdown(newNonSpringBusHolderInstance());
}
}
+ private static SpringBusHolder newSpringBusHolderInstance() {
+ return new SpringBusHolder(null, null, new URL[]{}) {
+ protected ServerConfig getServerConfig() {
+ return new AbstractServerConfig()
+ {
+ @Override
+ public File getServerTempDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ public File getServerDataDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ public File getHomeDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+ };
+ }
+
+ private static NonSpringBusHolder newNonSpringBusHolderInstance() {
+ return new NonSpringBusHolder(new DDBeans()) {
+ protected ServerConfig getServerConfig() {
+ return new AbstractServerConfig()
+ {
+ @Override
+ public File getServerTempDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ public File getServerDataDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ @Override
+ public File getHomeDir()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+ };
+ }
+
private static void simpleShutdownTest(BusHolder holder)
{
Bus bus = holder.getBus();