Author: olamy
Date: Thu Sep 1 06:01:58 2011
New Revision: 1163912
URL: http://svn.apache.org/viewvc?rev=1163912&view=rev
Log:
[MRM-1505] api to configure ManagedRepository
fix update with staged repo .
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/main/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdmin.java
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdminTest.java
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/resources/log4j.xml
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.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=1163912&r1=1163911&r2=1163912&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
Thu Sep 1 06:01:58 2011
@@ -54,6 +54,7 @@ import javax.inject.Named;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -340,7 +341,6 @@ public class DefaultManagedRepositoryAdm
}
}
-
// olamy: copy list for reading as a unit test in webapp fail with
ConcurrentModificationException
List<ProxyConnectorConfiguration> proxyConnectors =
new ArrayList<ProxyConnectorConfiguration>(
config.getProxyConnectors() );
@@ -380,63 +380,50 @@ public class DefaultManagedRepositoryAdm
public Boolean updateManagedRepository( ManagedRepository
managedRepository, boolean needStageRepo,
- AuditInformation auditInformation )
+ AuditInformation auditInformation,
boolean resetStats )
throws RepositoryAdminException
{
// Ensure that the fields are valid.
Configuration configuration = archivaConfiguration.getConfiguration();
+ log.debug( "updateManagedConfiguration repo {} needStage {} resetStats
{} ",
+ Arrays.asList( managedRepository, needStageRepo, resetStats
).toArray() );
+
ManagedRepositoryConfiguration toremove =
configuration.findManagedRepositoryById( managedRepository.getId() );
if ( toremove != null )
{
configuration.removeManagedRepository( toremove );
}
- // FIXME the case of the attached staging repository
- /*
+
+ ManagedRepositoryConfiguration stagingRepository = getStageRepoConfig(
toremove );
+
+ // TODO remove content from old if path has changed !!!!!
+
if ( stagingRepository != null )
{
- removeRepository( stagingRepository.getId(), configuration );
- }*/
+ configuration.removeManagedRepository( stagingRepository );
+ }
+
+ if ( toremove != null && stagingRepository != null )
+ {
+ saveConfiguration( configuration );
+ }
- // Save the repository configuration.
- String result;
- RepositorySession repositorySession =
repositorySessionFactory.createSession();
ManagedRepositoryConfiguration managedRepositoryConfiguration =
addManagedRepository( managedRepository.getId(),
managedRepository.getLayout(), managedRepository.getName(),
managedRepository.getLocation(),
managedRepository.isBlockRedeployments(),
managedRepository.isReleases(),
managedRepository.isSnapshots(), needStageRepo,
managedRepository.getCronExpression(),
auditInformation );
- // FIXME only location has changed from previous
- boolean resetStats = true;
+ // Save the repository configuration.
+ RepositorySession repositorySession =
repositorySessionFactory.createSession();
try
{
triggerAuditEvent( managedRepository.getId(), null,
AuditEvent.MODIFY_MANAGED_REPO, auditInformation );
addRepositoryRoles( managedRepositoryConfiguration );
- // FIXME this staging part !!
-
- //update changes of the staging repo
- /*if ( stageNeeded )
- {
-
- stagingRepository = getStageRepoConfig( configuration );
- addRepository( stagingRepository, configuration );
- addRepositoryRoles( stagingRepository );
-
- }*/
- //delete staging repo when we dont need it
- /*
- if ( !stageNeeded )
- {
- stagingRepository = getStageRepoConfig( configuration );
- removeRepository( stagingRepository.getId(), configuration );
- removeContents( stagingRepository );
- removeRepositoryRoles( stagingRepository );
- }*/
-
saveConfiguration( this.archivaConfiguration.getConfiguration() );
if ( resetStats )
{
@@ -451,7 +438,7 @@ public class DefaultManagedRepositoryAdm
// olamy : IMHO we are fine to ignore issue with scheduling
scanning
// as here the repo has been updated
scanRepository( managedRepository.getId(), true );
- // FIXME staging !!
+ // TODO indexing staging repo really needed ??
/*
if ( stageNeeded )
{
@@ -564,7 +551,7 @@ public class DefaultManagedRepositoryAdm
{
if ( repositoryTaskScheduler.isProcessingRepositoryTask( repositoryId
) )
{
- log.info( "scanning of repository with id {} already scheduled" );
+ log.info( "scanning of repository with id {} already scheduled",
repositoryId );
}
RepositoryTask task = new RepositoryTask();
task.setRepositoryId( repositoryId );
@@ -618,6 +605,9 @@ public class DefaultManagedRepositoryAdm
log.debug( "removed user roles associated with repository {}", repoId
);
}
+ //--------------------------
+ // setters/getters
+ //--------------------------
public ArchivaConfiguration getArchivaConfiguration()
{
@@ -668,4 +658,14 @@ public class DefaultManagedRepositoryAdm
{
this.auditListeners = auditListeners;
}
+
+ public RepositoryArchivaTaskScheduler getRepositoryTaskScheduler()
+ {
+ return repositoryTaskScheduler;
+ }
+
+ public void setRepositoryTaskScheduler( RepositoryArchivaTaskScheduler
repositoryTaskScheduler )
+ {
+ this.repositoryTaskScheduler = repositoryTaskScheduler;
+ }
}
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdmin.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/ManagedRepositoryAdmin.java?rev=1163912&r1=1163911&r2=1163912&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdmin.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/ManagedRepositoryAdmin.java
Thu Sep 1 06:01:58 2011
@@ -45,7 +45,7 @@ public interface ManagedRepositoryAdmin
Boolean updateManagedRepository( ManagedRepository managedRepository,
boolean needStageRepo,
- AuditInformation auditInformation )
+ AuditInformation auditInformation,
boolean resetStats )
throws RepositoryAdminException;
}
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=1163912&r1=1163911&r2=1163912&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
Thu Sep 1 06:01:58 2011
@@ -161,7 +161,7 @@ public class ManagedRepositoryAdminTest
repo.setLocation( repoLocation );
- managedRepositoryAdmin.updateManagedRepository( repo, false,
getFakeAuditInformation() );
+ managedRepositoryAdmin.updateManagedRepository( repo, false,
getFakeAuditInformation(), false );
repo = managedRepositoryAdmin.getManagedRepository( repoId );
assertNotNull( repo );
@@ -178,16 +178,7 @@ public class ManagedRepositoryAdminTest
assertTemplateRoleNotExists( repoId );
- 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() );
- assertEquals( "archiva-localhost",
mockAuditListener.getAuditEvents().get( 0 ).getRemoteIP() );
-
- assertEquals( AuditEvent.MODIFY_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 1 ).getAction() );
-
- assertEquals( AuditEvent.DELETE_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 2 ).getAction() );
+ assertAuditListenerCallAndUpdateAddAndDelete( false );
mockAuditListener.clearEvents();
}
@@ -236,6 +227,8 @@ public class ManagedRepositoryAdminTest
assertFalse( new File( repoLocation + STAGE_REPO_ID_END ).exists() );
+ assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
+
repos = managedRepositoryAdmin.getManagedRepositories();
assertNotNull( repos );
assertEquals( initialSize, repos.size() );
@@ -247,6 +240,76 @@ public class ManagedRepositoryAdminTest
mockAuditListener.clearEvents();
}
+ @Test
+ public void updateDeleteManagedRepoWithStagedRepo()
+ throws Exception
+ {
+ String repoId = "test-new-one";
+
+ String repoLocation = APPSERVER_BASE_PATH + File.separator +
"new-path";
+
+ String stageRepoLocation = APPSERVER_BASE_PATH + File.separator +
repoId;
+
+ File repoDir = clearRepoLocation( repoLocation );
+
+ mockAuditListener.clearEvents();
+ List<ManagedRepository> repos =
managedRepositoryAdmin.getManagedRepositories();
+ assertNotNull( repos );
+ int initialSize = repos.size();
+ assertTrue( initialSize > 0 );
+
+ ManagedRepository repo = new ManagedRepository();
+ repo.setId( repoId );
+ repo.setName( "test repo" );
+ repo.setLocation( repoLocation );
+ managedRepositoryAdmin.addManagedRepository( repo, false,
getFakeAuditInformation() );
+
+ assertTemplateRoleExists( repoId );
+
+ assertFalse( new File( repoLocation + STAGE_REPO_ID_END ).exists() );
+
+ assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
+
+ repos = managedRepositoryAdmin.getManagedRepositories();
+ assertNotNull( repos );
+ assertEquals( initialSize + 1, repos.size() );
+
+ String newName = "test repo update";
+
+ repo.setName( newName );
+
+ repo.setLocation( repoLocation );
+
+ managedRepositoryAdmin.updateManagedRepository( repo, true,
getFakeAuditInformation(), false );
+
+ repo = managedRepositoryAdmin.getManagedRepository( repoId );
+ assertNotNull( repo );
+ assertEquals( newName, repo.getName() );
+ assertEquals( new File( repoLocation ).getCanonicalPath(), new File(
repo.getLocation() ).getCanonicalPath() );
+ assertTrue( new File( repoLocation ).exists() );
+
+ assertTemplateRoleExists( repoId );
+
+ assertTrue( new File( stageRepoLocation + STAGE_REPO_ID_END ).exists()
);
+
+ assertTemplateRoleExists( repoId + STAGE_REPO_ID_END );
+
+ managedRepositoryAdmin.deleteManagedRepository( repo.getId(),
getFakeAuditInformation(), false );
+
+ // check deleteContents false
+ assertTrue( repoDir.exists() );
+
+ assertTemplateRoleNotExists( repoId );
+
+ assertTrue( new File( stageRepoLocation + STAGE_REPO_ID_END ).exists()
);
+
+ assertTemplateRoleNotExists( repoId + STAGE_REPO_ID_END );
+
+ assertAuditListenerCallAndUpdateAddAndDelete( true );
+
+ mockAuditListener.clearEvents();
+ }
+
//----------------------------------
// utility methods
//----------------------------------
@@ -278,6 +341,36 @@ public class ManagedRepositoryAdminTest
assertEquals( "root", mockAuditListener.getAuditEvents().get( 0
).getUserId() );
}
+ private void assertAuditListenerCallAndUpdateAddAndDelete( boolean
stageNeeded )
+ {
+ if ( stageNeeded )
+ {
+ assertEquals( "not 4 audit events " +
mockAuditListener.getAuditEvents(), 4,
+ mockAuditListener.getAuditEvents().size() );
+ }
+ else
+ {
+ 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() );
+ assertEquals( "archiva-localhost",
mockAuditListener.getAuditEvents().get( 0 ).getRemoteIP() );
+
+ if ( stageNeeded )
+ {
+ assertEquals( AuditEvent.ADD_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 1 ).getAction() );
+ assertEquals( AuditEvent.MODIFY_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 2 ).getAction() );
+ assertEquals( AuditEvent.DELETE_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 3 ).getAction() );
+ }
+ else
+ {
+ assertEquals( AuditEvent.MODIFY_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 1 ).getAction() );
+ assertEquals( AuditEvent.DELETE_MANAGED_REPO,
mockAuditListener.getAuditEvents().get( 2 ).getAction() );
+ }
+
+ }
+
private File clearRepoLocation( String path )
throws Exception
{
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/resources/log4j.xml
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/resources/log4j.xml?rev=1163912&r1=1163911&r2=1163912&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/resources/log4j.xml
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/resources/log4j.xml
Thu Sep 1 06:01:58 2011
@@ -30,7 +30,7 @@
- <logger name="org.codehaus.redback.rest.services" >
+ <logger name="org.apache.archiva.admin.repository.managed" >
<level value="debug"/>
</logger>
<logger name="JPOX">
@@ -38,7 +38,7 @@
</logger>
<logger name="org.springframework">
- <level value="info"/>
+ <level value="error"/>
</logger>
<root>
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java?rev=1163912&r1=1163911&r2=1163912&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
Thu Sep 1 06:01:58 2011
@@ -50,6 +50,7 @@ public class EditManagedRepositoryAction
implements Preparable, Validateable
{
/**
+ * FIXME we must manipulate beans from repo admin api
* The model for this action.
*/
private ManagedRepositoryConfiguration repository;
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java?rev=1163912&r1=1163911&r2=1163912&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
Thu Sep 1 06:01:58 2011
@@ -107,7 +107,6 @@ public class EditManagedRepositoryAction
metadataRepository = mock( MetadataRepository.class );
RepositorySession repositorySession = mock( RepositorySession.class );
when( repositorySession.getRepository() ).thenReturn(
metadataRepository );
- //TestRepositorySessionFactory factory =
(TestRepositorySessionFactory) lookup( RepositorySessionFactory.class );
TestRepositorySessionFactory factory = applicationContext.getBean(
TestRepositorySessionFactory.class );
factory.setRepositorySession( repositorySession );
action.setRepositorySessionFactory( factory );