]> source.dussan.org Git - archiva.git/commitdiff
add repository roles from the configuration
authorJesse McConnell <jmcconnell@apache.org>
Wed, 23 May 2007 20:33:54 +0000 (20:33 +0000)
committerJesse McConnell <jmcconnell@apache.org>
Wed, 23 May 2007 20:33:54 +0000 (20:33 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@541057 13f79535-47bb-0310-9956-ffa450edef68

archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java

index 16f9c125ca471dbdd08d622e2c827640472e2908..d6e4fecce2c8c7af4ea56a53b335bb877f8fa584 100644 (file)
@@ -30,6 +30,8 @@ import org.apache.maven.archiva.repository.ArchivaConfigurationAdaptor;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.redback.role.RoleManager;
+import org.codehaus.plexus.redback.role.RoleManagerException;
 import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.registry.RegistryListener;
 
@@ -54,6 +56,11 @@ public class ConfigurationSynchronization
      */
     private ArchivaDAO dao;
 
+    /**
+     * @plexus.requirement role-hint="default"
+     */
+    RoleManager roleManager;
+    
     /**
      * @plexus.requirement
      */
@@ -102,13 +109,33 @@ public class ConfigurationSynchronization
                     ArchivaRepository drepo = ArchivaConfigurationAdaptor.toArchivaRepository( repoConfig );
                     drepo.getModel().setCreationSource( "configuration" );
                     dao.getRepositoryDAO().saveRepository( drepo );
-                }
+                }                                               
             }
             catch ( ArchivaDatabaseException e )
             {
                 // Log error.
                 getLogger().error( "Unable to add configured repositories to the database: " + e.getMessage(), e );
             }
+            
+            // manage roles for repositories
+            try 
+            {
+                if ( !roleManager.templatedRoleExists( "archiva-repository-observer", repoConfig.getId() ) )
+                {
+                    roleManager.createTemplatedRole( "archiva-repository-observer", repoConfig.getId() );
+                }              
+                
+                if ( !roleManager.templatedRoleExists( "archiva-repository-manager", repoConfig.getId() ) );
+                {
+                    roleManager.createTemplatedRole( "archiva-repository-manager", repoConfig.getId() );
+                }                                     
+            }
+            catch ( RoleManagerException e )
+            {
+                // Log error.
+                getLogger().error( "Unable to create roles for configured repositories: " + e.getMessage(), e );
+            }
+            
         }
     }