in redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/v2/DefaultRoleService.java [483:531]
public RoleInfo updateRole( String roleId, Role role ) throws RedbackServiceException
{
try
{
if (role==null) {
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_EMPTY_DATA ), 400 );
}
if ( !StringUtils.equals( roleId, role.getId( ) ) )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_ROLE_ID_INVALID ), 422 );
}
org.apache.archiva.redback.rbac.Role rbacRole = rbacManager.getRoleById( roleId );
if (StringUtils.isNotEmpty( role.getName()) && !StringUtils.equals(rbacRole.getName(), role.getName()) ) {
rbacRole.setName( role.getName( ) );
}
if (StringUtils.isNotEmpty( role.getDescription()) && !StringUtils.equals(rbacRole.getDescription(), role.getDescription()) ) {
rbacRole.setDescription( role.getDescription( ) );
}
if (role.isPermanent()!=null && rbacRole.isPermanent()!=role.isPermanent().booleanValue()) {
rbacRole.setPermanent( role.isPermanent( ) );
}
if (role.isAssignable()!=null && rbacRole.isAssignable()!=role.isAssignable().booleanValue()) {
rbacRole.setAssignable( role.isAssignable( ) );
}
if (role.getAssignedUsers()!=null && role.getAssignedUsers().size()>0) {
role.getAssignedUsers().stream().forEach( user ->
{
try
{
roleManager.assignRole( role.getId( ), user.getUserId( ) );
}
catch ( RoleManagerException e )
{
// silently ignore
}
}
);
}
org.apache.archiva.redback.rbac.Role updatedRole = rbacManager.saveRole( rbacRole );
return getRoleInfo( updatedRole );
}
catch (RbacObjectNotFoundException e) {
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_ROLE_NOT_FOUND, roleId ), 404 );
}
catch ( RbacManagerException e )
{
throw new RedbackServiceException( ErrorMessage.of( MessageKeys.ERR_RBACMANAGER_FAIL, e.getMessage() ));
}
}