@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 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 void unschedule( RepositoryGroup repositoryGroup ) { ScheduledFuture scheduledFuture = scheduledFutureMap.remove( repositoryGroup.getId() ); if ( scheduledFuture != null ) { scheduledFuture.cancel( true ); } } }
@Override public void unschedule( RepositoryGroup repositoryGroup ) { ScheduledFuture scheduledFuture = scheduledFutureMap.remove( repositoryGroup.getId() ); if ( scheduledFuture != null ) { scheduledFuture.cancel( true ); } } }
@Override public Map<String, RepositoryGroup> getRepositoryGroupsAsMap() throws RepositoryAdminException { List<RepositoryGroup> repositoriesGroups = getRepositoriesGroups(); Map<String, RepositoryGroup> map = new HashMap<>( repositoriesGroups.size() ); for ( RepositoryGroup repositoryGroup : repositoriesGroups ) { map.put( repositoryGroup.getId(), repositoryGroup ); } return map; }
@Override public RepositoryGroup getRepositoryGroup( String repositoryGroupId ) throws ArchivaRestServiceException { for ( RepositoryGroup repositoryGroup : getRepositoriesGroups() ) { if ( StringUtils.equals( repositoryGroupId, repositoryGroup.getId() ) ) { return repositoryGroup; } } return null; }
@Override public RepositoryGroup getRepositoryGroup( String repositoryGroupId ) throws ArchivaRestServiceException { for ( RepositoryGroup repositoryGroup : getRepositoriesGroups() ) { if ( StringUtils.equals( repositoryGroupId, repositoryGroup.getId() ) ) { return repositoryGroup; } } return null; }
@Override public RepositoryGroup getRepositoryGroup( String repositoryGroupId ) throws RepositoryAdminException { List<RepositoryGroup> repositoriesGroups = getRepositoriesGroups(); for ( RepositoryGroup repositoryGroup : repositoriesGroups ) { if ( StringUtils.equals( repositoryGroupId, repositoryGroup.getId() ) ) { return repositoryGroup; } } return null; }
@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 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 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 List<RepositoryGroup> getRepositoriesGroups() throws ArchivaRestServiceException { try { List<RepositoryGroup> repositoriesGroups = new ArrayList<>( repositoryGroupAdmin.getRepositoriesGroups().size() ); for ( org.apache.archiva.admin.model.beans.RepositoryGroup repoGroup : repositoryGroupAdmin.getRepositoriesGroups() ) { repositoriesGroups.add( new RepositoryGroup( repoGroup.getId(), new ArrayList<>( repoGroup.getRepositories() ) ).mergedIndexPath( repoGroup.getMergedIndexPath() ).mergedIndexTtl( repoGroup.getMergedIndexTtl() ).cronExpression( repoGroup.getCronExpression() ) ); } return repositoriesGroups; } catch ( RepositoryAdminException e ) { throw new ArchivaRestServiceException( e.getMessage(), e ); } }
@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 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 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 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 repoGroup ) throws ArchivaRestServiceException { try { return repositoryGroupAdmin.addRepositoryGroup( 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 repoGroup ) throws ArchivaRestServiceException { try { return repositoryGroupAdmin.addRepositoryGroup( 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; }
private Boolean updateRepositoryGroup( RepositoryGroup repositoryGroup, AuditInformation auditInformation, boolean triggerAuditEvent ) throws RepositoryAdminException { validateRepositoryGroup( repositoryGroup, true ); validateManagedRepositoriesExists( repositoryGroup.getRepositories() ); Configuration configuration = getArchivaConfiguration().getConfiguration(); RepositoryGroupConfiguration repositoryGroupConfiguration = configuration.getRepositoryGroupsAsMap().get( repositoryGroup.getId() ); configuration.removeRepositoryGroup( repositoryGroupConfiguration ); repositoryGroupConfiguration.setRepositories( repositoryGroup.getRepositories() ); repositoryGroupConfiguration.setMergedIndexPath( repositoryGroup.getMergedIndexPath() ); repositoryGroupConfiguration.setMergedIndexTtl( repositoryGroup.getMergedIndexTtl() ); repositoryGroupConfiguration.setCronExpression( repositoryGroup.getCronExpression() ); configuration.addRepositoryGroup( repositoryGroupConfiguration ); saveConfiguration( configuration ); if ( triggerAuditEvent ) { triggerAuditEvent( repositoryGroup.getId(), null, AuditEvent.MODIFY_REPO_GROUP, auditInformation ); } mergedRemoteIndexesScheduler.unschedule( repositoryGroup ); mergedRemoteIndexesScheduler.schedule( repositoryGroup, getMergedIndexDirectory( repositoryGroup.getId() ) ); return Boolean.TRUE; }