You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2013/02/22 17:05:08 UTC
svn commit: r1449091 -
/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaConfigurableUsersManager.java
Author: olamy
Date: Fri Feb 22 16:05:08 2013
New Revision: 1449091
URL: http://svn.apache.org/r1449091
Log:
really chain user managers
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaConfigurableUsersManager.java
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaConfigurableUsersManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaConfigurableUsersManager.java?rev=1449091&r1=1449090&r2=1449091&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaConfigurableUsersManager.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/java/org/apache/archiva/web/security/ArchivaConfigurableUsersManager.java Fri Feb 22 16:05:08 2013
@@ -121,32 +121,31 @@ public class ArchivaConfigurableUsersMan
}
}
- protected UserManager findFirstWritable()
- {
- for ( UserManager userManager : userManagerPerId.values() )
- {
- if ( !userManager.isReadOnly() )
- {
- return userManager;
- }
- }
- return null;
- }
-
@Override
public User createUser( String username, String fullName, String emailAddress )
throws UserManagerException
{
- UserManager userManager = findFirstWritable();
- if ( userManager.isReadOnly() )
+ Exception lastException = null;
+ boolean allFailed = true;
+ User user = null;
+ for ( UserManager userManager : userManagerPerId.values() )
{
- log.warn( "cannot find writable user manager implementation, skip user creation" );
- return null;
+ try
+ {
+ if ( !userManager.isReadOnly() )
+ {
+ user = userManager.createUser( username, fullName, emailAddress );
+ allFailed = false;
+ }
+ }
+ catch ( Exception e )
+ {
+ lastException = e;
+ }
}
- User user = userManager.createUser( username, fullName, emailAddress );
- if ( useUsersCache() )
+ if ( lastException != null && allFailed )
{
- usersCache.put( user.getUsername(), user );
+ throw new UserManagerException( lastException.getMessage(), lastException );
}
return user;
}
@@ -162,16 +161,27 @@ public class ArchivaConfigurableUsersMan
public void deleteUser( String username )
throws UserNotFoundException, UserManagerException
{
- UserManager userManager = findFirstWritable();
- if ( userManager.isReadOnly() )
+ Exception lastException = null;
+ boolean allFailed = true;
+ User user = null;
+ for ( UserManager userManager : userManagerPerId.values() )
{
- log.warn( "cannot find writable user manager implementation, skip delete user" );
- return;
+ try
+ {
+ if ( !userManager.isReadOnly() )
+ {
+ userManager.deleteUser( username );
+ allFailed = false;
+ }
+ }
+ catch ( Exception e )
+ {
+ lastException = e;
+ }
}
- userManager.deleteUser( username );
- if ( useUsersCache() )
+ if ( lastException != null && allFailed )
{
- usersCache.remove( username );
+ throw new UserManagerException( lastException.getMessage(), lastException );
}
}
@@ -354,7 +364,13 @@ public class ArchivaConfigurableUsersMan
@Override
public boolean isReadOnly()
{
- return findFirstWritable() != null;
+ boolean readOnly = false;
+
+ for ( UserManager userManager : userManagerPerId.values() )
+ {
+ readOnly = readOnly || userManager.isReadOnly();
+ }
+ return readOnly;
}
@Override
@@ -444,13 +460,29 @@ public class ArchivaConfigurableUsersMan
public User createGuestUser()
throws UserManagerException
{
- UserManager userManager = findFirstWritable();
- if ( userManager == null )
+ Exception lastException = null;
+ boolean allFailed = true;
+ User user = null;
+ for ( UserManager userManager : userManagerPerId.values() )
+ {
+ try
+ {
+ if ( !userManager.isReadOnly() )
+ {
+ user = userManager.createGuestUser();
+ allFailed = false;
+ }
+ }
+ catch ( Exception e )
+ {
+ lastException = e;
+ }
+ }
+ if ( lastException != null && allFailed )
{
- log.warn( "cannot find writable user manager implementation, skip guest user creation" );
- return null;
+ throw new UserManagerException( lastException.getMessage(), lastException );
}
- return userManager.createGuestUser();
+ return user;
}
@Override