From 87e4c25f453c0b0cf554e0fb4d0f41d0555b70ee Mon Sep 17 00:00:00 2001 From: gautamshetty Date: Sun, 15 Apr 2018 14:26:30 -0500 Subject: [PATCH] [BAEL 717]-Singleton Session Bean. (#4001) * BAEL-717: Singleton EJB Bean Files for BAEL-717:Singleton EJB Bean. * BAEL-717: Singleton EJB Bean Corrected Indentation. * BAEL-717: Singleton EJB Bean Corrected Indentation. * BAEL-717: Singleton EJB Bean Corrected Indentation. * BAEL-717: Singleton EJB Bean Corrected Indentation. * BAEL-717: Singleton EJB Bean Changed artifactId value. * BAEL-717: Singleton EJB Bean. Added module for Singleton EJB Bean. * BAEL-717: Singleton EJB Bean. Removed Singleton EJB Bean Module. * BAEL-717: Singleton EJB Bean Changed the JNDI Lookup name. * BAEL-717: Singleton EJB Bean. Added the "singleton-ejb-bean" module. * BAEL-717: Singleton EJB Bean. Corrected Indentation. * BAEL-717: Singleton EJB Bean Corrected Indentation. * BAEL-717: Singleton EJB Bean. Corrected Indentation. * BAEL-717: Singleton EJB Bean. Corrected Indentation. * BAEL-717:Singleton EJB Bean. Corrected Indentation. * BAEL-717:Singleton EJB Bean. Corrected Indentation. * BAEL-717: Singleton Session Bean. Added class for Bean-Managed concurrrency. Changed class name from CountryStateCacheBean to CountryStateContainerManagedBean. * BAEL-717: Singleton Session Bean. Changing the name of the class to CountryStateContainerManagedBean. * BAEL-717: Singleton Session Bean. Added method to test Bean-Managed concurrency. * Get Latest. * deleting CountryStateBeanManagedBean for new file. * deleting CountryStateCacheBean for new file. * deleting CountryStateContainerManagedBean for new file. * BAEL-717: Singleton Session Bean. Adding file for Bean with Bean-Managed concurrency. Changing file name for original file to CountryStateContainerManagedBean with Container-Managed concurrency. * Deleting file for new checkin. * BAEL-717: Singleton Session Bean. Added test case for Bean-Manged concurrency. Change in JNDI names. * BAEL-717: Singleton Session Bean. Changed the assert method parameter order and null check in test cases. --- .../CountryStateBeanManagedBean.java | 39 +++++++++++++++++++ ... => CountryStateContainerManagedBean.java} | 2 +- .../CountryStateCacheBeanTest.java | 27 ++++++++----- 3 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateBeanManagedBean.java rename spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/{CountryStateCacheBean.java => CountryStateContainerManagedBean.java} (93%) diff --git a/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateBeanManagedBean.java b/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateBeanManagedBean.java new file mode 100644 index 0000000000..b437dc4d7f --- /dev/null +++ b/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateBeanManagedBean.java @@ -0,0 +1,39 @@ +package com.baeldung.singletonbean; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.ejb.ConcurrencyManagement; +import javax.ejb.ConcurrencyManagementType; +import javax.ejb.Lock; +import javax.ejb.LockType; +import javax.ejb.Singleton; +import javax.ejb.Startup; + +@Singleton +@Startup +@ConcurrencyManagement(ConcurrencyManagementType.BEAN) +public class CountryStateBeanManagedBean implements CountryState { + + private volatile Map> countryStatesMap = new HashMap>(); + + @PostConstruct + public synchronized void initialize() { + + List states = new ArrayList(); + states.add("Texas"); + states.add("Alabama"); + states.add("Alaska"); + states.add("Arizona"); + states.add("Arkansas"); + + countryStatesMap.put("UnitedStates", states); + } + + public List getStates(String country) { + return countryStatesMap.get(country); + } +} diff --git a/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateCacheBean.java b/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateContainerManagedBean.java similarity index 93% rename from spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateCacheBean.java rename to spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateContainerManagedBean.java index 3b4d80c88c..ee16285824 100644 --- a/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateCacheBean.java +++ b/spring-ejb/singleton-ejb-bean/src/main/java/com/baeldung/singletonbean/CountryStateContainerManagedBean.java @@ -16,7 +16,7 @@ import javax.ejb.Startup; @Singleton @Startup @ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) -public class CountryStateCacheBean implements CountryState { +public class CountryStateContainerManagedBean implements CountryState { private Map> countryStatesMap = new HashMap>(); diff --git a/spring-ejb/singleton-ejb-bean/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanTest.java b/spring-ejb/singleton-ejb-bean/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanTest.java index 988a4eeb6d..62412084bd 100644 --- a/spring-ejb/singleton-ejb-bean/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanTest.java +++ b/spring-ejb/singleton-ejb-bean/src/test/java/com/baeldung/singletonbean/CountryStateCacheBeanTest.java @@ -1,6 +1,7 @@ package com.baeldung.singletonbean; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertNotNull; import java.util.List; @@ -11,8 +12,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.baeldung.singletonbean.CountryState; - public class CountryStateCacheBeanTest { private EJBContainer ejbContainer = null; @@ -27,15 +26,25 @@ public class CountryStateCacheBeanTest { } @Test - public void whenCallGetStates_ReturnsStatesForCountry() throws Exception { + public void whenCallGetStatesFromContainerManagedBean_ReturnsStatesForCountry() throws Exception { - String[] actualStates = { "Texas", "Alabama", "Alaska", "Arizona", "Arkansas" }; + String[] expectedStates = { "Texas", "Alabama", "Alaska", "Arizona", "Arkansas" }; - CountryState countryStateBean = (CountryState) context.lookup("java:global/singleton-ejb-bean/CountryStateCacheBean"); - List states = countryStateBean.getStates("UnitedStates"); - if (states != null) { - assertArrayEquals(states.toArray(), actualStates); - } + CountryState countryStateBean = (CountryState) context.lookup("java:global/singleton-ejb-bean/CountryStateContainerManagedBean"); + List actualStates = countryStateBean.getStates("UnitedStates"); + assertNotNull(actualStates); + assertArrayEquals(expectedStates, actualStates.toArray()); + } + + @Test + public void whenCallGetStatesFromBeanManagedBean_ReturnsStatesForCountry() throws Exception { + + String[] expectedStates = { "Texas", "Alabama", "Alaska", "Arizona", "Arkansas" }; + + CountryState countryStateBean = (CountryState) context.lookup("java:global/singleton-ejb-bean/CountryStateBeanManagedBean"); + List actualStates = countryStateBean.getStates("UnitedStates"); + assertNotNull(actualStates); + assertArrayEquals(expectedStates, actualStates.toArray()); } @After