You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ev...@apache.org on 2008/05/29 18:56:44 UTC
svn commit: r661400 - in
/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action:
ContinuumActionSupport.java ProjectGroupAction.java
Author: evenisse
Date: Thu May 29 09:56:44 2008
New Revision: 661400
URL: http://svn.apache.org/viewvc?rev=661400&view=rev
Log:
Fix some NPE with LDAP integration and improve a lot performance on the members page
Modified:
continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ContinuumActionSupport.java
continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ContinuumActionSupport.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ContinuumActionSupport.java?rev=661400&r1=661399&r2=661400&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ContinuumActionSupport.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ContinuumActionSupport.java Thu May 29 09:56:44 2008
@@ -505,7 +505,7 @@
*
* @return the security system
*/
- private SecuritySystem getSecuritySystem()
+ protected SecuritySystem getSecuritySystem()
{
return securitySystem;
}
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java?rev=661400&r1=661399&r2=661400&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java Thu May 29 09:56:44 2008
@@ -32,10 +32,10 @@
import org.codehaus.plexus.redback.rbac.RbacManagerException;
import org.codehaus.plexus.redback.rbac.RbacObjectNotFoundException;
import org.codehaus.plexus.redback.rbac.Role;
+import org.codehaus.plexus.redback.rbac.UserAssignment;
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.role.RoleManagerException;
import org.codehaus.plexus.redback.users.User;
-import org.codehaus.plexus.redback.users.UserManager;
import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;
@@ -67,11 +67,6 @@
}
/**
- * @plexus.requirement role-hint="configurable"
- */
- private UserManager manager;
-
- /**
* @plexus.requirement role-hint="cached"
*/
private RBACManager rbac;
@@ -533,25 +528,49 @@
private void populateProjectGroupUsers( ProjectGroup group )
{
- List users;
+ List<User> users = new ArrayList<User>();
- if ( StringUtils.isEmpty( filterKey ) )
+ try
{
- // REVIEW: for caching in the user manager
- users = manager.getUsers( ascending );
+ List<Role> roles = rbac.getAllRoles();
+ List<String> roleNames = new ArrayList<String>();
+ for ( Role r : roles )
+ {
+ if ( r.getName().indexOf( projectGroup.getName() ) > -1 )
+ {
+ roleNames.add( r.getName() );
+ }
+ }
+ List<UserAssignment> userAssignments = rbac.getUserAssignmentsForRoles( roleNames );
+ for ( UserAssignment ua : userAssignments )
+ {
+ User u = getSecuritySystem().getUserManager().findUser( ua.getPrincipal() );
+ if ( u != null )
+ {
+ users.add( u );
+ }
+ }
}
- else
+ catch ( Exception e )
+ {
+ getLogger().error( "Can't get the users list", e );
+ }
+
+ if ( !StringUtils.isEmpty( filterKey ) )
{
- users = findUsers( filterProperty, filterKey, ascending );
+ users = findUsers( users, filterProperty, filterKey, ascending );
}
projectGroupUsers = new ArrayList();
- for ( Iterator i = users.iterator(); i.hasNext(); )
+ if ( users == null )
{
- ProjectGroupUserBean pgUser = new ProjectGroupUserBean();
+ return;
+ }
- User user = (User) i.next();
+ for ( User user : users )
+ {
+ ProjectGroupUserBean pgUser = new ProjectGroupUserBean();
pgUser.setUser( user );
@@ -584,28 +603,47 @@
}
}
- private List findUsers( String searchProperty, String searchKey, boolean orderAscending )
+ private List<User> findUsers( List<User> users, String searchProperty, String searchKey, boolean orderAscending )
{
- List users = null;
-
- if ( "username".equals( searchProperty ) )
- {
- users = manager.findUsersByUsernameKey( searchKey, orderAscending );
- }
- else if ( "fullName".equals( getFilterProperty() ) )
+ List<User> userList = new ArrayList<User>();
+ for ( User user : users )
{
- users = manager.findUsersByFullNameKey( searchKey, orderAscending );
- }
- else if ( "email".equals( getFilterProperty() ) )
- {
- users = manager.findUsersByEmailKey( searchKey, orderAscending );
- }
- else
- {
- users = Collections.EMPTY_LIST;
+ if ( "username".equals( searchProperty ) )
+ {
+ String username = user.getUsername();
+ if ( username != null )
+ {
+ if ( username.toLowerCase().indexOf( searchKey.toLowerCase() ) >= 0 )
+ {
+ userList.add( user );
+ }
+ }
+ }
+ else if ( "fullName".equals( searchProperty ) )
+ {
+ String fullname = user.getFullName();
+ if ( fullname != null )
+ {
+ if ( fullname.toLowerCase().indexOf( searchKey.toLowerCase() ) >= 0 )
+ {
+ userList.add( user );
+ }
+ }
+ }
+ else if ( "email".equals( searchProperty ) )
+ {
+ String email = user.getEmail();
+ if ( email != null )
+ {
+ if ( email.toLowerCase().indexOf( searchKey.toLowerCase() ) >= 0 )
+ {
+ userList.add( user );
+ }
+ }
+ }
}
- return users;
+ return userList;
}
public int getProjectGroupId()