]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1746] build merged index for groups with a cron schedule
authorOlivier Lamy <olamy@apache.org>
Tue, 17 Dec 2013 07:29:31 +0000 (07:29 +0000)
committerOlivier Lamy <olamy@apache.org>
Tue, 17 Dec 2013 07:29:31 +0000 (07:29 +0000)
fix issues

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1551475 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/merger/DefaultMergedRemoteIndexesScheduler.java
archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/beans/RepositoryGroup.java
archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
archiva-modules/archiva-scheduler/archiva-scheduler-api/src/main/java/org/apache/archiva/scheduler/MergedRemoteIndexesScheduler.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoryGroupService.java

index 480529b44e26df0b8573f18c61f4781bcf8f33a1..776253d99b04b71fc7fd1ab3fd6fb52fc235aaa1 100644 (file)
@@ -22,6 +22,7 @@ package org.apache.archiva.indexer.merger;
 import org.apache.archiva.admin.model.beans.RepositoryGroup;
 import org.apache.archiva.admin.model.group.RepositoryGroupAdmin;
 import org.apache.archiva.scheduler.MergedRemoteIndexesScheduler;
+import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.scheduling.TaskScheduler;
@@ -51,25 +52,20 @@ public class DefaultMergedRemoteIndexesScheduler
     @Named( value = "taskScheduler#mergeRemoteIndexes" )
     private TaskScheduler taskScheduler;
 
-    @Inject
-    private RepositoryGroupAdmin repositoryGroupAdmin;
-
     @Inject
     private IndexMerger indexMerger;
 
     private Map<String, ScheduledFuture> scheduledFutureMap = new ConcurrentHashMap<String, ScheduledFuture>();
 
     @Override
-    public void schedule( RepositoryGroup repositoryGroup )
+    public void schedule( RepositoryGroup repositoryGroup, File directory )
     {
-        if ( repositoryGroup.getCronExpression() == null )
+        if ( StringUtils.isEmpty( repositoryGroup.getCronExpression() ) )
         {
             return;
         }
         CronTrigger cronTrigger = new CronTrigger( repositoryGroup.getCronExpression() );
 
-        File directory = repositoryGroupAdmin.getMergedIndexDirectory( repositoryGroup.getId() );
-
         List<String> repositories = repositoryGroup.getRepositories();
 
         IndexMergerRequest indexMergerRequest =
@@ -79,6 +75,9 @@ public class DefaultMergedRemoteIndexesScheduler
         MergedRemoteIndexesTaskRequest taskRequest =
             new MergedRemoteIndexesTaskRequest( indexMergerRequest, indexMerger );
 
+        logger.info( "schedule merge remote index for group {} with cron {}", repositoryGroup.getId(),
+                     repositoryGroup.getCronExpression() );
+
         ScheduledFuture scheduledFuture =
             taskScheduler.schedule( new MergedRemoteIndexesTask( taskRequest ), cronTrigger );
         scheduledFutureMap.put( repositoryGroup.getId(), scheduledFuture );
index 2064cc026fe82b44b9ebd10eb6df2fd0ecbf355d..8a116e158d81cf799969495b3f52daba5d7395ac 100644 (file)
@@ -176,7 +176,7 @@ public class RepositoryGroup
         this.cronExpression = cronExpression;
     }
 
-    public RepositoryGroup mergedIndexCronExpression( String mergedIndexCronExpression )
+    public RepositoryGroup cronExpression( String mergedIndexCronExpression )
     {
         this.cronExpression = mergedIndexCronExpression;
         return this;
index e35c74c067325ad95330e95bf6e27cfa5695e6dd..abc3caae56caf6a607ead2b53c6c6c30ff23085b 100644 (file)
@@ -84,7 +84,7 @@ public class DefaultRepositoryGroupAdmin
         {
             for ( RepositoryGroup repositoryGroup : getRepositoriesGroups() )
             {
-                mergedRemoteIndexesScheduler.schedule( repositoryGroup );
+                mergedRemoteIndexesScheduler.schedule( repositoryGroup, getMergedIndexDirectory( repositoryGroup.getId() ) );
             }
         }
         catch ( RepositoryAdminException e )
@@ -112,7 +112,8 @@ public class DefaultRepositoryGroupAdmin
             repositoriesGroups.add( new RepositoryGroup( repositoryGroupConfiguration.getId(), new ArrayList<String>(
                 repositoryGroupConfiguration.getRepositories() ) ).mergedIndexPath(
                 repositoryGroupConfiguration.getMergedIndexPath() ).mergedIndexTtl(
-                repositoryGroupConfiguration.getMergedIndexTtl() ) );
+                repositoryGroupConfiguration.getMergedIndexTtl() ).cronExpression(
+                repositoryGroupConfiguration.getCronExpression() ) );
         }
 
         return repositoriesGroups;
