fix issues git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1551475 13f79535-47bb-0310-9956-ffa450edef68tags/archiva-2.0.0-RC1
@@ -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 ); |
@@ -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; |
@@ -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; | |||
} | |||
@@ -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 ); | |||
@@ -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 ) | |||
{ |