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 );


Reply via email to