|
|
@ -62,9 +62,9 @@ public class ThreadLocalTargetSourceTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testUseDifferentManagedInstancesInSameThread() { |
|
|
|
public void testUseDifferentManagedInstancesInSameThread() { |
|
|
|
SideEffectBean apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
SideEffectBean apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
assertEquals(INITIAL_COUNT, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT, apartment.getCount()); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
assertEquals(INITIAL_COUNT + 1, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 1, apartment.getCount()); |
|
|
|
|
|
|
|
|
|
|
|
ITestBean test = (ITestBean) beanFactory.getBean("threadLocal2"); |
|
|
|
ITestBean test = (ITestBean) beanFactory.getBean("threadLocal2"); |
|
|
|
assertEquals("Rod", test.getName()); |
|
|
|
assertEquals("Rod", test.getName()); |
|
|
@ -74,12 +74,12 @@ public class ThreadLocalTargetSourceTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testReuseInSameThread() { |
|
|
|
public void testReuseInSameThread() { |
|
|
|
SideEffectBean apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
SideEffectBean apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
assertEquals(INITIAL_COUNT, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT, apartment.getCount()); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
assertEquals(INITIAL_COUNT + 1, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 1, apartment.getCount()); |
|
|
|
|
|
|
|
|
|
|
|
apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
assertEquals(INITIAL_COUNT + 1, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 1, apartment.getCount()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -106,20 +106,20 @@ public class ThreadLocalTargetSourceTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void testNewThreadHasOwnInstance() throws InterruptedException { |
|
|
|
public void testNewThreadHasOwnInstance() throws InterruptedException { |
|
|
|
SideEffectBean apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
SideEffectBean apartment = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
assertEquals(INITIAL_COUNT, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT, apartment.getCount()); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
apartment.doWork(); |
|
|
|
assertEquals(INITIAL_COUNT + 3, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 3, apartment.getCount()); |
|
|
|
|
|
|
|
|
|
|
|
class Runner implements Runnable { |
|
|
|
class Runner implements Runnable { |
|
|
|
public SideEffectBean mine; |
|
|
|
public SideEffectBean mine; |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
public void run() { |
|
|
|
this.mine = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
this.mine = (SideEffectBean) beanFactory.getBean("apartment"); |
|
|
|
assertEquals(INITIAL_COUNT, mine.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT, mine.getCount()); |
|
|
|
mine.doWork(); |
|
|
|
mine.doWork(); |
|
|
|
assertEquals(INITIAL_COUNT + 1, mine.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 1, mine.getCount()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
Runner r = new Runner(); |
|
|
|
Runner r = new Runner(); |
|
|
@ -130,11 +130,11 @@ public class ThreadLocalTargetSourceTests { |
|
|
|
assertNotNull(r); |
|
|
|
assertNotNull(r); |
|
|
|
|
|
|
|
|
|
|
|
// Check it didn't affect the other thread's copy
|
|
|
|
// Check it didn't affect the other thread's copy
|
|
|
|
assertEquals(INITIAL_COUNT + 3, apartment.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 3, apartment.getCount()); |
|
|
|
|
|
|
|
|
|
|
|
// When we use other thread's copy in this thread
|
|
|
|
// When we use other thread's copy in this thread
|
|
|
|
// it should behave like ours
|
|
|
|
// it should behave like ours
|
|
|
|
assertEquals(INITIAL_COUNT + 3, r.mine.getCount() ); |
|
|
|
assertEquals(INITIAL_COUNT + 3, r.mine.getCount()); |
|
|
|
|
|
|
|
|
|
|
|
// Bound to two threads
|
|
|
|
// Bound to two threads
|
|
|
|
assertEquals(2, ((ThreadLocalTargetSourceStats) apartment).getObjectCount()); |
|
|
|
assertEquals(2, ((ThreadLocalTargetSourceStats) apartment).getObjectCount()); |
|
|
|