in redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultRoleManagementService.java [389:468]
public Role getRole( String roleName )
throws RedbackServiceException
{
try
{
org.apache.archiva.redback.rbac.Role rbacRole = rbacManager.getRole( roleName );
Role role = new Role( rbacRole );
Map<String, ? extends org.apache.archiva.redback.rbac.Role> parentRoleIds = rbacManager.getParentRoleIds( rbacRole );
for ( String parentRoleId : parentRoleIds.keySet() )
{
org.apache.archiva.redback.rbac.Role rbacParentRole = rbacManager.getRoleById( parentRoleId );
role.getParentRoleNames().add( rbacParentRole.getName() );
}
List<? extends UserAssignment> userAssignments = rbacManager.getUserAssignmentsForRoles( Arrays.asList( rbacRole.getId() ) );
if ( userAssignments != null )
{
for ( UserAssignment userAssignment : userAssignments )
{
try
{
User user = userManager.findUser( userAssignment.getPrincipal() );
role.getUsers().add( new org.apache.archiva.redback.rest.api.model.User( user ) );
}
catch ( UserNotFoundException e )
{
log.warn( "User '{}' doesn't exist.", userAssignment.getPrincipal(), e );
}
}
}
if ( !role.getParentRoleNames().isEmpty() )
{
List<? extends UserAssignment> userParentAssignments =
rbacManager.getUserAssignmentsForRoles( parentRoleIds.keySet() );
if ( userParentAssignments != null )
{
for ( UserAssignment userAssignment : userParentAssignments )
{
try
{
User user = userManager.findUser( userAssignment.getPrincipal() );
role.getParentsRolesUsers().add(
new org.apache.archiva.redback.rest.api.model.User( user ) );
}
catch ( UserNotFoundException e )
{
log.warn( "User '{}' doesn't exist.", userAssignment.getPrincipal(), e );
}
}
}
}
List<org.apache.archiva.redback.rest.api.model.User> otherUsers = new ArrayList<>();
for ( User u : userManager.getUsers() )
{
org.apache.archiva.redback.rest.api.model.User user =
new org.apache.archiva.redback.rest.api.model.User( u );
if ( role.getParentsRolesUsers().contains( user ) )
{
continue;
}
if ( role.getUsers().contains( user ) )
{
continue;
}
otherUsers.add( user );
}
role.setOtherUsers( otherUsers );
return role;
}
catch ( RbacManagerException | UserManagerException e )
{
throw new RedbackServiceException( new ErrorMessage( e.getMessage() ) );
}
}