public String[] getSelectors() { return requestPathInfo.getSelectors(); }
public String getSuffix() { return requestPathInfo.getSuffix(); }
/** * The externally provided key may be wrapped to add more key elements in order * to restrict the cached object's scope to a specific component when safe mode is enabled. * * @return A request-state sensitive key in {@link Configuration#safeMode()}, the original key otherwise. */ private Object createSafeModeKey(Object key) { // Create a request-state sensitive key to scope the cached model to a request with specific parameters. final SlingHttpServletRequest request = this.requestHolder.get(); if (request == null) { return key; } final RequestPathInfo requestPathInfo = request.getRequestPathInfo(); return new Key(key, new Key(substringBefore(requestPathInfo.getResourcePath(), "/jcr:content"), requestPathInfo.getSelectorString(), requestPathInfo.getExtension(), requestPathInfo.getSuffix(), request.getQueryString())); }
@Override public String getServletPath() { final RequestPathInfo pathInfo = getRequestPathInfo(); return pathInfo.getResourcePath() + "." + pathInfo.getExtension(); } }
if (rpi.getExtension() != null) { if (rpi.getSelectorString() != null) { target.append('.').append(rpi.getSelectorString()); target.append('.').append(rpi.getExtension()); if (rpi.getSuffix() != null) { target.append(rpi.getSuffix());
@Override protected void doRun(final SlingHttpServletRequest request, final PostResponse response, final List<Modification> changes) throws PersistenceException { // SLING-3203: selectors, extension and suffix make no sense here and // might lead to deleting other resources than the one the user means. final RequestPathInfo rpi = request.getRequestPathInfo(); if( (rpi.getSelectors() != null && rpi.getSelectors().length > 0) || (rpi.getExtension() != null && rpi.getExtension().length() > 0) || (rpi.getSuffix() != null && rpi.getSuffix().length() > 0)) { response.setStatus( HttpServletResponse.SC_FORBIDDEN, "DeleteOperation request cannot include any selectors, extension or suffix"); return; } final VersioningConfiguration versioningConfiguration = getVersioningConfiguration(request); final boolean deleteChunks = isDeleteChunkRequest(request); final Iterator<Resource> res = getApplyToResources(request); if (res == null) { final Resource resource = request.getResource(); deleteResource(resource, changes, versioningConfiguration, deleteChunks); } else { while (res.hasNext()) { final Resource resource = res.next(); deleteResource(resource, changes, versioningConfiguration, deleteChunks); } } }
pw.println("<dt>Path</dt>"); pw.print("<dd>"); pw.print(ResponseUtil.escapeXml(requestPathInfo.getResourcePath())); pw.print("<br/>"); pw.print(CONSOLE_PATH_WARNING); pw.println("<dt>Selectors</dt>"); pw.print("<dd>"); if (requestPathInfo.getSelectors().length == 0) { pw.print("<none>"); } else { pw.print("["); pw.print(ResponseUtil.escapeXml(StringUtils.join(requestPathInfo.getSelectors(), ", "))); pw.print("]"); pw.println("<dt>Extension</dt>"); pw.print("<dd>"); pw.print(ResponseUtil.escapeXml(requestPathInfo.getExtension())); pw.println("</dd>"); pw.println("</dl>"); pw.println("<dt>Suffix</dt>"); pw.print("<dd>"); pw.print(ResponseUtil.escapeXml(requestPathInfo.getSuffix())); pw.println("</dd>"); pw.println("</dl>"); if (StringUtils.isNotBlank(requestPathInfo.getResourcePath())) { final Collection<Resource> servlets;
public static LibraryType fromRequest(SlingHttpServletRequest request) { String ext = request.getRequestPathInfo().getExtension(); if (ext.equals(JS_EXTENSION)) return JS; if (ext.equals(CSS_EXTENSION)) { return CSS; } return null; } }
/** * Creates a <code>ResourceCollector</code> for the given * <code>request</code>. If the request is a GET or HEAD request, a * specialized instance is returned which also takes the request selectors * and request extension into account for finding servlet resources. * Otherwise an instance of this class itself is returned which just takes * the resource type and request method name into account. * * @param request The <code>SlingHttpServletRequest</code> for which to * return a <code>ResourceCollector</code>. * @return The <code>ResourceCollector</code> to find servlets and scripts * suitable for handling the <code>request</code>. */ public static ResourceCollector create( final SlingHttpServletRequest request, final String[] executionPaths, final String[] defaultExtensions) { final RequestPathInfo requestPathInfo = request.getRequestPathInfo(); final boolean isDefaultExtension = ArrayUtils.contains(defaultExtensions, requestPathInfo.getExtension()); return new ResourceCollector(request.getResource(), requestPathInfo.getExtension(), executionPaths, isDefaultExtension, request.getMethod(), requestPathInfo.getSelectors()); }
buf.append(replaceExt); } else if (originalPathInfo.getExtension() == null && defaultExt != null) { buf.append('.'); buf.append(defaultExt); } else if (originalPathInfo.getExtension() != null) { buf.append('.'); buf.append(originalPathInfo.getExtension()); buf.append(sanitize(replaceSuffix)); } else if (originalPathInfo.getSuffix() != null) { buf.append(sanitize(originalPathInfo.getSuffix()));
url.append(info.getResourcePath()); if (info.getSelectorString() != null) { url.append('.').append(info.getSelectorString()); if (info.getSuffix() != null) { url.append('/').append(info.getSuffix());
@Nullable private String getRedirectLocation(SlingHttpServletRequest request, long lastModifiedEpoch) { RequestPathInfo requestPathInfo = request.getRequestPathInfo(); if (request.getResource().isResourceType(IMAGE_RESOURCE_TYPE)) { return Joiner.on('.').join(Text.escapePath(request.getContextPath() + requestPathInfo.getResourcePath()), requestPathInfo.getSelectorString(), requestPathInfo.getExtension() + "/" + lastModifiedEpoch, requestPathInfo.getExtension()); } long lastModifiedSuffix = getRequestLastModifiedSuffix(request.getPathInfo()); String resourcePath = lastModifiedSuffix > 0 ? ResourceUtil.getParent(request.getPathInfo()) : request.getPathInfo(); String extension = FilenameUtils.getExtension(resourcePath); if (StringUtils.isNotEmpty(resourcePath)) { if (StringUtils.isNotEmpty(extension)) { resourcePath = resourcePath.substring(0, resourcePath.length() - extension.length() - 1); } return request.getContextPath() + Text.escapePath(resourcePath) + "/" + lastModifiedEpoch + "." + requestPathInfo.getExtension(); } return null; }
public String getSelectorString() { return requestPathInfo.getSelectorString(); }
@Override public String getResourcePath() { return info.getResourcePath(); }
@Override protected void doGet(@Nonnull SlingHttpServletRequest request, @Nonnull SlingHttpServletResponse response) throws IOException { RequestPathInfo requestPathInfo = request.getRequestPathInfo(); String suffix = requestPathInfo.getSuffix(); String imageName = StringUtils.isNotEmpty(suffix) ? FilenameUtils.getName(suffix) : ""; String[] selectors = requestPathInfo.getSelectors(); if (selectors.length < 1 || selectors.length > 3) { LOGGER.error("Expected 1, 2 or 3 selectors, instead got: {}.", Arrays.toString(selectors)); String suffixExtension = FilenameUtils.getExtension(suffix); if (StringUtils.isNotEmpty(suffixExtension)) { if (!suffixExtension.equals(requestPathInfo.getExtension())) { LOGGER.error("The suffix part defines a different extension than the request: {}.", suffix); response.sendError(HttpServletResponse.SC_NOT_FOUND); String imageType = getImageType(requestPathInfo.getExtension()); if (imageComponent.source == Source.FILE) { transformAndStreamFile(response, componentProperties, resizeWidth, quality, imageComponent.imageResource, imageType, imageName); String imageType = getImageType(requestPathInfo.getExtension()); if (imageComponent.source == Source.FILE) { transformAndStreamFile(response, componentProperties, defaultResizeWidth, quality, imageComponent.imageResource, imageType, imageName);
@Override public boolean handleRequest(SlingHttpServletRequest request) { return request.getRequestPathInfo().getExtension().equals(CSV_EXTENSION); }
@Override protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws IOException { Map<String, String> data = null; if (request.getRequestPathInfo().getSelectors().length > 0) { final String label = request.getRequestPathInfo().getSelectors()[0]; if (PROVIDER_LABEL.equals(label)) { data = this.getInfo(request); } } if (data == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "Unknown Info Request"); } else { response.setHeader(CACHE_CONTROL_HEADER, CACHE_CONTROL_HEADER_VALUE); final String extension = request.getRequestPathInfo().getExtension(); if ("json".equals(extension)) { renderJson(response, data); } else if ("txt".equals(extension)) { renderPlainText(response, data); } else { // default to html renderHtml(response, data); } } }
String ext = request.getRequestPathInfo().getExtension(); if (ext != null && !ext.equals(DefaultGetServlet.EXT_RES)) { request.getRequestProgressTracker().log( if ("/".equals(request.getRequestPathInfo().getSuffix())) { renderDirectory(request, response, included); return;
@Override public String getSelectorString() { if (isSelectorOverridden) { return StringUtils.join(selectors, "."); } return getOriginal().getSelectorString(); }
public String getResourcePath() { return requestPathInfo.getResourcePath(); }