From 71af705cba00ac4cb88971049f9abe1e2c9f33e9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sat, 2 Sep 2017 21:52:41 +0200 Subject: [PATCH] Please rename/cherry-pick: - having to much session-scoped beans was a bad design idea anyway - on each new session, "tons" of EJB (JNDI lookup + business method invocation) will occur which will overrun the EJB container soon or later - also having JNDI lookup in PostConstruct-annotated methods was bad, too because it "confuses" the web container - while it is building proxy objects arround every managed class (like also now converters, JSF 2.3.x only) especially backing beans, there should be no JNDI lookup hapening - but initializing some lists for performance reasons is the right thing to do - maybe later some other annotation will be used instead, but for now it is fine - so let's make this painless and rename all session-scoped backing beans and re-annotate them with RequestScoped for now as this is also reduces memory foot-print MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- ...va => JobsBusinessDataWebRequestBean.java} | 79 +++++++-- ...JobsBusinessDataWebRequestController.java} | 2 +- .../JobsCompanyEmployeeWebRequestBean.java | 50 ++++-- .../JobsAdminContactWebRequestBean.java | 2 +- ...an.java => JobsContactWebRequestBean.java} | 101 +++++++----- ...a => JobsContactWebRequestController.java} | 2 +- ...va => JobsContactPhoneWebRequestBean.java} | 46 +++--- ...JobsContactPhoneWebRequestController.java} | 2 +- .../JobsAdminCountryWebRequestBean.java | 2 +- ...an.java => JobsCountryWebRequestBean.java} | 53 ++++-- ...a => JobsCountryWebRequestController.java} | 2 +- .../helper/JobsWebRequestHelperBean.java | 4 +- .../JobsMobileProviderWebRequestBean.java | 57 +++++-- .../phone/JobsAdminPhoneWebRequestBean.java | 2 +- ...Bean.java => JobsPhoneWebRequestBean.java} | 130 ++++++++++++--- ...ava => JobsPhoneWebRequestController.java} | 2 +- .../JobsUserProfileWebRequestBean.java | 4 +- .../user/JobsAdminUserWebRequestBean.java | 11 +- ...nBean.java => JobsUserWebRequestBean.java} | 155 ++++++++---------- ...java => JobsUserWebRequestController.java} | 2 +- ...va => JobsUserActivityWebRequestBean.java} | 37 +++-- ...JobsUserActivityWebRequestController.java} | 2 +- .../JobsConfirmationLinkWebRequestBean.java | 37 +---- ...ava => JobsEmailChangeWebRequestBean.java} | 44 +++-- ... JobsEmailChangeWebRequestController.java} | 2 +- .../login/JobsUserLoginWebSessionBean.java | 4 +- ...va => JobsUserRegisterWebRequestBean.java} | 22 +-- ...JobsUserRegisterWebRequestController.java} | 2 +- ...java => JobsResendLinkWebRequestBean.java} | 12 +- ...> JobsResendLinkWebRequestController.java} | 2 +- .../JobsBusinessContactConverter.java | 2 +- .../JobsCompanyEmployeeConverter.java | 2 +- .../JobsCompanyHeadquartersConverter.java | 2 +- .../contact/JobsContactConverter.java | 2 +- .../country/JobsCountryConverter.java | 2 +- .../converter/fax/JobsFaxNumberConverter.java | 2 +- .../landline/JobsLandLineNumberConverter.java | 2 +- .../mobile/JobsMobileNumberConverter.java | 2 +- .../JobsMobileProviderConverter.java | 4 +- .../converter/user/JobsUserConverter.java | 2 +- .../basicdata/JobsCompanyNameValidator.java | 2 +- .../JobsEmailAddressValidator.java | 2 +- .../validator/user/JobsUserIdValidator.java | 2 +- web/guest/user/user_list.xhtml | 34 ++-- 44 files changed, 571 insertions(+), 363 deletions(-) rename src/java/org/mxchange/jjobs/beans/business/basicdata/{JobsBusinessDataWebSessionBean.java => JobsBusinessDataWebRequestBean.java} (81%) rename src/java/org/mxchange/jjobs/beans/business/basicdata/{JobsBusinessDataWebSessionController.java => JobsBusinessDataWebRequestController.java} (93%) rename src/java/org/mxchange/jjobs/beans/contact/{JobsContactWebSessionBean.java => JobsContactWebRequestBean.java} (93%) rename src/java/org/mxchange/jjobs/beans/contact/{JobsContactWebSessionController.java => JobsContactWebRequestController.java} (97%) rename src/java/org/mxchange/jjobs/beans/contact/phone/{JobsContactPhoneWebSessionBean.java => JobsContactPhoneWebRequestBean.java} (92%) rename src/java/org/mxchange/jjobs/beans/contact/phone/{JobsContactPhoneWebSessionController.java => JobsContactPhoneWebRequestController.java} (93%) rename src/java/org/mxchange/jjobs/beans/country/{JobsCountryWebApplicationBean.java => JobsCountryWebRequestBean.java} (68%) rename src/java/org/mxchange/jjobs/beans/country/{JobsCountryWebApplicationController.java => JobsCountryWebRequestController.java} (93%) rename src/java/org/mxchange/jjobs/beans/phone/{JobsPhoneWebApplicationBean.java => JobsPhoneWebRequestBean.java} (87%) rename src/java/org/mxchange/jjobs/beans/phone/{JobsPhoneWebApplicationController.java => JobsPhoneWebRequestController.java} (96%) rename src/java/org/mxchange/jjobs/beans/user/{JobsUserWebSessionBean.java => JobsUserWebRequestBean.java} (91%) rename src/java/org/mxchange/jjobs/beans/user/{JobsUserWebSessionController.java => JobsUserWebRequestController.java} (98%) rename src/java/org/mxchange/jjobs/beans/user/activity/{JobsUserActivityWebApplicationBean.java => JobsUserActivityWebRequestBean.java} (95%) rename src/java/org/mxchange/jjobs/beans/user/activity/{JobsUserActivityWebApplicationController.java => JobsUserActivityWebRequestController.java} (91%) rename src/java/org/mxchange/jjobs/beans/user/email_address/{JobsEmailChangeWebSessionBean.java => JobsEmailChangeWebRequestBean.java} (89%) rename src/java/org/mxchange/jjobs/beans/user/email_address/{JobsEmailChangeWebSessionController.java => JobsEmailChangeWebRequestController.java} (94%) rename src/java/org/mxchange/jjobs/beans/user/register/{JobsUserRegisterWebSessionBean.java => JobsUserRegisterWebRequestBean.java} (95%) rename src/java/org/mxchange/jjobs/beans/user/register/{JobsUserRegisterWebSessionController.java => JobsUserRegisterWebRequestController.java} (93%) rename src/java/org/mxchange/jjobs/beans/user/resendlink/{JobsResendLinkWebSessionBean.java => JobsResendLinkWebRequestBean.java} (95%) rename src/java/org/mxchange/jjobs/beans/user/resendlink/{JobsResendLinkWebSessionController.java => JobsResendLinkWebRequestController.java} (93%) diff --git a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java similarity index 81% rename from src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java index 3a8b29ea..403f3804 100644 --- a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestBean.java @@ -17,11 +17,12 @@ package org.mxchange.jjobs.beans.business.basicdata; import java.text.MessageFormat; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; import javax.inject.Inject; import javax.inject.Named; @@ -29,9 +30,9 @@ import org.mxchange.jcontactsbusiness.basicdata.AdminBusinessDataSessionBeanRemo import org.mxchange.jcontactsbusiness.basicdata.BusinessBasicData; import org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote; import org.mxchange.jcontactsbusiness.events.basicdata.added.ObservableAdminAddedBusinessBasicDataEvent; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jcountry.data.Country; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController; /** * A business contact bean (controller) @@ -39,8 +40,8 @@ import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController; * @author Roland Häder */ @Named ("companyDataController") -@SessionScoped -public class JobsBusinessDataWebSessionBean extends BaseJobsController implements JobsBusinessDataWebSessionController { +@RequestScoped +public class JobsBusinessDataWebRequestBean extends BaseJobsController implements JobsBusinessDataWebRequestController { /** * Serial number @@ -56,7 +57,9 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement /** * A list of all registered companies (globally) */ - private final List businessContacts; + @Inject + @Cached (cacheName = "basicDataCache") + private transient Cache basicDataCache; /** * EJB for general basic business data purposes @@ -75,7 +78,7 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement private String companyEmailAddress; /** - * Company name + * Company cacheName */ private String companyName; @@ -118,12 +121,9 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement /** * Constructor */ - public JobsBusinessDataWebSessionBean () { + public JobsBusinessDataWebRequestBean () { // Call super constructor super(); - - // Init list - this.businessContacts = new LinkedList<>(); } /** @@ -155,7 +155,7 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement } // Add it to list - this.businessContacts.add(event.getBasicData()); + this.basicDataCache.put(event.getBasicData().getCompanyDataId(), event.getBasicData()); } /** @@ -165,8 +165,23 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement */ @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allCompanyBasicData () { + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.basicDataCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + // Return it - return this.businessContacts; + return list; } /** @@ -206,18 +221,18 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement } /** - * Getter for company name + * Getter for company cacheName *

