@Override
public String addUser () {
+ // Get contact from bean helper to "cache" it locally
+ Contact contact = this.beanHelper.getContact();
+
// As the form cannot validate the data (required="true"), check it here
if (this.getUserName() == null) {
// Throw NPE
} else if (this.getUserName().isEmpty()) {
// Is empty
throw new IllegalArgumentException("userName is null"); //NOI18N
- } else if (this.beanHelper.getContact() == null) {
+ } else if (contact == null) {
// No contact instance set, so test required fields: gender, first name and family name
if (this.contactController.getPersonalTitle() == null) {
// Throw NPE again
} else if (this.adminContactController.getFamilyName() == null) {
// ... and again
throw new NullPointerException("contactController.familyName is null"); //NOI18N
- } else if (this.contactController.getFamilyName().isEmpty()) {
+ } else if (this.adminContactController.getFamilyName().isEmpty()) {
// ... and again
throw new IllegalArgumentException("contactController.familyName is empty"); //NOI18N
} else if (this.adminContactController.getEmailAddress() == null) {
// Create new user instance
User user = new LoginUser();
-
// Set user name, CONFIRMED and INVISIBLE
user.setUserName(this.getUserName());
user.setUserMustChangePassword(this.getUserMustChangePassword());
user.setUserAccountStatus(UserAccountStatus.CONFIRMED);
user.setUserProfileMode(ProfileMode.INVISIBLE);
+ // Copy user locale
+ user.setUserLocale(this.localizationController.getLocale());
+
// Init instance
- Contact contact;
+ Contact userContact;
// Is a contact instance in helper set?
- if (this.beanHelper.getContact() instanceof Contact) {
+ if (contact instanceof Contact) {
// Then use it for contact linking
- contact = this.beanHelper.getContact();
+ userContact = contact;
} else {
// Create contact instance
- contact = this.contactController.createContactInstance();
+ userContact = this.contactController.createContactInstance();
}
// Set contact in user
- user.setUserContact(contact);
+ user.setUserContact(userContact);
// Init variable for password
String password = null;
if (this.userController.isUserNameRegistered(user)) {
// User name is already used
throw new FaceletException(new UserNameAlreadyRegisteredException(user));
- } else if ((this.beanHelper.getContact() == null) && (this.contactController.isEmailAddressRegistered(user.getUserContact()))) {
+ } else if ((contact == null) && (this.contactController.isEmailAddressRegistered(user.getUserContact()))) {
// Email address is already used
this.showFacesMessage("admin_add_user:emailAddress", "ERROR_EMAIL_ADDRESS_ALREADY_USED"); //NOI18N
try {
// Now, that all is set, call EJB
- if (this.beanHelper.getContact() instanceof Contact) {
+ if (contact instanceof Contact) {
// Link contact with this user
User updatedUser = this.adminUserBean.linkUser(user);
// Fire event
this.userLinkedEvent.fire(new AdminLinkedUserEvent(updatedUser));
-
- // Remove contact instance
- this.beanHelper.setContact(null);
} else {
// Add new contact
User updatedUser = this.adminUserBean.addUser(user);