*
* @param tenantInfoBean tenant information
* @throws Exception UserStoreException
*/
public void updateTenant(TenantInfoBean tenantInfoBean) throws Exception {
TenantManager tenantManager = TenantMgtServiceComponent.getTenantManager();
UserStoreManager userStoreManager;
// filling the non-set admin and admin password first
UserRegistry configSystemRegistry = TenantMgtServiceComponent.getConfigSystemRegistry(
tenantInfoBean.getTenantId());
String tenantDomain = tenantInfoBean.getTenantDomain();
int tenantId;
try {
tenantId = tenantManager.getTenantId(tenantDomain);
} catch (UserStoreException e) {
String msg = "Error in retrieving the tenant id for the tenant domain: " + tenantDomain
+ ".";
log.error(msg, e);
throw new Exception(msg, e);
}
Tenant tenant;
try {
tenant = (Tenant) tenantManager.getTenant(tenantId);
} catch (UserStoreException e) {
String msg = "Error in retrieving the tenant id for the tenant domain: " +
tenantDomain + ".";
log.error(msg, e);
throw new Exception(msg, e);
}
// filling the first and last name values
if (tenantInfoBean.getFirstname() != null &&
!tenantInfoBean.getFirstname().trim().equals("")) {
try {
CommonUtil.validateName(tenantInfoBean.getFirstname(), "First Name");
} catch (Exception e) {
String msg = "Invalid first name is provided.";
log.error(msg, e);
throw new Exception(msg, e);
}
}
if (tenantInfoBean.getLastname() != null &&
!tenantInfoBean.getLastname().trim().equals("")) {
try {
CommonUtil.validateName(tenantInfoBean.getLastname(), "Last Name");
} catch (Exception e) {
String msg = "Invalid last name is provided.";
log.error(msg, e);
throw new Exception(msg, e);
}
}
tenant.setAdminFirstName(tenantInfoBean.getFirstname());
tenant.setAdminLastName(tenantInfoBean.getLastname());
TenantMgtUtil.addClaimsToUserStoreManager(tenant);
// filling the email value
if (tenantInfoBean.getEmail() != null && !tenantInfoBean.getEmail().equals("")) {
// validate the email
try {
CommonUtil.validateEmail(tenantInfoBean.getEmail());
} catch (Exception e) {
String msg = "Invalid email is provided.";
log.error(msg, e);
throw new Exception(msg, e);
}
tenant.setEmail(tenantInfoBean.getEmail());
}
UserRealm userRealm = configSystemRegistry.getUserRealm();
try {
userStoreManager = userRealm.getUserStoreManager();
} catch (UserStoreException e) {
String msg = "Error in getting the user store manager for tenant, tenant domain: " +
tenantDomain + ".";
log.error(msg, e);
throw new Exception(msg, e);
}
boolean updatePassword = false;
if (tenantInfoBean.getAdminPassword() != null
&& !tenantInfoBean.getAdminPassword().equals("")) {
updatePassword = true;
}
if (!userStoreManager.isReadOnly() && updatePassword) {
// now we will update the tenant admin with the admin given
// password.
try {
userStoreManager.updateCredentialByAdmin(tenantInfoBean.getAdmin(),
tenantInfoBean.getAdminPassword());
} catch (UserStoreException e) {
String msg = "Error in changing the tenant admin password, tenant domain: " +
tenantInfoBean.getTenantDomain() + ". " + e.getMessage() + " for: " +
tenantInfoBean.getAdmin();
log.error(msg, e);
throw new Exception(msg, e);
}
} else {
//Password should be empty since no password update done
tenantInfoBean.setAdminPassword("");
}
try {
tenantManager.updateTenant(tenant);
} catch (UserStoreException e) {
String msg = "Error in updating the tenant for tenant domain: " + tenantDomain + ".";
log.error(msg, e);
throw new Exception(msg, e);
}