@Override public Boolean updateRepositoryGroup( RepositoryGroup repoGroup ) throws ArchivaRestServiceException { try { return repositoryGroupAdmin.updateRepositoryGroup( new org.apache.archiva.admin.model.beans.RepositoryGroup( repoGroup.getId(), new ArrayList<>( repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() ).mergedIndexTtl( repoGroup.getMergedIndexTtl() ).cronExpression( repoGroup.getCronExpression() ), getAuditInformation() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } }
@Override public void schedule( RepositoryGroup repositoryGroup, Path directory ) { if ( StringUtils.isEmpty( repositoryGroup.getCronExpression() ) ) { return; } CronTrigger cronTrigger = new CronTrigger( repositoryGroup.getCronExpression() ); List<String> repositories = repositoryGroup.getRepositories(); IndexMergerRequest indexMergerRequest = new IndexMergerRequest( repositories, true, repositoryGroup.getId(), repositoryGroup.getMergedIndexPath(), repositoryGroup.getMergedIndexTtl() ).mergedIndexDirectory( directory ); 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 ); }
@Override public Boolean deleteRepositoryFromGroup( String repositoryGroupId, String repositoryId, AuditInformation auditInformation ) throws RepositoryAdminException { RepositoryGroup repositoryGroup = getRepositoryGroup( repositoryGroupId ); if ( repositoryGroup == null ) { throw new RepositoryAdminException( "repositoryGroup with id " + repositoryGroupId + " doesn't not exists so cannot remove repository from it" ); } if ( !repositoryGroup.getRepositories().contains( repositoryId ) ) { throw new RepositoryAdminException( "repositoryGroup with id " + repositoryGroupId + " doesn't not contains repository with id" + repositoryId ); } repositoryGroup.removeRepository( repositoryId ); updateRepositoryGroup( repositoryGroup, auditInformation, false ); triggerAuditEvent( repositoryGroup.getId(), null, AuditEvent.DELETE_REPO_FROM_GROUP, auditInformation ); return Boolean.TRUE; }
@Override public Boolean addRepositoryToGroup( String repositoryGroupId, String repositoryId, AuditInformation auditInformation ) throws RepositoryAdminException { RepositoryGroup repositoryGroup = getRepositoryGroup( repositoryGroupId ); if ( repositoryGroup == null ) { throw new RepositoryAdminException( "repositoryGroup with id " + repositoryGroupId + " doesn't not exists so cannot add repository to it" ); } if ( repositoryGroup.getRepositories().contains( repositoryId ) ) { throw new RepositoryAdminException( "repositoryGroup with id " + repositoryGroupId + " already contain repository with id" + repositoryId ); } validateManagedRepositoriesExists( Arrays.asList( repositoryId ) ); repositoryGroup.addRepository( repositoryId ); updateRepositoryGroup( repositoryGroup, auditInformation, false ); triggerAuditEvent( repositoryGroup.getId(), null, AuditEvent.ADD_REPO_TO_GROUP, auditInformation ); return Boolean.TRUE; }
@Override public boolean equals( Object other ) { if ( this == other ) { return true; } if ( !( other instanceof RepositoryGroup ) ) { return false; } RepositoryGroup that = (RepositoryGroup) other; boolean result = true; result = result && ( getId() == null ? that.getId() == null : getId().equals( that.getId() ) ); return result; }
@Override public Map<String, List<String>> getRepositoryToGroupMap() throws RepositoryAdminException { Map<String, List<String>> map = new HashMap<>(); for ( RepositoryGroup group : getRepositoriesGroups() ) { for ( String repositoryId : group.getRepositories() ) { List<String> groups = map.get( repositoryId ); if ( groups == null ) { groups = new ArrayList<>(); map.put( repositoryId, groups ); } groups.add( group.getId() ); } } return map; }
@Override public List<RepositoryGroup> getRepositoriesGroups() throws RepositoryAdminException { List<RepositoryGroup> repositoriesGroups = new ArrayList<>( getArchivaConfiguration().getConfiguration().getRepositoryGroups().size() ); for ( RepositoryGroupConfiguration repositoryGroupConfiguration : getArchivaConfiguration().getConfiguration().getRepositoryGroups() ) { repositoriesGroups.add( new RepositoryGroup( repositoryGroupConfiguration.getId(), new ArrayList<String>( repositoryGroupConfiguration.getRepositories() ) ).mergedIndexPath( repositoryGroupConfiguration.getMergedIndexPath() ).mergedIndexTtl( repositoryGroupConfiguration.getMergedIndexTtl() ).cronExpression( repositoryGroupConfiguration.getCronExpression() ) ); } return repositoriesGroups; }
public Boolean validateRepositoryGroup( RepositoryGroup repositoryGroup, boolean updateMode ) throws RepositoryAdminException String repoGroupId = repositoryGroup.getId(); if ( StringUtils.isBlank( repoGroupId ) ) if ( repositoryGroup.getMergedIndexTtl() <= 0 )
/** * Method addRepository. * * @param string */ public void addRepository( String string ) { getRepositories().add( string ); }
RepositoryGroup repositoryGroup = new RepositoryGroup(); repositoryGroup.setId( repoGroupId ); String path = ".fooooo"; repositoryGroup.setRepositories( Arrays.asList( id ) ); repositoryGroup.setMergedIndexPath( path );
RepositoryGroup repositoryGroup = new RepositoryGroup(); repositoryGroup.setId( repoGroupId ); repositoryGroup.setRepositories( Arrays.asList( id ) );
@Override public Boolean deleteRepositoryGroup( String repositoryGroupId, AuditInformation auditInformation ) throws RepositoryAdminException { Configuration configuration = getArchivaConfiguration().getConfiguration(); RepositoryGroupConfiguration repositoryGroupConfiguration = configuration.getRepositoryGroupsAsMap().get( repositoryGroupId ); mergedRemoteIndexesScheduler.unschedule( new RepositoryGroup( repositoryGroupId, Collections.<String>emptyList() ) ); if ( repositoryGroupConfiguration == null ) { throw new RepositoryAdminException( "repositoryGroup with id " + repositoryGroupId + " doesn't not exists so cannot remove" ); } configuration.removeRepositoryGroup( repositoryGroupConfiguration ); triggerAuditEvent( repositoryGroupId, null, AuditEvent.DELETE_REPO_GROUP, auditInformation ); return Boolean.TRUE; }
@Override public void schedule( RepositoryGroup repositoryGroup, File directory ) { if ( StringUtils.isEmpty( repositoryGroup.getCronExpression() ) ) { return; } CronTrigger cronTrigger = new CronTrigger( repositoryGroup.getCronExpression() ); List<String> repositories = repositoryGroup.getRepositories(); IndexMergerRequest indexMergerRequest = new IndexMergerRequest( repositories, true, repositoryGroup.getId(), repositoryGroup.getMergedIndexPath(), repositoryGroup.getMergedIndexTtl() ).mergedIndexDirectory( directory ); 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 ); }
@Override public boolean equals( Object other ) { if ( this == other ) { return true; } if ( !( other instanceof RepositoryGroup ) ) { return false; } RepositoryGroup that = (RepositoryGroup) other; boolean result = true; result = result && ( getId() == null ? that.getId() == null : getId().equals( that.getId() ) ); return result; }
@Override public Map<String, List<String>> getGroupToRepositoryMap() throws RepositoryAdminException { Map<String, List<String>> map = new HashMap<>(); for ( ManagedRepository repo : getManagedRepositoryAdmin().getManagedRepositories() ) { for ( RepositoryGroup group : getRepositoriesGroups() ) { if ( !group.getRepositories().contains( repo.getId() ) ) { String groupId = group.getId(); List<String> repos = map.get( groupId ); if ( repos == null ) { repos = new ArrayList<>(); map.put( groupId, repos ); } repos.add( repo.getId() ); } } } return map; }
/** * Method removeRepository. * * @param string */ public void removeRepository( String string ) { getRepositories().remove( string ); }
@Override public Boolean updateRepositoryGroup( RepositoryGroup repoGroup ) throws ArchivaRestServiceException { try { return repositoryGroupAdmin.updateRepositoryGroup( new org.apache.archiva.admin.model.beans.RepositoryGroup( repoGroup.getId(), new ArrayList<>( repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() ).mergedIndexTtl( repoGroup.getMergedIndexTtl() ).cronExpression( repoGroup.getCronExpression() ), getAuditInformation() ); } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } }
@Override public Boolean addRepositoryGroup( RepositoryGroup repositoryGroup, AuditInformation auditInformation ) throws RepositoryAdminException { validateRepositoryGroup( repositoryGroup, false ); validateManagedRepositoriesExists( repositoryGroup.getRepositories() ); RepositoryGroupConfiguration repositoryGroupConfiguration = new RepositoryGroupConfiguration(); repositoryGroupConfiguration.setId( repositoryGroup.getId() ); repositoryGroupConfiguration.setRepositories( repositoryGroup.getRepositories() ); repositoryGroupConfiguration.setMergedIndexPath( repositoryGroup.getMergedIndexPath() ); repositoryGroupConfiguration.setMergedIndexTtl( repositoryGroup.getMergedIndexTtl() ); repositoryGroupConfiguration.setCronExpression( repositoryGroup.getCronExpression() ); Configuration configuration = getArchivaConfiguration().getConfiguration(); configuration.addRepositoryGroup( repositoryGroupConfiguration ); saveConfiguration( configuration ); triggerAuditEvent( repositoryGroup.getId(), null, AuditEvent.ADD_REPO_GROUP, auditInformation ); mergedRemoteIndexesScheduler.schedule( repositoryGroup, getMergedIndexDirectory( repositoryGroup.getId() ) ); return Boolean.TRUE; }
@Override public void unschedule( RepositoryGroup repositoryGroup ) { ScheduledFuture scheduledFuture = scheduledFutureMap.remove( repositoryGroup.getId() ); if ( scheduledFuture != null ) { scheduledFuture.cancel( true ); } } }
/** * Method removeRepository. * * @param string */ public void removeRepository( String string ) { getRepositories().remove( string ); }