You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/10/02 20:57:20 UTC

svn commit: r581348 - in /maven/archiva/trunk: archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/ archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ archiva-web/archiva-webapp/src/main/resources/META-INF/ple...

Author: joakime
Date: Tue Oct  2 11:57:19 2007
New Revision: 581348

URL: http://svn.apache.org/viewvc?rev=581348&view=rev
Log:
Making archiva startup deterministic.


Added:
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java   (with props)
Modified:
    maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/ArchivaTaskScheduler.java
    maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/Banner.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ResolverFactoryInit.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml

Modified: maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/ArchivaTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/ArchivaTaskScheduler.java?rev=581348&r1=581347&r2=581348&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/ArchivaTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/ArchivaTaskScheduler.java Tue Oct  2 11:57:19 2007
@@ -55,4 +55,6 @@
     public void scheduleDatabaseTasks()
         throws TaskExecutionException;
 
+    public void startup()
+        throws ArchivaException;
 }

Modified: maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java?rev=581348&r1=581347&r2=581348&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java Tue Oct  2 11:57:19 2007
@@ -35,6 +35,7 @@
 import org.codehaus.plexus.registry.RegistryListener;
 import org.codehaus.plexus.scheduler.CronExpressionValidator;
 import org.codehaus.plexus.scheduler.Scheduler;
+import org.codehaus.plexus.taskqueue.Task;
 import org.codehaus.plexus.taskqueue.TaskQueue;
 import org.codehaus.plexus.taskqueue.TaskQueueException;
 import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
@@ -44,7 +45,6 @@
 import org.quartz.SchedulerException;
 
 import java.text.ParseException;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -92,17 +92,29 @@
 
     public static final String CRON_HOURLY = "0 0 * * * ?";
 
