/** * The shadow is delegating it's availability to it's master, but we can still shot down the shadow only. */ @Override public LocalStatus getLocalStatus() { return super.getLocalStatus().shouldServiceRequest() && getMasterRepository().getLocalStatus().shouldServiceRequest() ? LocalStatus.IN_SERVICE : LocalStatus.OUT_OF_SERVICE; }
@Override public boolean expireCaches( final ResourceStoreRequest request, final WalkerFilter filter ) { if ( !getLocalStatus().shouldServiceRequest() ) { return false; } // at this level (we are not proxy) expireCaches() actually boils down to "expire NFC" only // we are NOT crawling local storage content to flip the isExpired flags to true on a hosted // repo, since those attributes in case of hosted (or any other non-proxy) repositories does not have any // meaning // 2nd, remove the items from NFC return expireNotFoundCaches( request, filter ); }
@Deprecated public void expireAllCaches( ResourceStoreRequest request ) { for ( Repository repository : repositoryRegistry.getRepositories() ) { if ( repository.getLocalStatus().shouldServiceRequest() ) { repository.expireCaches( request ); } } }
@Subscribe public void onEvent(final RepositoryEventLocalStatusChanged event) { if (this.equals(event.getRepository()) && event.getNewLocalStatus().shouldServiceRequest()) { createP2CompositeXmls(getMemberRepositoryIds(), true); } }
@Override public void expireCaches( final ResourceStoreRequest request ) { if ( !getLocalStatus().shouldServiceRequest() ) { return; } // expire proxy cache expireProxyCaches( request ); // do the stuff we inherited super.expireCaches( request ); }
@Override public boolean expireCaches( final ResourceStoreRequest request, final WalkerFilter filter ) { if ( !getLocalStatus().shouldServiceRequest() ) { return false; } // expire proxy cache boolean v1 = expireProxyCaches( request, filter ); // do the stuff we inherited boolean v2 = super.expireCaches( request, filter ); return v1 || v2; }
@Override public Collection<String> evictUnusedItems( ResourceStoreRequest request, final long timestamp ) { if ( !getLocalStatus().shouldServiceRequest() ) { return Collections.emptyList(); } getLogger().info( String.format( "Evicting unused items from group repository %s from path \"%s\"", RepositoryStringUtils.getHumanizedNameString( this ), request.getRequestPath() ) ); HashSet<String> result = new HashSet<String>(); // here, we just iterate over members and call evict final List<Repository> members = getMemberRepositories(); for ( Repository repository : members ) { result.addAll( repository.evictUnusedItems( request, timestamp ) ); } eventBus().post( new RepositoryEventEvictUnusedItems( this ) ); return result; }
public void moveItem( boolean fromTask, ResourceStoreRequest from, ResourceStoreRequest to ) throws UnsupportedStorageOperationException, IllegalOperationException, ItemNotFoundException, StorageException { if ( getLogger().isDebugEnabled() ) { getLogger().debug( getId() + ".moveItem() :: " + from.toString() + " --> " + to.toString() ); } if ( !getLocalStatus().shouldServiceRequest() ) { throw new RepositoryNotAvailableException( this ); } copyItem( fromTask, from, to ); deleteItem( fromTask, from ); }
public boolean recreateMavenMetadata( ResourceStoreRequest request ) { if ( !getLocalStatus().shouldServiceRequest() ) { return false; } boolean result = false; for ( Repository repository : getMemberRepositories() ) { if ( repository.getRepositoryKind().isFacetAvailable( MavenRepository.class ) ) { result |= ( (MavenRepository) repository ).recreateMavenMetadata( request ); } } return result; }
public Collection<StorageItem> list( boolean fromTask, StorageCollectionItem coll ) throws IllegalOperationException, ItemNotFoundException, StorageException { if ( getLogger().isDebugEnabled() ) { getLogger().debug( getId() + ".list() :: " + coll.getRepositoryItemUid().toString() ); } if ( !getLocalStatus().shouldServiceRequest() ) { throw new RepositoryNotAvailableException( this ); } maintainNotFoundCache( coll.getResourceStoreRequest() ); Collection<StorageItem> items = doListItems( new ResourceStoreRequest( coll ) ); for ( StorageItem item : items ) { item.getItemContext().putAll( coll.getItemContext() ); } return items; }
public Collection<StorageItem> list( boolean fromTask, ResourceStoreRequest request ) throws IllegalOperationException, ItemNotFoundException, StorageException { if ( getLogger().isDebugEnabled() ) { getLogger().debug( getId() + ".list() :: " + request.toString() ); } if ( !getLocalStatus().shouldServiceRequest() ) { throw new RepositoryNotAvailableException( this ); } request.addProcessedRepository( this ); StorageItem item = retrieveItem( fromTask, request ); if ( item instanceof StorageCollectionItem ) { return list( fromTask, (StorageCollectionItem) item ); } else { throw new ItemNotFoundException( request, this ); } }
@Override public Collection<String> evictUnusedItems( ResourceStoreRequest request, final long timestamp ) { if ( !getLocalStatus().shouldServiceRequest() ) { return Collections.emptyList(); } if ( getRepositoryKind().isFacetAvailable( ProxyRepository.class ) ) { Collection<String> result = doEvictUnusedItems( request, timestamp, new EvictUnusedMavenItemsWalkerProcessor( timestamp ), new EvictUnusedMavenItemsWalkerFilter() ); eventBus().post( new RepositoryEventEvictUnusedItems( this ) ); return result; } else { return super.evictUnusedItems( request, timestamp ); } }
/** * Archetype Catalog subjects are Maven2 hosted, proxy and group repositories that are In Service. */ private boolean isArchetypeCatalogSubject(final Repository repository) { return maven2ContentClass.isCompatible(repository.getRepositoryContentClass()) && repository.getLocalStatus().shouldServiceRequest() && (repository.getRepositoryKind().isFacetAvailable(HostedRepository.class) || repository.getRepositoryKind().isFacetAvailable(ProxyRepository.class) || repository.getRepositoryKind().isFacetAvailable(GroupRepository.class)); }
@Override public Collection<String> evictUnusedItems( ResourceStoreRequest request, final long timestamp ) { if ( !getLocalStatus().shouldServiceRequest() ) { return Collections.emptyList(); } if ( getRepositoryKind().isFacetAvailable( ProxyRepository.class ) ) { Collection<String> result = doEvictUnusedItems( request, timestamp, new EvictUnusedItemsWalkerProcessor( timestamp ), new EvictUnusedItemsWalkerFilter() ); eventBus().post( new RepositoryEventEvictUnusedItems( this ) ); return result; } else { return super.evictUnusedItems( request, timestamp ); } }
public boolean recreateMavenMetadata( ResourceStoreRequest request ) if ( !getLocalStatus().shouldServiceRequest() )
public boolean recreateAttributes( ResourceStoreRequest request, final Map<String, String> initialData ) if ( !getLocalStatus().shouldServiceRequest() )
public void synchronizeWithMaster() if ( !getLocalStatus().shouldServiceRequest() )
private boolean process( SnapshotRemovalRequest request, SnapshotRemovalResult result, Repository repository ) { // only from maven repositories, stay silent for others and simply skip if ( !repository.getRepositoryContentClass().isCompatible( maven2ContentClass ) ) { getLogger().debug( "Skipping '" + repository.getId() + "' is not a maven 2 repository" ); return false; } if ( !repository.getLocalStatus().shouldServiceRequest() ) { getLogger().debug( "Skipping '" + repository.getId() + "' the repository is out of service" ); return false; } if ( repository.getRepositoryKind().isFacetAvailable( ProxyRepository.class ) ) { getLogger().debug( "Skipping '" + repository.getId() + "' is a proxy repository" ); return false; } if ( repository.getRepositoryKind().isFacetAvailable( GroupRepository.class ) ) { process( request, result, repository.adaptToFacet( GroupRepository.class ) ); } else if ( repository.getRepositoryKind().isFacetAvailable( MavenRepository.class ) ) { result.addResult( removeSnapshotsFromMavenRepository( repository.adaptToFacet( MavenRepository.class ), request ) ); } return true; }
@Override public Object doRun() throws Exception { ResourceStoreRequest req = new ResourceStoreRequest( getResourceStorePath() ); if ( getRepositoryId() != null ) { getRepositoryRegistry().getRepository( getRepositoryId() ).expireCaches( req ); } else { for ( Repository repository : getRepositoryRegistry().getRepositories() ) { if ( repository.getLocalStatus().shouldServiceRequest() ) { repository.expireCaches( req ); } } } return null; }
throws IllegalOperationException, AccessDeniedException if ( !this.getLocalStatus().shouldServiceRequest() )