You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2013/07/16 00:50:49 UTC
svn commit: r1503509 - in /cxf/trunk:
api/src/main/java/org/apache/cxf/BusFactory.java
rt/core/src/test/java/org/apache/cxf/bus/CXFBusImplTest.java
Author: dkulp
Date: Mon Jul 15 22:50:49 2013
New Revision: 1503509
URL: http://svn.apache.org/r1503509
Log:
Fix problems with thread bus not being retrieved correctly
Also cleanup bus's in the one test case.
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/BusFactory.java
cxf/trunk/rt/core/src/test/java/org/apache/cxf/bus/CXFBusImplTest.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/BusFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/BusFactory.java?rev=1503509&r1=1503508&r2=1503509&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/BusFactory.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/BusFactory.java Mon Jul 15 22:50:49 2013
@@ -228,8 +228,14 @@ public abstract class BusFactory {
}
return b.bus;
}
- BusHolder b = threadBus.get();
- return b == null ? null : b.bus;
+ BusHolder h = threadBus.get();
+ if (h == null || h.stale) {
+ Thread cur = Thread.currentThread();
+ synchronized (threadBusses) {
+ h = threadBusses.get(cur);
+ }
+ }
+ return h == null || h.stale ? null : h.bus;
}
private static synchronized Bus createThreadBus() {
BusHolder b = getThreadBusHolder(false);
Modified: cxf/trunk/rt/core/src/test/java/org/apache/cxf/bus/CXFBusImplTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/test/java/org/apache/cxf/bus/CXFBusImplTest.java?rev=1503509&r1=1503508&r2=1503509&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/test/java/org/apache/cxf/bus/CXFBusImplTest.java (original)
+++ cxf/trunk/rt/core/src/test/java/org/apache/cxf/bus/CXFBusImplTest.java Mon Jul 15 22:50:49 2013
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.cxf.Bus;
import org.apache.cxf.BusException;
+import org.apache.cxf.BusFactory;
import org.apache.cxf.binding.BindingFactoryManager;
import org.apache.cxf.bus.extension.ExtensionManagerBus;
import org.apache.cxf.buslifecycle.BusLifeCycleListener;
@@ -34,12 +35,22 @@ import org.apache.cxf.transport.ConduitI
import org.apache.cxf.transport.DestinationFactoryManager;
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
+
import org.junit.Assert;
import org.junit.Test;
public class CXFBusImplTest extends Assert {
@Test
+ public void testThreadBus() throws BusException {
+ BusFactory.setDefaultBus(null);
+ BusFactory.setThreadDefaultBus(null);
+ Bus bus = BusFactory.newInstance().createBus();
+ Bus b2 = BusFactory.getThreadDefaultBus(false);
+ assertSame(bus, b2);
+ bus.shutdown(true);
+ }
+ @Test
public void testConstructionWithoutExtensions() throws BusException {
Bus bus = new ExtensionManagerBus();
@@ -47,6 +58,7 @@ public class CXFBusImplTest extends Asse
assertNotNull(bus.getExtension(ConduitInitiatorManager.class));
assertNotNull(bus.getExtension(DestinationFactoryManager.class));
assertNotNull(bus.getExtension(PhaseManager.class));
+ bus.shutdown(true);
}
@Test
@@ -82,6 +94,7 @@ public class CXFBusImplTest extends Asse
String extension = "CXF";
bus.setExtension(extension, String.class);
assertSame(extension, bus.getExtension(String.class));
+ bus.shutdown(true);
}
@Test
@@ -91,6 +104,7 @@ public class CXFBusImplTest extends Asse
assertEquals("The bus id should be cxf", id, Bus.DEFAULT_BUS_ID + Math.abs(bus.hashCode()));
bus.setId("test");
assertEquals("The bus id should be changed", "test", bus.getId());
+ bus.shutdown(true);
}
@Test
@@ -107,7 +121,7 @@ public class CXFBusImplTest extends Asse
lifeCycleManager.registerLifeCycleListener(listener);
bus.shutdown(true);
EasyMock.verify(listener);
-
+ bus.shutdown(true);
}
}