+    public void startup()
+        throws ArchivaException
+    {
+        try
+        {
+            start();
+        }
+        catch ( StartingException e )
+        {
+            throw new ArchivaException( e.getMessage(), e );
+        }
+    }
+    
     public void start()
         throws StartingException
     {
         try
         {
-            List repositories = archivaConfiguration.getConfiguration().getManagedRepositories();
+            List<ManagedRepositoryConfiguration> repositories = archivaConfiguration.getConfiguration()
+                .getManagedRepositories();
 
-            for ( Iterator i = repositories.iterator(); i.hasNext(); )
+            for ( ManagedRepositoryConfiguration repoConfig : repositories )
             {
-                ManagedRepositoryConfiguration repoConfig = (ManagedRepositoryConfiguration) i.next();
-
                 if ( repoConfig.isScanned() )
                 {
                     scheduleRepositoryJobs( repoConfig );
@@ -242,12 +254,11 @@
         // currently we have to reschedule all repo jobs because we don't know where the changed one came from
         if ( "refreshCronExpression".equals( propertyName ) )
         {
-            List repositories = archivaConfiguration.getConfiguration().getManagedRepositories();
+            List<ManagedRepositoryConfiguration> repositories = archivaConfiguration.getConfiguration()
+            .getManagedRepositories();
 
-            for ( Iterator i = repositories.iterator(); i.hasNext(); )
+            for ( ManagedRepositoryConfiguration repoConfig : repositories )
             {
-                ManagedRepositoryConfiguration repoConfig = (ManagedRepositoryConfiguration) i.next();
-
                 if ( repoConfig.getRefreshCronExpression() != null )
                 {
                     try
@@ -282,7 +293,7 @@
     public boolean isProcessingAnyRepositoryTask()
         throws ArchivaException
     {
-        List queue = null;
+        List<? extends Task> queue = null;
 
         try
         {
@@ -299,7 +310,7 @@
     public boolean isProcessingRepositoryTask( String repositoryId )
         throws ArchivaException
     {
-        List queue = null;
+        List<? extends Task> queue = null;
 
         try
         {
@@ -316,7 +327,7 @@
     public boolean isProcessingDatabaseTask()
         throws ArchivaException
     {
-        List queue = null;
+        List<? extends Task> queue = null;
 
         try
         {

Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java?rev=581348&view=auto
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java Tue Oct  2 11:57:19 2007
@@ -0,0 +1,74 @@
+package org.apache.maven.archiva.web.startup;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.archiva.common.ArchivaException;
+import org.apache.maven.archiva.scheduled.ArchivaTaskScheduler;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+
+/**
+ * ArchivaStartup - the startup of all archiva features in a deterministic order. 
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ * 
+ * @plexus.component 
+ *              role="org.apache.maven.archiva.web.startup.ArchivaStartup"
+ *              role-hint="default"
+ */
+public class ArchivaStartup
+    extends AbstractLogEnabled
+    implements Initializable
+{
+    /**
+     * @plexus.requirement role-hint="default"
+     */
+    private ConfigurationSynchronization configSync;
+
+    /**
+     * @plexus.requirement role-hint="default"
+     */
+    private ResolverFactoryInit resolverFactory;
+
+    /**
+     * @plexus.requirement role-hint="default"
+     */
+    private ArchivaTaskScheduler taskScheduler;
+
+    public void initialize()
+        throws InitializationException
+    {
+        Banner.display( getLogger(), ArchivaVersion.determineVersion( this.getClass().getClassLoader() ) );
+
+        try
+        {
+            configSync.startup();
+            resolverFactory.startup();
+            taskScheduler.startup();
+        }
+        catch ( ArchivaException e )
+        {
+            throw new InitializationException( "Unable to properly startup archiva: " + e.getMessage(), e );
+        }
+    }
+
+}

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ArchivaStartup.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/Banner.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/Banner.java?rev=581348&r1=581347&r2=581348&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/Banner.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/Banner.java Tue Oct  2 11:57:19 2007
@@ -22,7 +22,6 @@
 import org.apache.commons.lang.StringUtils;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 
 import java.util.regex.Matcher;
@@ -40,7 +39,6 @@
  */
 public class Banner
     extends AbstractLogEnabled
-    implements Initializable
 {
     public static String encode( String raw )
     {

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java?rev=581348&r1=581347&r2=581348&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java Tue Oct  2 11:57:19 2007
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.archiva.common.ArchivaException;
 import org.apache.maven.archiva.common.utils.PathUtil;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationNames;
@@ -29,14 +30,11 @@
 import org.apache.maven.archiva.model.ArchivaRepository;
 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;
 
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -50,7 +48,7 @@
  */
 public class ConfigurationSynchronization
     extends AbstractLogEnabled
-    implements RegistryListener, Initializable
+    implements RegistryListener
 {
     /**
      * @plexus.requirement role-hint="jdo"
@@ -80,12 +78,10 @@
         /* do nothing */
     }
 
-    private void synchConfiguration( List repos )
+    private void synchConfiguration( List<ManagedRepositoryConfiguration> repos )
     {
-        Iterator it = repos.iterator();
-        while ( it.hasNext() )
+        for ( ManagedRepositoryConfiguration repoConfig : repos )
         {
-            ManagedRepositoryConfiguration repoConfig = (ManagedRepositoryConfiguration) it.next();
             try
             {
                 try
@@ -139,8 +135,8 @@
         }
     }
 
-    public void initialize()
-        throws InitializationException
+    public void startup()
+        throws ArchivaException
     {
         synchConfiguration( archivaConfiguration.getConfiguration().getManagedRepositories() );
         archivaConfiguration.addChangeListener( this );

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ResolverFactoryInit.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ResolverFactoryInit.java?rev=581348&r1=581347&r2=581348&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ResolverFactoryInit.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ResolverFactoryInit.java Tue Oct  2 11:57:19 2007
@@ -19,12 +19,11 @@
  * under the License.
  */
 
+import org.apache.maven.archiva.common.ArchivaException;
 import org.apache.maven.archiva.database.project.ProjectModelToDatabaseListener;
 import org.apache.maven.archiva.repository.project.ProjectModelResolver;
 import org.apache.maven.archiva.repository.project.ProjectModelResolverFactory;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 
 /**
  * ResolverFactoryInit - Initialize the Resolver Factory, and hook it up to
@@ -39,13 +38,12 @@
  */
 public class ResolverFactoryInit
     extends AbstractLogEnabled
-    implements Initializable
 {
     /**
      * @plexus.requirement role-hint="database"
      */
     private ProjectModelResolver databaseResolver;
-    
+
     /**
      * @plexus.requirement 
      *          role="org.apache.maven.archiva.repository.project.resolvers.ProjectModelResolutionListener"
@@ -59,9 +57,9 @@
      * @plexus.requirement
      */
     private ProjectModelResolverFactory resolverFactory;
-    
-    public void initialize()
-        throws InitializationException
+
+    public void startup()
+        throws ArchivaException
     {
         if ( !resolverFactory.getCurrentResolverStack().hasResolver( databaseResolver ) )
         {

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml?rev=581348&r1=581347&r2=581348&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml Tue Oct  2 11:57:19 2007
@@ -21,23 +21,7 @@
 <plexus>
   <load-on-start>
     <component>
-      <role>org.apache.maven.archiva.web.startup.Banner</role>
-      <role-hint>default</role-hint>
-    </component>
-    <component>
-      <role>org.apache.maven.archiva.web.startup.ConfigurationSynchronization</role>
-      <role-hint>default</role-hint>
-    </component>
-    <component>
-      <role>org.apache.maven.archiva.web.startup.ResolverFactoryInit</role>
-      <role-hint>default</role-hint>
-    </component>
-    <component>
-      <role>org.apache.maven.archiva.web.startup.Banner</role>
-      <role-hint>default</role-hint>
-    </component>
-    <component>
-      <role>org.apache.maven.archiva.scheduled.ArchivaTaskScheduler</role>
+      <role>org.apache.maven.archiva.web.startup.ArchivaStartup</role>
       <role-hint>default</role-hint>
     </component>
     <component>