default:
}
}
// 2. add data from defined template (if any)
AbstractAttributableTO template = AttributableType.USER == attrUtil.getType()
? syncTask.getUserTemplate() : syncTask.getRoleTemplate();
if (template != null) {
if (template instanceof UserTO) {
if (StringUtils.isNotBlank(((UserTO) template).getUsername())) {
String evaluated = JexlUtil.evaluate(((UserTO) template).getUsername(), attributableTO);
if (StringUtils.isNotBlank(evaluated)) {
((UserTO) attributableTO).setUsername(evaluated);
}
}
if (StringUtils.isNotBlank(((UserTO) template).getPassword())) {
String evaluated = JexlUtil.evaluate(((UserTO) template).getPassword(), attributableTO);
if (StringUtils.isNotBlank(evaluated)) {
((UserTO) attributableTO).setPassword(evaluated);
}
}
Map<Long, MembershipTO> currentMembs = ((UserTO) attributableTO).getMembershipMap();
for (MembershipTO membTO : ((UserTO) template).getMemberships()) {
MembershipTO membTBU;
if (currentMembs.containsKey(membTO.getRoleId())) {
membTBU = currentMembs.get(membTO.getRoleId());
} else {
membTBU = new MembershipTO();
membTBU.setRoleId(membTO.getRoleId());
((UserTO) attributableTO).addMembership(membTBU);
}
fillFromTemplate(membTBU, membTO);
}
}
if (template instanceof RoleTO) {
if (StringUtils.isNotBlank(((RoleTO) template).getName())) {
String evaluated = JexlUtil.evaluate(((RoleTO) template).getName(), attributableTO);
if (StringUtils.isNotBlank(evaluated)) {
((RoleTO) attributableTO).setName(evaluated);
}
}
if (((RoleTO) template).getParent() != 0) {
final SyncopeRole parentRole = roleDAO.find(((RoleTO) template).getParent());
if (parentRole != null) {
((RoleTO) attributableTO).setParent(parentRole.getId());
}
}
if (((RoleTO) template).getUserOwner() != null) {
final SyncopeUser userOwner = userDAO.find(((RoleTO) template).getUserOwner());
if (userOwner != null) {
((RoleTO) attributableTO).setUserOwner(userOwner.getId());
}
}
if (((RoleTO) template).getRoleOwner() != null) {
final SyncopeRole roleOwner = roleDAO.find(((RoleTO) template).getRoleOwner());
if (roleOwner != null) {
((RoleTO) attributableTO).setRoleOwner(roleOwner.getId());
}
}
((RoleTO) attributableTO).setEntitlements(((RoleTO) template).getEntitlements());
((RoleTO) attributableTO).setAccountPolicy(((RoleTO) template).getAccountPolicy());
((RoleTO) attributableTO).setPasswordPolicy(((RoleTO) template).getPasswordPolicy());
((RoleTO) attributableTO).setInheritOwner(((RoleTO) template).isInheritOwner());
((RoleTO) attributableTO).setInheritAttributes(((RoleTO) template).isInheritAttributes());
((RoleTO) attributableTO).setInheritDerivedAttributes(((RoleTO) template).isInheritDerivedAttributes());
((RoleTO) attributableTO).setInheritVirtualAttributes(((RoleTO) template).isInheritVirtualAttributes());
((RoleTO) attributableTO).setInheritPasswordPolicy(((RoleTO) template).isInheritPasswordPolicy());
((RoleTO) attributableTO).setInheritAccountPolicy(((RoleTO) template).isInheritAccountPolicy());
}
fillFromTemplate(attributableTO, template);
for (String resource : template.getResources()) {
attributableTO.addResource(resource);
}
}
return attributableTO;