@Deprecated public DefaultStorageFileItem( RepositoryRouter router, String path, boolean canRead, boolean canWrite, ContentLocator contentLocator ) { this( router, new ResourceStoreRequest( path, true, false ), canRead, canWrite, contentLocator ); }
/** * Pop request path. Used internally by Router. * * @return the string */ public String popRequestPath() { this.requestPath = pathStack.pop(); return getRequestPath(); }
private ResourceStoreRequest createResourceStoreRequest( final StorageCollectionItem item, final DeleteOperation operation ) { ResourceStoreRequest request = new ResourceStoreRequest( item ); request.getRequestContext().put( DeleteOperation.DELETE_OPERATION_CTX_KEY, operation ); return request; }
/** * Whether or not the requested path should be added to NFC. Item will be added to NFC if is not local/remote only. * * @param request resource store request * @return true if requested path should be added to NFC * @since 2.0 */ protected boolean shouldAddToNotFoundCache( final ResourceStoreRequest request ) { // if not local/remote only, add it to NFC return !request.isRequestLocalOnly() && !request.isRequestRemoteOnly(); }
/** * Creates a new request off from a given one. * * @param item */ public ResourceStoreRequest( ResourceStoreRequest request ) { this( request.getRequestPath(), true, false ); getRequestContext().setParentContext( request.getRequestContext() ); }
private String[] extractGemsQuery(ResourceStoreRequest request) { if (request.getRequestPath().contains("?gems=")) { int index = request.getRequestPath().indexOf('?'); return new String[]{ request.getRequestPath().substring(0, index), request.getRequestPath().substring(index + 1) }; } String query = ""; // only request with ...?gems=... are used by the Layout if (request.getRequestUrl() != null && request.getRequestUrl().contains("?gems=")) { query = request.getRequestUrl().substring(request.getRequestUrl().indexOf('?') + 1); } return new String[]{request.getRequestPath(), query}; }
ResourceStoreRequest result = new ResourceStoreRequest(resourceStorePath); getLogger().trace("Created ResourceStore request for {}", result.getRequestPath()); result.setRequestLocalOnly(isLocal(request, resourceStorePath)); result.setRequestRemoteOnly(isRemote(request, resourceStorePath)); result.setRequestAsExpired(asExpired(request, resourceStorePath)); result.setExternal(true); result.getRequestContext().put(REQUEST_RECEIVED_KEY, System.currentTimeMillis()); result.setDescribe(true); result.setIfModifiedSince(request.getConditions().getModifiedSince().getTime()); result.setIfNoneMatch(tag.getName()); result.getRequestContext().put(AccessManager.REQUEST_REMOTE_ADDRESS, getValidRemoteIPAddress(request)); result.getRequestContext().put(AccessManager.REQUEST_USER, subject.getPrincipal().toString()); result.getRequestContext().put(AccessManager.REQUEST_AGENT, request.getClientInfo().getAgent()); result.getRequestContext().put(AccessManager.REQUEST_CONFIDENTIAL, Boolean.TRUE); result.getRequestContext().put(AccessManager.REQUEST_CERTIFICATES, certs); result.setRequestUrl(request.getOriginalRef().toString());
if (!isP2MetadataItem(request.getRequestPath())) { final RepositoryItemUid itemUid = repository.createUid(request.getRequestPath()); final RepositoryItemUidLock itemLock = itemUid.getLock(); if (P2Constants.CONTENT_XML.equals(request.getRequestPath()) || P2Constants.CONTENT_JAR.equals(request.getRequestPath())) { try { final AbstractStorageItem contentItem = doRetrieveLocalItem(request, repository); if (request.isRequestLocalOnly() || !isContentOld(contentItem, repository)) { return contentItem; final StorageItem result = doRetrieveContentItems(request.getRequestContext(), repository).get( request.getRequestPath() ); doRetrieveArtifactsItems(request.getRequestContext(), repository); return result; else if (P2Constants.ARTIFACTS_XML.equals(request.getRequestPath()) || P2Constants.ARTIFACTS_JAR.equals(request.getRequestPath())) { try { final AbstractStorageItem artifactsItem = doRetrieveLocalItem(request, repository); if (request.isRequestLocalOnly() || !isArtifactsOld(artifactsItem, repository)) { return artifactsItem; deleteItemSilently(repository, new ResourceStoreRequest(P2Constants.PRIVATE_ROOT)); doRetrieveContentItems(request.getRequestContext(), repository); return doRetrieveArtifactsItems(request.getRequestContext(), repository).get(request.getRequestPath());
ResourceStoreRequest result = new ResourceStoreRequest( resourceStorePath ); getLogger().debug( "Created ResourceStore request for " + result.getRequestPath() ); result.setRequestLocalOnly( isLocal( request, resourceStorePath ) ); result.setRequestRemoteOnly( isRemote( request, resourceStorePath ) ); result.getRequestContext().put( REQUEST_RECEIVED_KEY, System.currentTimeMillis() ); result.setIfModifiedSince( request.getConditions().getModifiedSince().getTime() ); result.setIfNoneMatch( tag.getName() ); result.getRequestContext().put( AccessManager.REQUEST_REMOTE_ADDRESS, getValidRemoteIPAddress( request ) ); if ( subject != null && subject.getPrincipal() != null ) result.getRequestContext().put( AccessManager.REQUEST_USER, subject.getPrincipal().toString() ); result.getRequestContext().put( AccessManager.REQUEST_AGENT, request.getClientInfo().getAgent() ); result.getRequestContext().put( AccessManager.REQUEST_CONFIDENTIAL, Boolean.TRUE ); result.getRequestContext().put( AccessManager.REQUEST_CERTIFICATES, certs ); result.setRequestAppRootUrl( getContextRoot( request ).toString() ); result.setRequestUrl( request.getOriginalRef().toString() );
final ResourceStoreRequest result = new ResourceStoreRequest(resourceStorePath); result.getRequestContext().put(STOPWATCH_KEY, new Stopwatch().start()); result.setRequestLocalOnly(isLocal(request, resourceStorePath)); result.setRequestRemoteOnly(parameterMap.containsKey(Constants.REQ_QP_IS_REMOTE_PARAMETER)); result.setRequestAsExpired(parameterMap.containsKey(Constants.REQ_QP_AS_EXPIRED_PARAMETER)); result.setExternal(true); result.setIfModifiedSince(ifModifiedSince); result.setIfNoneMatch(ifNoneMatch); result.getRequestContext().put(AccessManager.REQUEST_REMOTE_ADDRESS, RemoteIPFinder.findIP(request)); result.getRequestContext().put(AccessManager.REQUEST_USER, subject.getPrincipal().toString()); result.getRequestContext().put(AccessManager.REQUEST_AGENT, request.getHeader("user-agent")); result.getRequestContext().put(AccessManager.REQUEST_CONFIDENTIAL, Boolean.TRUE); final List<X509Certificate> certs = Arrays.asList((X509Certificate[]) certArray); if (!certs.isEmpty()) { result.getRequestContext().put(AccessManager.REQUEST_CERTIFICATES, certs); result.setRequestAppRootUrl(getAppRootUrl(request)); final StringBuffer sb = request.getRequestURL(); if (request.getQueryString() != null) { sb.append("?").append(request.getQueryString());
@Override public StorageItem call() throws IllegalOperationException, ItemNotFoundException, IOException { final ResourceStoreRequest newreq = new ResourceStoreRequest( getRequest() ); newreq.setRequestLocalOnly( getRequest().isRequestLocalOnly() ); newreq.setRequestRemoteOnly( getRequest().isRequestRemoteOnly() ); try { return getRepository().retrieveItem( false, newreq ); } finally { getRequest().addProcessedRepository( getRepository() ); } }
protected void storeMergedMetadataItemDigest( ResourceStoreRequest request, String digest, List<StorageItem> sources, String algorithm ) throws IOException, UnsupportedStorageOperationException, IllegalOperationException { String digestFileName = request.getRequestPath() + "." + algorithm.toLowerCase(); String mimeType = getMimeSupport().guessMimeTypeFromPath( getMimeRulesSource(), digestFileName ); byte[] bytes = ( digest + '\n' ).getBytes( "UTF-8" ); ContentLocator contentLocator = new ByteArrayContentLocator( bytes, mimeType ); ResourceStoreRequest req = new ResourceStoreRequest( digestFileName ); req.getRequestContext().setParentContext( request.getRequestContext() ); // Metadata checksum files are not composite ones, they are derivatives of the Metadata (and metadata file _is_ // composite one) DefaultStorageFileItem digestFileItem = new DefaultStorageFileItem( this, req, true, false, contentLocator ); storeItem( false, digestFileItem ); }
new ResourceStoreRequest( itemUid.getPath(), request.isRequestLocalOnly(), request.isRequestRemoteOnly() ); if ( repo.getLocalStorage().containsItem( repo, repoRequest ) )
private void copyIndexPropertiesToTempDir( Repository repository, File tempDir ) { InputStream is = null; try { // Need to use RepositoryUID to get around security ResourceStoreRequest req = new ResourceStoreRequest( "/.index/" + IndexingContext.INDEX_FILE + ".properties" ); req.setRequestLocalOnly( true ); StorageFileItem item = (StorageFileItem) repository.retrieveItem( true, req ); // Hack to make sure that group properties isn't retrieved from child repo if ( repository.getId().equals( item.getRepositoryId() ) ) { is = item.getInputStream(); // FileUtils.copyStreamToFile closes the stream! FileUtils.copyStreamToFile( new RawInputStreamFacade( is ), new File( tempDir, IndexingContext.INDEX_FILE + ".properties" ) ); } } catch ( Exception e ) { getLogger().debug( "Unable to copy index properties file, continuing without it", e ); } }
protected ContentListDescribeRequestResource describeRequest(Context context, Request req, Response res, Variant variant, ResourceStoreRequest request) { ContentListDescribeRequestResource result = new ContentListDescribeRequestResource(); result.setRequestUrl(request.getRequestUrl()); result.setRequestPath(request.getRequestPath()); for (Map.Entry<String, Object> entry : request.getRequestContext().flatten().entrySet()) { result.addRequestContext(entry.toString()); } return result; }
/** * Checks if is request remote only. * * @return true, if is request remote only */ public boolean isRequestRemoteOnly() { return getRequestContext().isRequestRemoteOnly(); }
itemUid = ((Repository) store).createUid(request.getRequestPath()); repositoryRouter.dereferenceLink((StorageLinkItem) item, request.isRequestLocalOnly(), request.isRequestRemoteOnly());
if ( StringUtils.isEmpty( request.getRequestPath() ) ) request.setRequestPath( RepositoryItemUid.PATH_ROOT ); request.setRequestLocalOnly( true ); RepositoryStringUtils.getHumanizedNameString( this ), request.getRequestPath() ) ); RepositoryStringUtils.getHumanizedNameString( this ), request.getRequestPath() ) ); RepositoryStringUtils.getHumanizedNameString( this ), request.getRequestPath() ) ); this, request.getRequestPath(), request.getRequestContext().flatten(), expireCacheWalkerProcessor.isCacheAltered()
StringBuilder db = new StringBuilder( request.toString() ); db.append( " :: localOnly=" ).append( request.isRequestLocalOnly() ); db.append( ", remoteOnly=" ).append( request.isRequestRemoteOnly() ); final RepositoryItemUid itemUid = createUid( request.getRequestPath() ); if ( !request.isRequestRemoteOnly() ) if ( !request.isRequestRemoteOnly() )
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 ); } }