Author: olamy
Date: Tue Aug 30 13:19:07 2011
New Revision: 1163199
URL: http://svn.apache.org/viewvc?rev=1163199&view=rev
Log:
ensure roles for repositories are correclty added/removed
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java?rev=1163199&r1=1163198&r2=1163199&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
Tue Aug 30 13:19:07 2011
@@ -143,14 +143,15 @@ public class DefaultManagedRepositoryAdm
addManagedRepository( managedRepository.getId(),
managedRepository.getLayout(), managedRepository.getName(),
managedRepository.getLocation(),
managedRepository.isBlockRedeployments(),
managedRepository.isReleases(),
managedRepository.isSnapshots(), needStageRepo,
- managedRepository.getCronExpression() ) !=
null;
+ managedRepository.getCronExpression(),
auditInformation ) != null;
}
private ManagedRepositoryConfiguration addManagedRepository( String
repoId, String layout, String name,
String
location, boolean blockRedeployments,
boolean
releasesIncluded, boolean snapshotsIncluded,
- boolean
stageRepoNeeded, String cronExpression )
+ boolean
stageRepoNeeded, String cronExpression,
+
AuditInformation auditInformation )
throws RepositoryAdminException
{
@@ -220,13 +221,20 @@ public class DefaultManagedRepositoryAdm
try
{
addRepository( repository, config );
+ addRepositoryRoles( repository );
if ( stageRepoNeeded )
{
ManagedRepositoryConfiguration stagingRepository =
getStageRepoConfig( repository );
addRepository( stagingRepository, config );
+ addRepositoryRoles( stagingRepository );
+ triggerAuditEvent( stagingRepository.getId(), null,
AuditEvent.ADD_MANAGED_REPO, auditInformation );
}
}
+ catch ( RoleManagerException e )
+ {
+ throw new RepositoryAdminException( "failed to add repository
roles " + e.getMessage(), e );
+ }
catch ( IOException e )
{
throw new RepositoryAdminException( "failed to add repository " +
e.getMessage(), e );
@@ -326,6 +334,15 @@ public class DefaultManagedRepositoryAdm
}
}
+ try
+ {
+ removeRepositoryRoles( repository );
+ }
+ catch ( RoleManagerException e )
+ {
+ throw new RepositoryAdminException(
+ "fail to remove repository roles for repository " +
repository.getId() + " : " + e.getMessage(), e );
+ }
return Boolean.TRUE;
}
@@ -357,7 +374,7 @@ public class DefaultManagedRepositoryAdm
addManagedRepository( managedRepository.getId(),
managedRepository.getLayout(), managedRepository.getName(),
managedRepository.getLocation(),
managedRepository.isBlockRedeployments(),
managedRepository.isReleases(),
managedRepository.isSnapshots(), needStageRepo,
- managedRepository.getCronExpression() );
+ managedRepository.getCronExpression(),
auditInformation );
// FIXME only location has changed from previous
boolean resetStats = true;
@@ -548,4 +565,22 @@ public class DefaultManagedRepositoryAdm
roleManager.createTemplatedRole(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId );
}
}
+
+ protected void removeRepositoryRoles( ManagedRepositoryConfiguration
existingRepository )
+ throws RoleManagerException
+ {
+ String repoId = existingRepository.getId();
+
+ if ( roleManager.templatedRoleExists(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId ) )
+ {
+ roleManager.removeTemplatedRole(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId );
+ }
+
+ if ( roleManager.templatedRoleExists(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId ) )
+ {
+ roleManager.removeTemplatedRole(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId );
+ }
+
+ log.debug( "removed user roles associated with repository {}", repoId
);
+ }
}
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java?rev=1163199&r1=1163198&r2=1163199&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java
Tue Aug 30 13:19:07 2011
@@ -22,6 +22,8 @@ import org.apache.archiva.admin.AuditInf
import org.apache.archiva.admin.mock.MockAuditListener;
import org.apache.archiva.audit.AuditEvent;
import org.apache.commons.lang.StringUtils;
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.users.User;
import org.codehaus.plexus.redback.users.memory.SimpleUser;
import org.junit.Test;
@@ -43,6 +45,9 @@ public class ManagedRepositoryAdminTest
@Inject
private MockAuditListener mockAuditListener;
+ @Inject
+ protected RoleManager roleManager;
+
@Test
public void getAllManagedRepos()
throws Exception
@@ -92,12 +97,22 @@ public class ManagedRepositoryAdminTest
assertNotNull( managedRepositoryAdmin.getManagedRepository(
"test-new-one" ) );
+ assertTrue(
+ roleManager.templatedRoleExists(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, "test-new-one" ) );
+ assertTrue(
+ roleManager.templatedRoleExists(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, "test-new-one" ) );
+
managedRepositoryAdmin.deleteManagedRepository( "test-new-one",
getFakeAuditInformation() );
repos = managedRepositoryAdmin.getManagedRepositories();
assertNotNull( repos );
assertEquals( initialSize, repos.size() );
+ assertFalse(
+ roleManager.templatedRoleExists(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, "test-new-one" ) );
+ assertFalse(
+ roleManager.templatedRoleExists(
ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, "test-new-one" ) );
+
assertEquals( 2, mockAuditListener.getAuditEvents().size() );
assertEquals( AuditEvent.ADD_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 0 ).getAction() );
@@ -144,7 +159,8 @@ public class ManagedRepositoryAdminTest
managedRepositoryAdmin.deleteManagedRepository( repo.getId(),
getFakeAuditInformation() );
- assertEquals( 3, mockAuditListener.getAuditEvents().size() );
+ assertEquals( "not 3 audit events " +
mockAuditListener.getAuditEvents(), 3,
+ mockAuditListener.getAuditEvents().size() );
assertEquals( AuditEvent.ADD_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 0 ).getAction() );
assertEquals( "root", mockAuditListener.getAuditEvents().get( 0
).getUserId() );