@Override protected StorageItem doRetrieveItem(final ResourceStoreRequest request) throws IllegalOperationException, ItemNotFoundException, StorageException { final RepositoryItemUid uid = createUid(P2Constants.METADATA_LOCK_PATH); final RepositoryItemUidLock lock = uid.getLock(); final boolean requestGroupLocalOnly = request.isRequestGroupLocalOnly(); try { lock.lock(Action.read); request.setRequestGroupLocalOnly(true); return super.doRetrieveItem(request); } finally { request.setRequestGroupLocalOnly(requestGroupLocalOnly); lock.unlock(); } }
@Override protected Collection<StorageItem> doListItems(final ResourceStoreRequest request) throws ItemNotFoundException, StorageException { final RepositoryItemUid uid = createUid(P2Constants.METADATA_LOCK_PATH); final RepositoryItemUidLock lock = uid.getLock(); final boolean requestGroupLocalOnly = request.isRequestGroupLocalOnly(); try { lock.lock(Action.read); request.setRequestGroupLocalOnly(true); return super.doListItems(request); } finally { request.setRequestGroupLocalOnly(requestGroupLocalOnly); lock.unlock(); } }
public void purge( final Repository repository, final long age ) throws IOException { ResourceStoreRequest req = new ResourceStoreRequest( getTrashPath( repository, RepositoryItemUid.PATH_ROOT ) ); // NEXUS-4642 shall not delete the directory, since causes a problem if this has been symlinked to another // directory. // walker and walk and changes for age if ( repository.getLocalStorage().containsItem( repository, req ) ) { req.setRequestGroupLocalOnly( true ); req.setRequestLocalOnly( true ); DefaultWalkerContext ctx = new DefaultWalkerContext( repository, req, new AffirmativeStoreWalkerFilter() ); ctx.getProcessors().add( new WastebasketWalker( age ) ); getWalker().walk( ctx ); } }