public RoleInfo updateRole()

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() ));
        }
    }