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}; }
/** * Handles collection response, either redirects (to same URL but appended with slash, if request does not end with * slash), or renders the "index page" out of collection entries. */ protected void doGetCollection(final HttpServletRequest request, final HttpServletResponse response, final StorageCollectionItem coll) throws Exception { if (!coll.getResourceStoreRequest().getRequestUrl().endsWith("/")) { response.setStatus(HttpServletResponse.SC_FOUND); response.addHeader("Location", coll.getResourceStoreRequest().getRequestUrl() + "/"); return; } // last-modified response.setDateHeader("Last-Modified", coll.getModified()); if ("HEAD".equalsIgnoreCase(request.getMethod())) { // do not perform coll.list(), very expensive, just give what we already know return; } // send no cache headers, as any of these responses should not be cached, ever addNoCacheResponseHeaders(response); // perform fairly expensive operation of fetching children from Nx final Collection<StorageItem> children = coll.list(); // render the page renderer.renderCollection(request, response, coll, children); }
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; }
if (request.getRequestUrl() != null) { final String absoluteUrl = request.getRequestUrl(); request.setRequestUrl(null);
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().entrySet() ) { result.addRequestContext( entry.toString() ); } return result; }