- * @return Company name + * @return Company cacheName */ public String getCompanyName () { return this.companyName; } /** - * Setter for company name + * Setter for company cacheName *

- * @param companyName Company name + * @param companyName Company cacheName */ public void setCompanyName (final String companyName) { this.companyName = companyName; @@ -336,8 +351,36 @@ public class JobsBusinessDataWebSessionBean extends BaseJobsController implement */ @PostConstruct public void initializeList () { - // Init user's contact list - this.businessContacts.addAll(this.adminBusinessDataBean.allCompanyBasicData()); + // Is cache there? + if (!this.basicDataCache.iterator().hasNext()) { + // Get whole list + List list = this.businessDataBean.allCompanyBasicData(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final BusinessBasicData next = iterator.next(); + + // Add it to cache + this.basicDataCache.put(next.getCompanyDataId(), next); + } + } + } + + /** + * Clears this bean + */ + private void clear () { + // Clear all data: + this.setCompanyComments(null); + this.setCompanyEmailAddress(null); + this.setCompanyName(null); + this.setFaxAreaCode(null); + this.setFaxCountry(null); + this.setFaxNumber(null); + this.setLandLineAreaCode(null); + this.setLandLineCountry(null); + this.setLandLineNumber(null); } } diff --git a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebSessionController.java b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestController.java similarity index 93% rename from src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestController.java index 81c7619c..8e88d333 100644 --- a/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/business/basicdata/JobsBusinessDataWebRequestController.java @@ -23,6 +23,6 @@ import java.io.Serializable; *

* @author Roland Häder */ -public interface JobsBusinessDataWebSessionController extends Serializable { +public interface JobsBusinessDataWebRequestController extends Serializable { } diff --git a/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java index e5f255cf..9db724ff 100644 --- a/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/business/employee/JobsCompanyEmployeeWebRequestBean.java @@ -16,14 +16,18 @@ */ package org.mxchange.jjobs.beans.business.employee; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.annotation.PostConstruct; +import javax.cache.Cache; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; import javax.inject.Named; import org.mxchange.jcontactsbusiness.employee.CompanyEmployeeSessionBeanRemote; import org.mxchange.jcontactsbusiness.employee.Employee; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jjobs.beans.BaseJobsController; /** @@ -32,7 +36,7 @@ import org.mxchange.jjobs.beans.BaseJobsController; * @author Roland Häder */ @Named ("companyEmployeeController") -@SessionScoped +@RequestScoped public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implements JobsCompanyEmployeeWebSessionController { /** @@ -49,7 +53,9 @@ public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implem /** * List of all company employees */ - private final List companyEmployees; + @Inject + @Cached(cacheName = "companyEmployeeCache") + private transient Cache companyEmployeeCache; /** * Default constructor @@ -57,9 +63,6 @@ public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implem public JobsCompanyEmployeeWebRequestBean () { // Call super constructor super(); - - // Init list instance - this.companyEmployees = new LinkedList<>(); } /** @@ -69,7 +72,23 @@ public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implem */ @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allCompanyEmployees () { - return this.companyEmployees; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.companyEmployeeCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } /** @@ -77,11 +96,20 @@ public class JobsCompanyEmployeeWebRequestBean extends BaseJobsController implem */ @PostConstruct public void init () { - // Get all entries from remote bean - List employees = this.companyEmployeeBean.allCompanyEmployees(); + // Is cache there? + if (!this.companyEmployeeCache.iterator().hasNext()) { + // Get whole list + List list = this.companyEmployeeBean.allCompanyEmployees(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final Employee next = iterator.next(); - // Copy it to main list - this.companyEmployees.addAll(employees); + // Add it to cache + this.companyEmployeeCache.put(next.getEmployeeId(), next); + } + } } } diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java index 8ea899e9..eb870196 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsAdminContactWebRequestBean.java @@ -107,7 +107,7 @@ public class JobsAdminContactWebRequestBean extends BaseJobsController implement * General contact controller */ @Inject - private JobsContactWebSessionController contactController; + private JobsContactWebRequestController contactController; /** * Country instance diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java similarity index 93% rename from src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java index 142a4d23..2e795106 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestBean.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.Objects; import javax.annotation.PostConstruct; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; @@ -37,9 +37,10 @@ import org.mxchange.jcontacts.contact.UserContact; import org.mxchange.jcontacts.contact.title.PersonalTitle; import org.mxchange.jcontacts.events.contact.add.ObservableAdminAddedContactEvent; import org.mxchange.jcontacts.events.contact.update.ObservableAdminUpdatedContactEvent; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jcountry.data.Country; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController; import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.phonenumbers.fax.FaxNumber; @@ -62,8 +63,8 @@ import org.mxchange.juserlogincore.exceptions.UserPasswordMismatchException; * @author Roland Häder */ @Named ("contactController") -@SessionScoped -public class JobsContactWebSessionBean extends BaseJobsController implements JobsContactWebSessionController { +@RequestScoped +public class JobsContactWebRequestBean extends BaseJobsController implements JobsContactWebRequestController { /** * Serial number @@ -99,7 +100,9 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job /** * Contact list */ - private final List contactList; + @Inject + @Cached (cacheName = "contactsCache") + private transient Cache contactsCache; /** * Country instance @@ -114,7 +117,9 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job /** * Email address list */ - private final List emailAddressList; + @Inject + @Cached (cacheName = "emailAddressCache") + private transient Cache emailAddressCache; /** * Email address repeated @@ -215,7 +220,7 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job * Regular user controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Login bean (controller) @@ -231,13 +236,9 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job /** * Default constructor */ - public JobsContactWebSessionBean () { + public JobsContactWebRequestBean () { // Call super constructor super(); - - // Init lists/maps - this.contactList = new LinkedList<>(); - this.emailAddressList = new LinkedList<>(); } /** @@ -278,9 +279,6 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job * @param event Event being fired */ public void afterAdminAddedUserEvent (@Observes final ObservableAdminAddedUserEvent event) { - // Trace message - //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("contactController.afterAdminAddedUserEvent(): event={0} - CALLED!", event)); //NOI18N - // event should not be null if (null == event) { // Throw NPE @@ -357,10 +355,7 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job this.uniqueAddContact(event.getUpdatedContact()); // Add email address to list - this.emailAddressList.add(event.getUpdatedContact().getContactEmailAddress()); - - // Trace message - //* NOISY-DEBUG: */ System.out.println("contactController.afterAdminUpdatedContactDataEvent(): EXIT!"); //NOI18N + this.emailAddressCache.put(event.getUpdatedContact().getContactId(), event.getUpdatedContact().getContactEmailAddress()); } /** @@ -453,8 +448,23 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allContacts () { - // Return un-modified list - return this.contactList; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.contactsCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } @Override @@ -1014,20 +1024,31 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job */ @PostConstruct public void init () { - // Get full email address list for reducing EJB calls - this.emailAddressList.addAll(this.contactBean.getEmailAddressList()); - // Get all contacts - List allContacts = this.contactBean.getAllContacts(); - - // Get full contact list - this.contactList.addAll(allContacts); + final List selectable = new LinkedList<>(); + + // Is cache there? + if (!this.contactsCache.iterator().hasNext()) { + // Get whole list + List list = this.contactBean.allContacts(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final Contact next = iterator.next(); + + // Add it to cache + this.contactsCache.put(next.getContactId(), next); + this.emailAddressCache.put(next.getContactId(), next.getContactEmailAddress()); + selectable.add(next); + } + } // Get all users List allUsers = this.userController.allUsers(); // Get iterator - Iterator iterator = allContacts.iterator(); + Iterator iterator = selectable.iterator(); // Loop through it while (iterator.hasNext()) { @@ -1052,7 +1073,7 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job } // Set contact list - this.selectableContacts = allContacts; + this.selectableContacts = selectable; } @Override @@ -1070,7 +1091,7 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job } // Determine it - return ((this.emailAddressList instanceof List) && (this.emailAddressList.contains(contact.getContactEmailAddress()))); + return ((this.emailAddressCache instanceof List) && (this.emailAddressCache.containsKey(contact.getContactId()))); } @Override @@ -1137,13 +1158,13 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job */ private void addUserNameEmailAddress (final Contact contact) { // Make sure the entry is not added yet - if (this.emailAddressList.contains(contact.getContactEmailAddress())) { + if (this.emailAddressCache.containsKey(contact.getContactId())) { // Already added throw new IllegalArgumentException(MessageFormat.format("Email address {0} already added.", contact.getContactEmailAddress())); //NOI18N } // Add email addres - this.emailAddressList.add(contact.getContactEmailAddress()); + this.emailAddressCache.put(contact.getContactId(), contact.getContactEmailAddress()); } /** @@ -1256,13 +1277,13 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job } // Remove from general list - if (!this.contactList.remove(contact)) { + if (!this.contactsCache.remove(contact.getContactId())) { // Did not remove contact throw new IllegalStateException(MessageFormat.format("contact {0} was not removed.", contact.getContactId())); //NOI18N } // Remove from other lists - this.emailAddressList.remove(contact.getContactEmailAddress()); + this.emailAddressCache.remove(contact.getContactId()); } /** @@ -1285,23 +1306,23 @@ public class JobsContactWebSessionBean extends BaseJobsController implements Job } // Get iterator from list - Iterator iterator = this.contactList.iterator(); + Iterator> iterator = this.contactsCache.iterator(); // "Walk" through all entries while (iterator.hasNext()) { // Get next element - Contact next = iterator.next(); + Cache.Entry next = iterator.next(); // Is id number the same? - if (Objects.equals(contact.getContactId(), next.getContactId())) { + if (Objects.equals(contact.getContactId(), next.getKey())) { // Found entry, so remove it and abort - this.removeContact(next); + this.removeContact(next.getValue()); break; } } // Add contact to list - this.contactList.add(contact); + this.contactsCache.put(contact.getContactId(), contact); } } diff --git a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionController.java b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestController.java similarity index 97% rename from src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestController.java index 218736b5..d8dd7d7c 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/contact/JobsContactWebRequestController.java @@ -25,7 +25,7 @@ import org.mxchange.jcontacts.contact.Contact; *

* @author Roland Häder */ -public interface JobsContactWebSessionController extends Serializable { +public interface JobsContactWebRequestController extends Serializable { /** * Minimum password length diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java similarity index 92% rename from src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java index dcd8e977..865a63cc 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestBean.java @@ -17,12 +17,10 @@ package org.mxchange.jjobs.beans.contact.phone; import java.text.MessageFormat; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Objects; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; import javax.inject.Inject; import javax.inject.Named; @@ -32,8 +30,8 @@ import org.mxchange.jcontacts.events.contact.update.ObservableAdminUpdatedContac import org.mxchange.jcontacts.events.fax.unlinked.ObservableAdminUnlinkedFaxNumberEvent; import org.mxchange.jcontacts.events.landline.unlinked.ObservableAdminUnlinkedLandLineNumberEvent; import org.mxchange.jcontacts.events.mobile.unlinked.ObservableAdminUnlinkedMobileNumberEvent; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent; import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent; import org.mxchange.jphone.events.mobile.created.ObservableCreatedMobileNumberEvent; @@ -42,6 +40,7 @@ import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber; import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber; import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; +import org.mxchange.jjobs.beans.contact.JobsContactWebRequestController; /** * A general contact bean (controller) @@ -49,8 +48,8 @@ import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; * @author Roland Häder */ @Named ("contactPhoneController") -@SessionScoped -public class JobsContactPhoneWebSessionBean extends BaseJobsController implements JobsContactPhoneWebSessionController { +@RequestScoped +public class JobsContactPhoneWebRequestBean extends BaseJobsController implements JobsContactPhoneWebRequestController { /** * Serial number @@ -61,14 +60,16 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement * General contact controller */ @Inject - private JobsContactWebSessionController contactController; + private JobsContactWebRequestController contactController; /** * "Cache" for contact's mobile, land-line and fax numbers. Currently one * per each type is supported. Maybe later this will change into a OneToMany * relationship (one contact, many numbers). */ - private final Map> contacts; + @Inject + @Cached(cacheName = "contactsPhoneCache") + private transient Cache> contactsPhoneCache; /** * fax number @@ -88,12 +89,9 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement /** * Default constructor */ - public JobsContactPhoneWebSessionBean () { + public JobsContactPhoneWebRequestBean () { // Call super constructor super(); - - // Init lists/maps - this.contacts = new HashMap<>(10); } /** @@ -169,7 +167,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement } // Remove it from list - this.contacts.remove(event.getUnlinkedFaxNumber()); + this.contactsPhoneCache.remove(event.getUnlinkedFaxNumber()); // Clear all data this.clear(); @@ -197,7 +195,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement } // Remove it from list - this.contacts.remove(event.getUnlinkedLandLineNumber()); + this.contactsPhoneCache.remove(event.getUnlinkedLandLineNumber()); // Clear all data this.clear(); @@ -225,7 +223,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement } // Remove it from list - this.contacts.remove(event.getUnlinkedMobileNumber()); + this.contactsPhoneCache.remove(event.getUnlinkedMobileNumber()); // Clear all data this.clear(); @@ -344,9 +342,9 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement DialableFaxNumber number = this.getFaxNumber(); // Is cache there? - if (this.contacts.containsKey(number)) { + if (this.contactsPhoneCache.containsKey(number)) { // Return cached version - return this.contacts.get(number); + return this.contactsPhoneCache.get(number); } else { // Ask bean List list = new LinkedList<>(); @@ -361,7 +359,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement } // Store result in cache - this.contacts.put(number, list); + this.contactsPhoneCache.put(number, list); // Return now-cached list return list; @@ -378,9 +376,9 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement DialableLandLineNumber number = this.getLandLineNumber(); // Is cache there? - if (this.contacts.containsKey(number)) { + if (this.contactsPhoneCache.containsKey(number)) { // Return cached version - return this.contacts.get(number); + return this.contactsPhoneCache.get(number); } else { // Ask bean List list = new LinkedList<>(); @@ -395,7 +393,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement } // Store result in cache - this.contacts.put(number, list); + this.contactsPhoneCache.put(number, list); // Return now-cached list return list; @@ -412,9 +410,9 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement DialableMobileNumber number = this.getMobileNumber(); // Is cache there? - if (this.contacts.containsKey(number)) { + if (this.contactsPhoneCache.containsKey(number)) { // Return cached version - return this.contacts.get(number); + return this.contactsPhoneCache.get(number); } else { // Ask bean List list = new LinkedList<>(); @@ -429,7 +427,7 @@ public class JobsContactPhoneWebSessionBean extends BaseJobsController implement } // Store result in cache - this.contacts.put(number, list); + this.contactsPhoneCache.put(number, list); // Return now-cached list return list; diff --git a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionController.java b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestController.java similarity index 93% rename from src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestController.java index 09375960..99ae852a 100644 --- a/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/contact/phone/JobsContactPhoneWebRequestController.java @@ -23,6 +23,6 @@ import java.io.Serializable; *

* @author Roland Häder */ -public interface JobsContactPhoneWebSessionController extends Serializable { +public interface JobsContactPhoneWebRequestController extends Serializable { } diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java index d7c4d9ac..4c5c440b 100644 --- a/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/country/JobsAdminCountryWebRequestBean.java @@ -75,7 +75,7 @@ public class JobsAdminCountryWebRequestBean extends BaseJobsController implement * Regular country controller */ @Inject - private JobsCountryWebApplicationController countryController; + private JobsCountryWebRequestController countryController; /** * Local dial prefix diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java similarity index 68% rename from src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java rename to src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java index 967e1abb..2d659480 100644 --- a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationBean.java +++ b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestBean.java @@ -17,12 +17,16 @@ package org.mxchange.jjobs.beans.country; import java.text.MessageFormat; +import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.EJB; -import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; +import javax.inject.Inject; import javax.inject.Named; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jcountry.data.Country; import org.mxchange.jcountry.data.CountrySingletonBeanRemote; import org.mxchange.jcountry.events.ObservableAdminAddedCountryEvent; @@ -34,8 +38,8 @@ import org.mxchange.jjobs.beans.BaseJobsController; * @author Roland Häder */ @Named ("countryController") -@ApplicationScoped -public class JobsCountryWebApplicationBean extends BaseJobsController implements JobsCountryWebApplicationController { +@RequestScoped +public class JobsCountryWebRequestBean extends BaseJobsController implements JobsCountryWebRequestController { /** * Serial number @@ -51,12 +55,14 @@ public class JobsCountryWebApplicationBean extends BaseJobsController implements /** * List of all countries */ - private List countryList; + @Inject + @Cached (cacheName = "countryCache") + private transient Cache countryCache; /** * Default constructor */ - public JobsCountryWebApplicationBean () { + public JobsCountryWebRequestBean () { // Call super constructor super(); } @@ -84,14 +90,29 @@ public class JobsCountryWebApplicationBean extends BaseJobsController implements } // Add the event - this.countryList.add(event.getAddedCountry()); + this.countryCache.put(event.getAddedCountry().getCountryId(), event.getAddedCountry()); } @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allCountries () { - // Return "cached" version - return this.countryList; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.countryCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } /** @@ -99,8 +120,20 @@ public class JobsCountryWebApplicationBean extends BaseJobsController implements */ @PostConstruct public void init () { - // "Cache" country list as this will not change so often. - this.countryList = this.countryBean.allCountries(); + // Is cache there? + if (!this.countryCache.iterator().hasNext()) { + // Get whole list + List list = this.countryBean.allCountries(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final Country next = iterator.next(); + + // Add it to cache + this.countryCache.put(next.getCountryId(), next); + } + } } } diff --git a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationController.java b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestController.java similarity index 93% rename from src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationController.java rename to src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestController.java index 98d915fb..31457bb5 100644 --- a/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebApplicationController.java +++ b/src/java/org/mxchange/jjobs/beans/country/JobsCountryWebRequestController.java @@ -25,7 +25,7 @@ import org.mxchange.jcountry.data.Country; *

* @author Roland Häder */ -public interface JobsCountryWebApplicationController extends Serializable { +public interface JobsCountryWebRequestController extends Serializable { /** * A list of all countries diff --git a/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java b/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java index 34a8014c..d5f1bfab 100644 --- a/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java +++ b/src/java/org/mxchange/jjobs/beans/helper/JobsWebRequestHelperBean.java @@ -29,7 +29,7 @@ import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.contact.JobsAdminContactWebRequestController; import org.mxchange.jjobs.beans.phone.JobsAdminPhoneWebRequestController; import org.mxchange.jjobs.beans.user.JobsAdminUserWebRequestController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; import org.mxchange.jphone.events.fax.created.CreatedFaxNumberEvent; import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent; import org.mxchange.jphone.events.landline.created.CreatedLandLineNumberEvent; @@ -137,7 +137,7 @@ public class JobsWebRequestHelperBean extends BaseJobsController implements Jobs * Regular user controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Event for when a user instance was created diff --git a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java index 30ea72ae..cc71c8d4 100644 --- a/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/mobileprovider/JobsMobileProviderWebRequestBean.java @@ -17,12 +17,17 @@ package org.mxchange.jjobs.beans.mobileprovider; import java.text.MessageFormat; +import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import javax.annotation.PostConstruct; +import javax.cache.Cache; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; +import javax.inject.Inject; import javax.inject.Named; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jphone.events.mobileprovider.added.AdminAddedMobileProviderEvent; import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider; @@ -34,7 +39,7 @@ import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBe * @author Roland Häder */ @Named ("mobileProviderController") -@SessionScoped +@RequestScoped public class JobsMobileProviderWebRequestBean extends BaseJobsController implements JobsMobileProviderWebRequestController { /** @@ -43,15 +48,17 @@ public class JobsMobileProviderWebRequestBean extends BaseJobsController impleme private static final long serialVersionUID = 15_869_423_671_950_276L; /** - * "Cached" list of mobile providers + * Remote EJB for mobile providers (regular) */ - private List mobileProviders; + @EJB (lookup = "java:global/jjobs-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote") + private MobileProviderSingletonBeanRemote mobileProviderBean; /** - * Remote EJB for mobile providers (regular) + * "Cached" list of mobile providers */ - @EJB (lookup = "java:global/jjobs-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote") - private MobileProviderSingletonBeanRemote mobileRemoteBean; + @Inject + @Cached (cacheName = "mobileProviderCache") + private transient Cache mobileProviderCache; /** * Default constructor @@ -84,13 +91,29 @@ public class JobsMobileProviderWebRequestBean extends BaseJobsController impleme } // Add it to the list - this.mobileProviders.add(event.getAddedMobileProvider()); + this.mobileProviderCache.put(event.getAddedMobileProvider().getProviderId(), event.getAddedMobileProvider()); } @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allMobileProviders () { - return this.mobileProviders; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.mobileProviderCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } /** @@ -98,8 +121,20 @@ public class JobsMobileProviderWebRequestBean extends BaseJobsController impleme */ @PostConstruct public void init () { - // Init list of mobile providers - this.mobileProviders = this.mobileRemoteBean.allMobileProvider(); + // Is cache there? + if (!this.mobileProviderCache.iterator().hasNext()) { + // Get whole list + List list = this.mobileProviderBean.allMobileProviders(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final MobileProvider next = iterator.next(); + + // Add it to cache + this.mobileProviderCache.put(next.getProviderId(), next); + } + } } } diff --git a/src/java/org/mxchange/jjobs/beans/phone/JobsAdminPhoneWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/phone/JobsAdminPhoneWebRequestBean.java index 571bb103..26ae6a46 100644 --- a/src/java/org/mxchange/jjobs/beans/phone/JobsAdminPhoneWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/phone/JobsAdminPhoneWebRequestBean.java @@ -155,7 +155,7 @@ public class JobsAdminPhoneWebRequestBean extends BaseJobsController implements * Generic hone controller */ @Inject - private JobsPhoneWebApplicationController phoneController; + private JobsPhoneWebRequestController phoneController; /** * Country (for dial prefix) diff --git a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java similarity index 87% rename from src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebApplicationBean.java rename to src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java index 664ca383..c945b114 100644 --- a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebApplicationBean.java +++ b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestBean.java @@ -17,13 +17,15 @@ package org.mxchange.jjobs.beans.phone; import java.text.MessageFormat; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Objects; import javax.annotation.PostConstruct; import javax.ejb.EJB; -import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; +import javax.inject.Inject; import javax.inject.Named; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.events.contact.add.ObservableAdminAddedContactEvent; @@ -31,6 +33,7 @@ import org.mxchange.jcontacts.events.contact.update.ObservableAdminUpdatedContac import org.mxchange.jcontacts.events.fax.linked.ObservableAdminLinkedFaxNumberEvent; import org.mxchange.jcontacts.events.landline.linked.ObservableAdminLinkedLandLineNumberEvent; import org.mxchange.jcontacts.events.mobile.linked.ObservableAdminLinkedMobileNumberEvent; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jphone.events.fax.deleted.AdminDeletedFaxNumberEvent; import org.mxchange.jphone.events.fax.updated.AdminUpdatedFaxNumberEvent; @@ -50,8 +53,8 @@ import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; * @author Roland Häder */ @Named ("phoneController") -@ApplicationScoped -public class JobsPhoneWebApplicationBean extends BaseJobsController implements JobsPhoneWebApplicationController { +@RequestScoped +public class JobsPhoneWebRequestBean extends BaseJobsController implements JobsPhoneWebRequestController { /** * Serial number @@ -61,17 +64,23 @@ public class JobsPhoneWebApplicationBean extends BaseJobsController implements J /** * All fax numbers */ - private final List faxNumbers; + @Inject + @Cached(cacheName = "faxNumberCache") + private transient Cache faxNumberCache; /** * All land-line numbers */ - private final List landLineNumbers; + @Inject + @Cached(cacheName = "landLineNumberCache") + private transient Cache landLineNumberCache; /** * All mobile numbers */ - private final List mobileNumbers; + @Inject + @Cached(cacheName = "mobileNumberCache") + private transient Cache mobileNumberCache; /** * General EJB for phone numbers @@ -82,14 +91,9 @@ public class JobsPhoneWebApplicationBean extends BaseJobsController implements J /** * Default constructor */ - public JobsPhoneWebApplicationBean () { + public JobsPhoneWebRequestBean () { // Call super constructor super(); - - // Init all lists - this.mobileNumbers = new LinkedList<>(); - this.faxNumbers = new LinkedList<>(); - this.landLineNumbers = new LinkedList<>(); } /** @@ -478,19 +482,67 @@ public class JobsPhoneWebApplicationBean extends BaseJobsController implements J @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allFaxNumbers () { - return this.faxNumbers; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.faxNumberCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allLandLineNumbers () { - return this.landLineNumbers; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.landLineNumberCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allMobileNumbers () { - return this.mobileNumbers; + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.mobileNumberCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } + + // Return it + return list; } /** @@ -498,10 +550,50 @@ public class JobsPhoneWebApplicationBean extends BaseJobsController implements J */ @PostConstruct public void init () { - // All phone numbers - this.allMobileNumbers().addAll(this.phoneBean.allMobileNumbers()); - this.allFaxNumbers().addAll(this.phoneBean.allFaxNumbers()); - this.allLandLineNumbers().addAll(this.phoneBean.allLandLineNumbers()); + // Is cache there? + if (!this.faxNumberCache.iterator().hasNext()) { + // Get whole list + List list = this.phoneBean.allFaxNumbers(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final DialableFaxNumber next = iterator.next(); + + // Add it to cache + this.faxNumberCache.put(next.getPhoneId(), next); + } + } + + // Is cache there? + if (!this.landLineNumberCache.iterator().hasNext()) { + // Get whole list + List list = this.phoneBean.allLandLineNumbers(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final DialableLandLineNumber next = iterator.next(); + + // Add it to cache + this.landLineNumberCache.put(next.getPhoneId(), next); + } + } + + // Is cache there? + if (!this.mobileNumberCache.iterator().hasNext()) { + // Get whole list + List list = this.phoneBean.allMobileNumbers(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final DialableMobileNumber next = iterator.next(); + + // Add it to cache + this.mobileNumberCache.put(next.getPhoneId(), next); + } + } } /** diff --git a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebApplicationController.java b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestController.java similarity index 96% rename from src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebApplicationController.java rename to src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestController.java index 93727ed8..3df407b0 100644 --- a/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebApplicationController.java +++ b/src/java/org/mxchange/jjobs/beans/phone/JobsPhoneWebRequestController.java @@ -28,7 +28,7 @@ import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber; *

* @author Roland Häder */ -public interface JobsPhoneWebApplicationController extends Serializable { +public interface JobsPhoneWebRequestController extends Serializable { /** * Returns a list of all mobile numbers. For performance reasons, the diff --git a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java index f78c697d..68488d2e 100644 --- a/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/profile/JobsUserProfileWebRequestBean.java @@ -23,11 +23,11 @@ import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; import javax.inject.Named; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController; import org.mxchange.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.model.user.User; import org.mxchange.jusercore.model.user.profilemodes.ProfileMode; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; /** * A web request bean for user profiles @@ -47,7 +47,7 @@ public class JobsUserProfileWebRequestBean extends BaseJobsController implements * User controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Login controller diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java index b6a1c79c..eb78c032 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java @@ -33,7 +33,7 @@ import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcoreee.utils.FacesUtils; import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.contact.JobsAdminContactWebRequestController; -import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; +import org.mxchange.jjobs.beans.contact.JobsContactWebRequestController; import org.mxchange.jjobs.beans.localization.JobsLocalizationSessionController; import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent; import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; @@ -107,7 +107,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J * Regular contact controller */ @Inject - private JobsContactWebSessionController contactController; + private JobsContactWebRequestController contactController; /** * Event being fired when admin has deleted user @@ -144,7 +144,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J * Regular user controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Delete reason @@ -214,7 +214,6 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J * @return Redirect outcome */ public String addUser () { - System.out.println("addUser: this.contact=" + this.getContact()); // As the form cannot validate the data (required="true"), check it here if (this.getUserName() == null) { // Throw NPE @@ -277,7 +276,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J return ""; //NOI18N } else if ((this.getUserPassword() == null && (this.getUserPasswordRepeat() == null)) || ((this.getUserPassword().isEmpty()) && (this.getUserPasswordRepeat().isEmpty()))) { // Empty password entered, then generate one - password = UserLoginUtils.createRandomPassword(JobsUserWebSessionController.MINIMUM_PASSWORD_LENGTH); + password = UserLoginUtils.createRandomPassword(JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH); } else if (!this.isSamePasswordEntered()) { // Both passwords don't match throw new FaceletException(new UserPasswordRepeatMismatchException(newUser)); @@ -288,7 +287,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsController implements J // The password should not be null and at least 5 characters long assert (password != null) : "password is null"; //NOI18N - assert (password.length() >= JobsUserWebSessionController.MINIMUM_PASSWORD_LENGTH) : "Password is not long enough."; //NOI18N + assert (password.length() >= JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH) : "Password is not long enough."; //NOI18N // Encrypt password and set it newUser.setUserEncryptedPassword(UserLoginUtils.encryptPassword(password)); diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java similarity index 91% rename from src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java index 5c9c1a9c..435417fc 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestBean.java @@ -18,6 +18,7 @@ package org.mxchange.jjobs.beans.user; import java.text.MessageFormat; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Objects; @@ -33,8 +34,9 @@ import javax.inject.Inject; import javax.inject.Named; import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcoreee.events.locale.ObservableLocaleChangeEvent; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; +import org.mxchange.jjobs.beans.contact.JobsContactWebRequestController; import org.mxchange.jjobs.beans.features.JobsFeaturesWebApplicationController; import org.mxchange.jjobs.beans.localization.JobsLocalizationSessionController; import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController; @@ -69,7 +71,7 @@ import org.mxchange.juserlogincore.login.UserLoginUtils; */ @Named ("userController") @SessionScoped -public class JobsUserWebSessionBean extends BaseJobsController implements JobsUserWebSessionController { +public class JobsUserWebRequestBean extends BaseJobsController implements JobsUserWebRequestController { /** * Serial number @@ -80,7 +82,7 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs * General contact controller */ @Inject - private JobsContactWebSessionController contactController; + private JobsContactWebRequestController contactController; /** * Features controller @@ -113,14 +115,16 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs private UserSessionBeanRemote userBean; /** - * User id + * A list of all user profiles */ - private Long userId; + @Inject + @Cached (cacheName = "userCache") + private transient Cache userCache; /** - * A list of all user profiles + * User id */ - private List userList; + private Long userId; /** * Login controller (bean) @@ -136,7 +140,9 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs /** * User name list */ - private List userNameList; + @Inject + @Cached (cacheName = "userNameCache") + private transient Cache userNameCache; /** * User password (clear-text from web form) @@ -153,18 +159,10 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs */ private ProfileMode userProfileMode; - /** - * A list of all public user profiles - *

- * @TODO Hmm, makes that sense? Having visible user list in current - * (session-scoped) user's visible user list? - */ - private List visibleUserList; - /** * Default constructor */ - public JobsUserWebSessionBean () { + public JobsUserWebRequestBean () { // Call super constructor super(); } @@ -438,12 +436,6 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs // Copy all data to this bean this.copyUser(loggedInUser); - - // Is the user visible? - if (Objects.equals(loggedInUser.getUserProfileMode(), ProfileMode.PUBLIC)) { - // Yes, then add user - this.visibleUserList.add(loggedInUser); - } } /** @@ -505,12 +497,6 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs // Add user name this.addUserName(registeredUser); - // Is the account public? - if (Objects.equals(registeredUser.getUserProfileMode(), ProfileMode.PUBLIC)) { - // Also add it to this list - this.visibleUserList.add(registeredUser); - } - // Set user id again this.setUserId(registeredUser.getUserId()); } @@ -569,15 +555,23 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs @Override @SuppressWarnings ("ReturnOfCollectionOrArrayField") public List allUsers () { - // Return it - return this.userList; - } + // Init list + List list = new LinkedList<>(); + + // Get iterator + Iterator> iterator = this.userCache.iterator(); + + // Loop over all + while (iterator.hasNext()) { + // Get next entry + final Cache.Entry next = iterator.next(); + + // Add value to list + list.add(next.getValue()); + } - @Override - @SuppressWarnings ("ReturnOfCollectionOrArrayField") - public List allVisibleUsers () { // Return it - return this.visibleUserList; + return list; } /** @@ -633,7 +627,7 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs this.setUserProfileMode(ProfileMode.INVISIBLE); // Generate random password - String randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebSessionController.MINIMUM_PASSWORD_LENGTH); + String randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH); // Set random password this.setUserPassword(randomPassword); @@ -831,19 +825,20 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs */ @PostConstruct public void init () { - // Initialize user list - this.userList = this.userBean.allUsers(); - - // Get full user name list for reducing EJB calls - this.userNameList = this.userBean.getUserNameList(); - - // Is the user logged-in? - if (this.userLoginController.isUserLoggedIn()) { - // Is logged-in, so load also users visible to memebers - this.visibleUserList = this.userBean.allMemberPublicVisibleUsers(); - } else { - // Initialize user list - this.visibleUserList = this.userBean.allPublicUsers(); + // Is cache there? + if (!this.userCache.iterator().hasNext()) { + // Get whole list + List list = this.userBean.allUsers(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final User next = iterator.next(); + + // Add it to cache + this.userCache.put(next.getUserId(), next); + this.userNameCache.put(next.getUserId(), next.getUserName()); + } } } @@ -936,7 +931,7 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs @Override public boolean isUserNameRegistered (final User user) { - return ((this.userNameList instanceof List) && (this.userNameList.contains(user.getUserName()))); + return ((this.userNameCache instanceof List) && (this.userNameCache.containsKey(user.getUserId()))); } @Override @@ -951,11 +946,6 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs return isRequired; } - @Override - public boolean isVisibleUserFound () { - return ((this.visibleUserList instanceof List) && (this.visibleUserList.size() > 0)); - } - @Override public User lookupUserByEmailAddress (final String emailAddress) throws UserEmailAddressNotFoundException { // Parameter must be valid @@ -971,23 +961,23 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs User user = null; // Try to lookup it in visible user list - for (final Iterator iterator = this.userList.iterator(); iterator.hasNext();) { + for (final Iterator> iterator = this.userCache.iterator(); iterator.hasNext();) { // Get next user - User next = iterator.next(); + Cache.Entry next = iterator.next(); // Contact should be set - if (next.getUserContact() == null) { + if (next.getValue().getUserContact() == null) { // Contact is null - throw new NullPointerException(MessageFormat.format("next.userContact is null for user id {0}", next.getUserId())); //NOI18N - } else if (next.getUserContact().getContactEmailAddress() == null) { + throw new NullPointerException(MessageFormat.format("next.userContact is null for user id {0}", next.getKey())); //NOI18N + } else if (next.getValue().getUserContact().getContactEmailAddress() == null) { // Email address should be set - throw new NullPointerException(MessageFormat.format("next.userContact.contactEmailAddress is null for user id {0}", next.getUserId())); //NOI18N + throw new NullPointerException(MessageFormat.format("next.userContact.contactEmailAddress is null for user id {0}", next.getKey())); //NOI18N } // Is the email address found? - if (Objects.equals(next.getUserContact().getContactEmailAddress(), emailAddress)) { + if (Objects.equals(next.getValue().getUserContact().getContactEmailAddress(), emailAddress)) { // Copy to other variable - user = next; + user = next.getValue(); break; } } @@ -1017,14 +1007,14 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs User user = null; // Try to lookup it in visible user list - for (final Iterator iterator = this.userList.iterator(); iterator.hasNext();) { + for (final Iterator> iterator = this.userCache.iterator(); iterator.hasNext();) { // Get next user - User next = iterator.next(); + Cache.Entry next = iterator.next(); // Is the user id found? - if (Objects.equals(next.getUserId(), userId)) { + if (Objects.equals(next.getKey(), userId)) { // Copy to other variable - user = next; + user = next.getValue(); break; } } @@ -1047,13 +1037,13 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs */ private void addUserName (final User user) { // Make sure the entry is not added yet - if (this.userNameList.contains(user.getUserName())) { + if (this.userNameCache.containsKey(user.getUserId())) { // Abort here throw new IllegalArgumentException(MessageFormat.format("User name {0} already added.", user.getUserName())); //NOI18N } // Add user name - this.userNameList.add(user.getUserName()); + this.userNameCache.put(user.getUserId(), user.getUserName()); } /** @@ -1146,11 +1136,10 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs } // Remove it from lists - this.userList.remove(user); - this.visibleUserList.remove(user); + this.userCache.remove(user.getUserId()); // Remove name from list - this.userNameList.remove(user.getUserName()); + this.userNameCache.remove(user.getUserId()); } /** @@ -1180,24 +1169,8 @@ public class JobsUserWebSessionBean extends BaseJobsController implements JobsUs throw new NullPointerException(MessageFormat.format("user.userContact.contactId={0} is invalid.", user.getUserContact().getContactId())); //NOI18N } - // Get iterator from list - Iterator iterator = this.userList.iterator(); - - // "Walk" through all entries - while (iterator.hasNext()) { - // Get next element - User next = iterator.next(); - - // Is user id number the same? - if (Objects.equals(user.getUserId(), next.getUserId())) { - // Found entry, so remove it and abort - this.userList.remove(next); - break; - } - } - - // Re-add user - this.userList.add(user); + // Add/update user + this.userCache.put(user.getUserId(), user); } } diff --git a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java similarity index 98% rename from src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java index 8a754557..0c97da20 100644 --- a/src/java/org/mxchange/jjobs/beans/user/JobsUserWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/user/JobsUserWebRequestController.java @@ -28,7 +28,7 @@ import org.mxchange.jusercore.model.user.User; *

* @author Roland Häder */ -public interface JobsUserWebSessionController extends Serializable { +public interface JobsUserWebRequestController extends Serializable { /** * Minimum password length diff --git a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebApplicationBean.java b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java similarity index 95% rename from src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebApplicationBean.java rename to src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java index 0af72e52..5f397216 100644 --- a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebApplicationBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestBean.java @@ -19,15 +19,15 @@ package org.mxchange.jjobs.beans.user.activity; import java.text.MessageFormat; import java.util.Collections; import java.util.GregorianCalendar; -import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; import javax.annotation.PostConstruct; import javax.ejb.EJB; -import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Observes; +import javax.inject.Inject; import javax.inject.Named; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent; import org.mxchange.jusercore.events.user.created.ObservableCreatedUserEvent; @@ -55,8 +55,8 @@ import org.mxchange.juserlogincore.events.user.password_change.ObservableUpdated * @author Roland Häder */ @Named ("userActivityController") -@ApplicationScoped -public class JobsUserActivityWebApplicationBean extends BaseJobsController implements JobsUserActivityWebApplicationController { +@RequestScoped +public class JobsUserActivityWebRequestBean extends BaseJobsController implements JobsUserActivityWebRequestController { /** * Serial number @@ -77,15 +77,17 @@ public class JobsUserActivityWebApplicationBean extends BaseJobsController imple /** * "Cache" for activity log per user */ - private final Map> usersActivity; + @Inject + @Cached(cacheName = "usersActivityCache") + private transient Cache> usersActivityCache; /** * Default constructor */ @SuppressWarnings ("CollectionWithoutInitialCapacity") - public JobsUserActivityWebApplicationBean () { - // Init cache - this.usersActivity = new LinkedHashMap<>(); + public JobsUserActivityWebRequestBean () { + // Call super constructor + super(); } /** @@ -441,7 +443,6 @@ public class JobsUserActivityWebApplicationBean extends BaseJobsController imple this.addUserActivity(event.getUpdatedUser(), "USER_UPDATED_PERSONAL_DATA"); //NOI18N } - /** * Expands given activity type into a i18n string for administrators *

@@ -506,9 +507,9 @@ public class JobsUserActivityWebApplicationBean extends BaseJobsController imple List list = new LinkedList<>(); // Is the user set? - if (this.usersActivity.containsKey(this.getUser())) { + if (this.usersActivityCache.containsKey(this.getUser())) { // Return it - list.addAll(this.usersActivity.get(this.getUser())); + list.addAll(this.usersActivityCache.get(this.getUser())); // Sort list and reverse it Collections.sort(list, new UserActivityLogTimestampComparator()); @@ -548,13 +549,13 @@ public class JobsUserActivityWebApplicationBean extends BaseJobsController imple // Put all in map, per-user for (final LogableUserActivity userActivity : list) { // Is the list there? - if (!this.usersActivity.containsKey(userActivity.getActivityUser())) { + if (!this.usersActivityCache.containsKey(userActivity.getActivityUser())) { // Init list - this.usersActivity.put(userActivity.getActivityUser(), new LinkedList()); + this.usersActivityCache.put(userActivity.getActivityUser(), new LinkedList()); } // Add by user instance - boolean added = this.usersActivity.get(userActivity.getActivityUser()).add(userActivity); + boolean added = this.usersActivityCache.get(userActivity.getActivityUser()).add(userActivity); // Should be added assert (added) : "Activity log not added"; //NOI18N @@ -663,13 +664,13 @@ public class JobsUserActivityWebApplicationBean extends BaseJobsController imple } // Is it there? - if (!this.usersActivity.containsKey(userActivity.getActivityUser())) { + if (!this.usersActivityCache.containsKey(userActivity.getActivityUser())) { // Init it - this.usersActivity.put(userActivity.getActivityUser(), new LinkedList()); + this.usersActivityCache.put(userActivity.getActivityUser(), new LinkedList()); } // Add activity to log - this.usersActivity.get(userActivity.getActivityUser()).add(userActivity); + this.usersActivityCache.get(userActivity.getActivityUser()).add(userActivity); } } diff --git a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebApplicationController.java b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestController.java similarity index 91% rename from src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebApplicationController.java rename to src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestController.java index e2234345..4e4837cd 100644 --- a/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebApplicationController.java +++ b/src/java/org/mxchange/jjobs/beans/user/activity/JobsUserActivityWebRequestController.java @@ -23,6 +23,6 @@ import java.io.Serializable; *

* @author Roland Häder */ -public interface JobsUserActivityWebApplicationController extends Serializable { +public interface JobsUserActivityWebRequestController extends Serializable { } diff --git a/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java b/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java index 7f13740f..5be19add 100644 --- a/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/confirmlink/JobsConfirmationLinkWebRequestBean.java @@ -31,7 +31,7 @@ import org.mxchange.jcoreee.events.helper.clear.HelperCleanupEvent; import org.mxchange.jcoreee.events.helper.clear.ObservableHelperCleanupEvent; import org.mxchange.jcoreee.utils.FacesUtils; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; import org.mxchange.jusercore.events.user.created.CreatedUserEvent; import org.mxchange.jusercore.events.user.created.ObservableCreatedUserEvent; import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; @@ -85,7 +85,7 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple * User controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Event for when a user instance was created @@ -114,9 +114,6 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple @Override public void maybeConfirmUserAccount () { - // Trace message - System.out.println(MessageFormat.format("{0}.maybeConfirmAccount: CALLED!", this.getClass().getSimpleName())); //NOI18N - // Is the confirmation key set? if (this.getConfirmationKey() == null) { // May be null if not set @@ -129,9 +126,6 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple // Now try to find the user in user list, first get the whole list List users = this.userController.allUsers(); - // Debug message - System.out.println(MessageFormat.format("{0}.maybeConfirmAccount: users.size()={1}", this.getClass().getSimpleName(), users.size())); //NOI18N - // Get iterator from it Iterator iterator = users.iterator(); @@ -143,23 +137,14 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple // Get next user User next = iterator.next(); - // Debug message - System.out.println(MessageFormat.format("{0}.maybeConfirmAccount: this.confirmationKey={1},next.confirmationKey={2}", this.getClass().getSimpleName(), this.getConfirmationKey(), next.getUserConfirmKey())); //NOI18N - // Same confirmation key? if (Objects.equals(this.getConfirmationKey(), next.getUserConfirmKey())) { - // Debug message - System.out.println(MessageFormat.format("{0}.maybeConfirmAccount: next={1} - Aborting ...", this.getClass().getSimpleName(), next)); //NOI18N - // Found it, then set it and abort loop user = next; break; } } - // Debug message - System.out.println(MessageFormat.format("{0}.maybeConfirmAccount: user={1}", this.getClass().getSimpleName(), user)); //NOI18N - // Is the user instance null? if ((null == user) || (user.getUserAccountStatus() != UserAccountStatus.UNCONFIRMED)) { // Then clear this bean and the helper @@ -168,9 +153,6 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple // Try to confirm it this.confirmUserAccount(user); } - - // Trace message - System.out.println(MessageFormat.format("{0}.maybeConfirmAccount: EXIT!", this.getClass().getSimpleName())); //NOI18N } /** @@ -179,9 +161,6 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple * @param user User instance */ private void confirmUserAccount (final User user) { - // Trace message - System.out.println(MessageFormat.format("{0}.confirmUserAccount: user={1} - CALLED!", this.getClass().getSimpleName(), user)); //NOI18N - // Should be set if (null == user) { // Throw NPE @@ -213,14 +192,8 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple // Get base URL String baseUrl = FacesUtils.generateBaseUrl(); - // Debug message - System.out.println(MessageFormat.format("{0}.confirmUserAccount: baseUrl={1}", this.getClass().getSimpleName(), baseUrl)); //NOI18N - // Confirm account updatedUser = this.userBean.confirmAccount(user, baseUrl); - - // Debug message - System.out.println(MessageFormat.format("{0}.confirmUserAccount: updatedUser={1} - Returned from EJB", this.getClass().getSimpleName(), updatedUser)); //NOI18N } catch (final UserStatusConfirmedException | UserStatusLockedException ex) { // Something unexpected happened throw new FaceletException(MessageFormat.format("Cannot confirm user account {0}", user.getUserName()), ex); //NOI18N @@ -229,14 +202,8 @@ public class JobsConfirmationLinkWebRequestBean extends BaseJobsController imple // Fire event that the user has confirmed account this.userConfirmedEvent.fire(new UserConfirmedAccountEvent(updatedUser)); - // Debug message - System.out.println(MessageFormat.format("{0}.confirmUserAccount: updatedUser={1}", this.getClass().getSimpleName(), updatedUser)); //NOI18N - // Fire event this.userCreatedEvent.fire(new CreatedUserEvent(updatedUser)); - - // Trace message - System.out.println(MessageFormat.format("{0}.confirmUserAccount: EXIT!", this.getClass().getSimpleName())); //NOI18N } } diff --git a/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java similarity index 89% rename from src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java index 9de30f10..b78e2ef5 100644 --- a/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestBean.java @@ -17,23 +17,25 @@ package org.mxchange.jjobs.beans.user.email_address; import java.text.MessageFormat; +import java.util.Iterator; import java.util.List; import java.util.Objects; import javax.annotation.PostConstruct; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; import javax.inject.Named; import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcoreee.jcache.Cached; import org.mxchange.jcoreee.utils.FacesUtils; import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.features.JobsFeaturesWebApplicationController; import org.mxchange.jjobs.beans.user.login.JobsUserLoginWebSessionController; import org.mxchange.jusercore.model.email_address.ChangeableEmailAddress; import org.mxchange.jusercore.model.email_address.EmailAddressChange; -import org.mxchange.jusercore.model.user.email_address.UserEmailChangeSessionBeanRemote; import org.mxchange.jusercore.model.user.User; +import org.mxchange.jusercore.model.user.email_address.UserEmailChangeSessionBeanRemote; import org.mxchange.juserlogincore.exceptions.UserPasswordMismatchException; /** @@ -42,8 +44,8 @@ import org.mxchange.juserlogincore.exceptions.UserPasswordMismatchException; * @author Roland Häder */ @Named ("userEmailChangeController") -@SessionScoped -public class JobsEmailChangeWebSessionBean extends BaseJobsController implements JobsEmailChangeWebSessionController { +@RequestScoped +public class JobsEmailChangeWebRequestBean extends BaseJobsController implements JobsEmailChangeWebRequestController { /** * Serial number @@ -60,11 +62,6 @@ public class JobsEmailChangeWebSessionBean extends BaseJobsController implements */ private String emailAddressRepeat; - /** - * Local list of already queued email addresses - */ - private List emailAddresses; - /** * Remote email change bean */ @@ -77,6 +74,13 @@ public class JobsEmailChangeWebSessionBean extends BaseJobsController implements @Inject private JobsFeaturesWebApplicationController featureController; + /** + * Local list of already queued email addresses + */ + @Inject + @Cached (cacheName = "queuedEmailCache") + private transient Cache queuedEmailCache; + /** * Login controller (bean) */ @@ -86,7 +90,7 @@ public class JobsEmailChangeWebSessionBean extends BaseJobsController implements /** * Default constructor */ - public JobsEmailChangeWebSessionBean () { + public JobsEmailChangeWebRequestBean () { // Call super constructor super(); } @@ -196,8 +200,20 @@ public class JobsEmailChangeWebSessionBean extends BaseJobsController implements */ @PostConstruct public void init () { - // Init list - this.emailAddresses = this.emailChangeBean.allQueuedAddresses(); + // Is cache there? + if (!this.queuedEmailCache.iterator().hasNext()) { + // Get whole list + List list = this.emailChangeBean.allQueuedAddresses(); + + // Add all + for (final Iterator iterator = list.iterator(); iterator.hasNext();) { + // Get next element + final String next = iterator.next(); + + // Add it to cache + this.queuedEmailCache.put(next, Boolean.TRUE); + } + } } @Override @@ -230,7 +246,7 @@ public class JobsEmailChangeWebSessionBean extends BaseJobsController implements assert (!emailAddress.trim().isEmpty()) : "emailAddress should not be empty"; //NOI18N // Check list - if (this.emailAddresses.contains(emailAddress)) { + if (this.queuedEmailCache.containsKey(emailAddress)) { // Okay, found it return true; } @@ -241,7 +257,7 @@ public class JobsEmailChangeWebSessionBean extends BaseJobsController implements // Is it there? if (isQueued) { // Add to list - this.emailAddresses.add(emailAddress); + this.queuedEmailCache.put(emailAddress, Boolean.TRUE); } // Return status diff --git a/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebSessionController.java b/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestController.java similarity index 94% rename from src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestController.java index 7d21354a..f31fda04 100644 --- a/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/user/email_address/JobsEmailChangeWebRequestController.java @@ -23,7 +23,7 @@ import java.io.Serializable; *

* @author Roland Häder */ -public interface JobsEmailChangeWebSessionController extends Serializable { +public interface JobsEmailChangeWebRequestController extends Serializable { /** * Checks whether all required are set for changing email address diff --git a/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java index e286baec..03f6d7c1 100644 --- a/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/login/JobsUserLoginWebSessionBean.java @@ -29,7 +29,7 @@ import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; import org.mxchange.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.exceptions.UserStatusLockedException; import org.mxchange.jusercore.exceptions.UserStatusUnconfirmedException; @@ -88,7 +88,7 @@ public class JobsUserLoginWebSessionBean extends BaseJobsController implements J * User controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Current password diff --git a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java similarity index 95% rename from src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java index 57f02241..ada67e19 100644 --- a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestBean.java @@ -17,7 +17,7 @@ package org.mxchange.jjobs.beans.user.register; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Event; import javax.enterprise.inject.Any; import javax.faces.view.facelets.FaceletException; @@ -27,10 +27,10 @@ import org.mxchange.jcontacts.contact.Contact; import org.mxchange.jcontacts.contact.UserContact; import org.mxchange.jcoreee.utils.FacesUtils; import org.mxchange.jjobs.beans.BaseJobsController; -import org.mxchange.jjobs.beans.contact.JobsContactWebSessionController; +import org.mxchange.jjobs.beans.contact.JobsContactWebRequestController; import org.mxchange.jjobs.beans.features.JobsFeaturesWebApplicationController; import org.mxchange.jjobs.beans.user.JobsAdminUserWebRequestController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; import org.mxchange.jusercore.events.user.clear.password.ClearUserPasswordEvent; import org.mxchange.jusercore.events.user.clear.password.ObservableClearUserPasswordEvent; import org.mxchange.jusercore.events.user.clear.username.ClearUserNameEvent; @@ -55,8 +55,8 @@ import org.mxchange.juserlogincore.model.user.register.UserRegistrationSessionBe * @author Roland Häder */ @Named ("userRegistrationController") -@SessionScoped -public class JobsUserRegisterWebSessionBean extends BaseJobsController implements JobsUserRegisterWebSessionController { +@RequestScoped +public class JobsUserRegisterWebRequestBean extends BaseJobsController implements JobsUserRegisterWebRequestController { /** * Serial number @@ -64,7 +64,7 @@ public class JobsUserRegisterWebSessionBean extends BaseJobsController implement private static final long serialVersionUID = 47_828_986_719_691_592L; /** - * User controller + * Administrative user controller */ @Inject private JobsAdminUserWebRequestController adminUserController; @@ -87,7 +87,7 @@ public class JobsUserRegisterWebSessionBean extends BaseJobsController implement * Contact controller */ @Inject - private JobsContactWebSessionController contactController; + private JobsContactWebRequestController contactController; /** * Features controller @@ -105,7 +105,7 @@ public class JobsUserRegisterWebSessionBean extends BaseJobsController implement * User controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * An event being fired when a user password was changed @@ -124,7 +124,7 @@ public class JobsUserRegisterWebSessionBean extends BaseJobsController implement /** * Default constructor */ - public JobsUserRegisterWebSessionBean () { + public JobsUserRegisterWebRequestBean () { // Call super constructor super(); } @@ -197,7 +197,7 @@ public class JobsUserRegisterWebSessionBean extends BaseJobsController implement throw new FaceletException(new DataRepeatMismatchException("Passwords not matching.")); //NOI18N } else if (this.userController.ifBothPasswordsEmptyAllowed()) { // Both passwords are left empty and is allowed, then generate a random password - randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebSessionController.MINIMUM_PASSWORD_LENGTH); + randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH); // Generate (ignored) password-history PasswordHistory passwordHistory = new UserPasswordHistory(randomPassword, user); @@ -294,7 +294,7 @@ public class JobsUserRegisterWebSessionBean extends BaseJobsController implement return ""; //NOI18N } else if (this.userController.ifBothPasswordsEmptyAllowed()) { // Both passwords are left empty and is allowed, then generate a random password - String randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebSessionController.MINIMUM_PASSWORD_LENGTH); + String randomPassword = UserLoginUtils.createRandomPassword(JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH); // Generate (ignored) password-history PasswordHistory passwordHistory = new UserPasswordHistory(randomPassword, user); diff --git a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebSessionController.java b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestController.java similarity index 93% rename from src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestController.java index 6a9c78b3..2dad7c6b 100644 --- a/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/user/register/JobsUserRegisterWebRequestController.java @@ -23,6 +23,6 @@ import java.io.Serializable; *

* @author Roland Häder */ -public interface JobsUserRegisterWebSessionController extends Serializable { +public interface JobsUserRegisterWebRequestController extends Serializable { } diff --git a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java similarity index 95% rename from src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebSessionBean.java rename to src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java index c9b63bb7..5c072feb 100644 --- a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebSessionBean.java +++ b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestBean.java @@ -18,7 +18,7 @@ package org.mxchange.jjobs.beans.user.resendlink; import java.util.Locale; import javax.ejb.EJB; -import javax.enterprise.context.SessionScoped; +import javax.enterprise.context.RequestScoped; import javax.enterprise.event.Event; import javax.enterprise.event.Observes; import javax.enterprise.inject.Any; @@ -28,7 +28,7 @@ import org.mxchange.jcoreee.events.locale.ObservableLocaleChangeEvent; import org.mxchange.jcoreee.utils.FacesUtils; import org.mxchange.jjobs.beans.BaseJobsController; import org.mxchange.jjobs.beans.localization.JobsLocalizationSessionController; -import org.mxchange.jjobs.beans.user.JobsUserWebSessionController; +import org.mxchange.jjobs.beans.user.JobsUserWebRequestController; import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException; import org.mxchange.jusercore.exceptions.UserNotFoundException; import org.mxchange.jusercore.exceptions.UserStatusConfirmedException; @@ -45,8 +45,8 @@ import org.mxchange.juserlogincore.model.user.resendlink.ResendLinkSessionBeanRe * @author Roland Häder */ @Named ("userResendConfirmationController") -@SessionScoped -public class JobsResendLinkWebSessionBean extends BaseJobsController implements JobsResendLinkWebSessionController { +@RequestScoped +public class JobsResendLinkWebRequestBean extends BaseJobsController implements JobsResendLinkWebRequestController { /** * Serial number @@ -79,7 +79,7 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements * Regular user controller */ @Inject - private JobsUserWebSessionController userController; + private JobsUserWebRequestController userController; /** * Event being fired after confirmation link is being sent @@ -91,7 +91,7 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements /** * Default constructor */ - public JobsResendLinkWebSessionBean () { + public JobsResendLinkWebRequestBean () { // Call super constructor super(); } diff --git a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebSessionController.java b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestController.java similarity index 93% rename from src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebSessionController.java rename to src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestController.java index 391f2a9e..134fd175 100644 --- a/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebSessionController.java +++ b/src/java/org/mxchange/jjobs/beans/user/resendlink/JobsResendLinkWebRequestController.java @@ -23,6 +23,6 @@ import java.io.Serializable; *

* @author Roland Häder */ -public interface JobsResendLinkWebSessionController extends Serializable { +public interface JobsResendLinkWebRequestController extends Serializable { } diff --git a/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java b/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java index 4354ee61..d63a0c19 100644 --- a/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java +++ b/src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java @@ -37,7 +37,7 @@ public class JobsBusinessContactConverter implements Converter { /** * CompanyEmployee EJB */ - @EJB (lookup = "java:global/jfinancials-ejb/companyEmployee!org.mxchange.jcontactsbusiness.employee.CompanyEmployeeSessionBeanRemote") + @EJB (lookup = "java:global/jjobs-ejb/companyEmployee!org.mxchange.jcontactsbusiness.employee.CompanyEmployeeSessionBeanRemote") private CompanyEmployeeSessionBeanRemote companyEmployeeBean; /** diff --git a/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java b/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java index 98dab59d..d06f9c9b 100644 --- a/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java +++ b/src/java/org/mxchange/jjobs/converter/business/headquarters/JobsCompanyHeadquartersConverter.java @@ -37,7 +37,7 @@ public class JobsCompanyHeadquartersConverter implements Converter { /** * User EJB */ - @EJB (lookup = "java:global/jfinancials-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote") + @EJB (lookup = "java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote") private ContactSessionBeanRemote contactBean; /** diff --git a/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java b/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java index 645957d5..7f4df116 100644 --- a/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java +++ b/src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java @@ -38,7 +38,7 @@ public class JobsCountryConverter implements Converter { /** * Country bean */ - @EJB (lookup = "java:global/jfinancials-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote") + @EJB (lookup = "java:global/jjobs-ejb/country!org.mxchange.jcountry.data.CountrySingletonBeanRemote") private CountrySingletonBeanRemote countryBean; /** diff --git a/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java b/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java index 7e5436e8..f9cf8cfd 100644 --- a/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java +++ b/src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java @@ -37,7 +37,7 @@ public class JobsFaxNumberConverter implements Converter { /** * Phone EJB */ - @EJB(lookup = "java:global/jfinancials-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote") + @EJB(lookup = "java:global/jjobs-ejb/phone!org.mxchange.jphone.phonenumbers.phone.PhoneSessionBeanRemote") private PhoneSessionBeanRemote phoneBean; /** diff --git a/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java b/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java index ef407685..8ec5d093 100644 --- a/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java +++ b/src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java @@ -37,7 +37,7 @@ public class JobsLandLineNumberConverter implements Converter { /** * Mobile provider bean */ - @EJB(lookup = "java:global/jfinancials-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote") + @EJB(lookup = "java:global/jjobs-ejb/mobileprovider!org.mxchange.jphone.phonenumbers.mobileprovider.MobileProviderSingletonBeanRemote") private MobileProviderSingletonBeanRemote mobileProviderBean; /** @@ -58,7 +58,7 @@ public class JobsMobileProviderConverter implements Converter { } // Get full list - List providerList = this.mobileProviderBean.allMobileProvider(); + List providerList = this.mobileProviderBean.allMobileProviders(); // Init value MobileProvider provider = null; diff --git a/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java b/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java index 3704b454..c89d643d 100644 --- a/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java +++ b/src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java @@ -37,7 +37,7 @@ public class JobsUserConverter implements Converter { /** * User EJB */ - @EJB(lookup = "java:global/jfinancials-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") + @EJB(lookup = "java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") private UserSessionBeanRemote userBean; /** diff --git a/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java b/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java index a5230f64..f922b8e8 100644 --- a/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java +++ b/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java @@ -42,7 +42,7 @@ public class JobsCompanyNameValidator extends BaseStringValidator { /** * Business contact EJB */ - @EJB (lookup = "java:global/jfinancials-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote") + @EJB (lookup = "java:global/jjobs-ejb/businessData!org.mxchange.jcontactsbusiness.basicdata.BusinessDataSessionBeanRemote") private BusinessDataSessionBeanRemote basicDataBean; @Override diff --git a/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java b/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java index 57f93ffa..ee114d89 100644 --- a/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java +++ b/src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java @@ -38,7 +38,7 @@ public class JobsEmailAddressValidator extends BaseStringValidator { /** * Contact session-scoped bean */ - @EJB (lookup = "java:global/jfinancials-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote") + @EJB (lookup = "java:global/jjobs-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote") private ContactSessionBeanRemote contactBean; /** diff --git a/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java b/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java index 99a1b7a3..cf383d76 100644 --- a/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java +++ b/src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java @@ -42,7 +42,7 @@ public class JobsUserIdValidator extends BaseNumberValidator { /** * Remote bean */ - @EJB (lookup = "java:global/jfinancials-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") + @EJB (lookup = "java:global/jjobs-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote") private UserSessionBeanRemote userBean; /** diff --git a/web/guest/user/user_list.xhtml b/web/guest/user/user_list.xhtml index ba2287d6..b1726a33 100644 --- a/web/guest/user/user_list.xhtml +++ b/web/guest/user/user_list.xhtml @@ -22,22 +22,24 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + > -- 2.39.5