@@ -148,7 +149,7 @@ public class DefaultRepositoryGroupAdmin
         configuration.addRepositoryGroup( repositoryGroupConfiguration );
         saveConfiguration( configuration );
         triggerAuditEvent( repositoryGroup.getId(), null, AuditEvent.ADD_REPO_GROUP, auditInformation );
-        mergedRemoteIndexesScheduler.schedule( repositoryGroup );
+        mergedRemoteIndexesScheduler.schedule( repositoryGroup, getMergedIndexDirectory( repositoryGroup.getId() ) );
         return Boolean.TRUE;
     }
 
@@ -202,7 +203,7 @@ public class DefaultRepositoryGroupAdmin
             triggerAuditEvent( repositoryGroup.getId(), null, AuditEvent.MODIFY_REPO_GROUP, auditInformation );
         }
         mergedRemoteIndexesScheduler.unschedule( repositoryGroup );
-        mergedRemoteIndexesScheduler.schedule( repositoryGroup );
+        mergedRemoteIndexesScheduler.schedule( repositoryGroup, getMergedIndexDirectory( repositoryGroup.getId() ) );
         return Boolean.TRUE;
     }
 
index ae96cfe6482d57112acf0a9a186af5dea8424962..b799861c25c77a33cd97f20661ffc0b4c61ec716 100644 (file)
@@ -21,6 +21,8 @@ package org.apache.archiva.scheduler;
 
 import org.apache.archiva.admin.model.beans.RepositoryGroup;
 
+import java.io.File;
+
 /**
  * @author Olivier Lamy
  * @since 2.0.0
@@ -33,7 +35,7 @@ public interface MergedRemoteIndexesScheduler
      * remote indexes
      * @param repositoryGroup
      */
-    void schedule( RepositoryGroup repositoryGroup );
+    void schedule( RepositoryGroup repositoryGroup, File directory );
 
     void unschedule( RepositoryGroup repositoryGroup );
 
index 1b57591014d6d7bec9ba8e2f7514fa53a8376f34..afabd6676694397aa335644ebeec20396f582c80 100644 (file)
@@ -33,7 +33,7 @@ import java.util.List;
 /**
  * @author Olivier Lamy
  */
-@Service( "repositoryGroupService#rest" )
+@Service("repositoryGroupService#rest")
 public class DefaultRepositoryGroupService
     extends AbstractRestService
     implements RepositoryGroupService
@@ -52,8 +52,8 @@ public class DefaultRepositoryGroupService
             for ( org.apache.archiva.admin.model.beans.RepositoryGroup repoGroup : repositoryGroupAdmin.getRepositoriesGroups() )
             {
                 repositoriesGroups.add( new RepositoryGroup( repoGroup.getId(), new ArrayList<String>(
-                    repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() )
-                        .mergedIndexTtl( repoGroup.getMergedIndexTtl() ) );
+                    repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() ).mergedIndexTtl(
+                    repoGroup.getMergedIndexTtl() ).cronExpression( repoGroup.getCronExpression() ) );
             }
             return repositoriesGroups;
         }
@@ -83,8 +83,9 @@ public class DefaultRepositoryGroupService
         {
             return repositoryGroupAdmin.addRepositoryGroup(
                 new org.apache.archiva.admin.model.beans.RepositoryGroup( repoGroup.getId(), new ArrayList<String>(
-                    repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() )
-                    .mergedIndexTtl( repoGroup.getMergedIndexTtl() ), getAuditInformation() );
+                    repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() ).mergedIndexTtl(
+                    repoGroup.getMergedIndexTtl() ).cronExpression( repoGroup.getCronExpression() ),
+                getAuditInformation() );
         }
         catch ( RepositoryAdminException e )
         {
@@ -99,8 +100,9 @@ public class DefaultRepositoryGroupService
         {
             return repositoryGroupAdmin.updateRepositoryGroup(
                 new org.apache.archiva.admin.model.beans.RepositoryGroup( repoGroup.getId(), new ArrayList<String>(
-                    repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() )
-                    .mergedIndexTtl( repoGroup.getMergedIndexTtl() ), getAuditInformation() );
+                    repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() ).mergedIndexTtl(
+                    repoGroup.getMergedIndexTtl() ).cronExpression( repoGroup.getCronExpression() ),
+                getAuditInformation() );
         }
         catch ( RepositoryAdminException e )
         {