default:
}
}
// 2. add data from defined template (if any)
AbstractSubjectTO 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(), subjectTO);
if (StringUtils.isNotBlank(evaluated)) {
((UserTO) subjectTO).setUsername(evaluated);
}
}
if (StringUtils.isNotBlank(((UserTO) template).getPassword())) {
String evaluated = JexlUtil.evaluate(((UserTO) template).getPassword(), subjectTO);
if (StringUtils.isNotBlank(evaluated)) {
((UserTO) subjectTO).setPassword(evaluated);
}
}
Map<Long, MembershipTO> currentMembs = ((UserTO) subjectTO).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) subjectTO).getMemberships().add(membTBU);
}
fillFromTemplate(membTBU, membTO);
}
}
if (template instanceof RoleTO) {
if (StringUtils.isNotBlank(((RoleTO) template).getName())) {
String evaluated = JexlUtil.evaluate(((RoleTO) template).getName(), subjectTO);
if (StringUtils.isNotBlank(evaluated)) {
((RoleTO) subjectTO).setName(evaluated);
}
}
if (((RoleTO) template).getParent() != 0) {
final SyncopeRole parentRole = roleDAO.find(((RoleTO) template).getParent());
if (parentRole != null) {
((RoleTO) subjectTO).setParent(parentRole.getId());
}
}
if (((RoleTO) template).getUserOwner() != null) {
final SyncopeUser userOwner = userDAO.find(((RoleTO) template).getUserOwner());
if (userOwner != null) {
((RoleTO) subjectTO).setUserOwner(userOwner.getId());
}
}
if (((RoleTO) template).getRoleOwner() != null) {
final SyncopeRole roleOwner = roleDAO.find(((RoleTO) template).getRoleOwner());
if (roleOwner != null) {
((RoleTO) subjectTO).setRoleOwner(roleOwner.getId());
}
}
((RoleTO) subjectTO).getEntitlements().addAll(((RoleTO) template).getEntitlements());
((RoleTO) subjectTO).getRAttrTemplates().addAll(((RoleTO) template).getRAttrTemplates());
((RoleTO) subjectTO).getRDerAttrTemplates().addAll(((RoleTO) template).getRDerAttrTemplates());
((RoleTO) subjectTO).getRVirAttrTemplates().addAll(((RoleTO) template).getRVirAttrTemplates());
((RoleTO) subjectTO).getMAttrTemplates().addAll(((RoleTO) template).getMAttrTemplates());
((RoleTO) subjectTO).getMDerAttrTemplates().addAll(((RoleTO) template).getMDerAttrTemplates());
((RoleTO) subjectTO).getMVirAttrTemplates().addAll(((RoleTO) template).getMVirAttrTemplates());
((RoleTO) subjectTO).setAccountPolicy(((RoleTO) template).getAccountPolicy());
((RoleTO) subjectTO).setPasswordPolicy(((RoleTO) template).getPasswordPolicy());
((RoleTO) subjectTO).setInheritOwner(((RoleTO) template).isInheritOwner());
((RoleTO) subjectTO).setInheritTemplates(((RoleTO) template).isInheritTemplates());
((RoleTO) subjectTO).setInheritAttrs(((RoleTO) template).isInheritAttrs());
((RoleTO) subjectTO).setInheritDerAttrs(((RoleTO) template).isInheritDerAttrs());
((RoleTO) subjectTO).setInheritVirAttrs(((RoleTO) template).isInheritVirAttrs());
((RoleTO) subjectTO).setInheritPasswordPolicy(((RoleTO) template).isInheritPasswordPolicy());
((RoleTO) subjectTO).setInheritAccountPolicy(((RoleTO) template).isInheritAccountPolicy());
}
fillFromTemplate(subjectTO, template);
for (String resource : template.getResources()) {
subjectTO.getResources().add(resource);
}
}
return subjectTO;