@Override public ResourceMetadata getResourceMetadata() { ResourceMetadata metadata = new ResourceMetadata(); metadata.setCharacterEncoding(resource.getResourceMetadata().getCharacterEncoding()); metadata.setContentType(resource.getResourceMetadata().getContentType()); metadata.setContentLength(resource.getResourceMetadata().getContentLength()); metadata.setCreationTime(resource.getResourceMetadata().getCreationTime()); metadata.setModificationTime(resource.getResourceMetadata().getModificationTime()); metadata.setResolutionPath(path); log.info("resolution path : {} ", StringUtils.substringAfter(path, ".")); metadata.setResolutionPathInfo("." + StringUtils.substringAfter(path, ".")); return metadata; }
/** * Returns the {@link #MODIFICATION_TIME} property if not <code>null</code> * and a <code>long</code>. Otherwise <code>-1</code> is returned. * @return The modification time */ public long getModificationTime() { Object value = get(MODIFICATION_TIME); if (value instanceof Long) { return (Long) value; } return -1; }
/** * Returns the resource meta data for this resource containing the file * length, last modification time and the resource path (same as * {@link #getPath()}). */ public ResourceMetadata getResourceMetadata() { if (metaData == null) { metaData = new LazyModifiedDateResourceMetadata(file); metaData.setContentLength(file.length()); metaData.setResolutionPath(resourcePath); if (fileStatCache.isDirectory(file)) { metaData.put(FsResourceProvider.RESOURCE_METADATA_FILE_DIRECTORY, Boolean.TRUE); } } return metaData; }
PlanetResource(ResourceResolver resolver, String path, ValueMap valueMap) { this.path = path; this.valueMap = valueMap; this.resolver = resolver; metadata = new ResourceMetadata(); metadata.setResolutionPath(path); }
@Override public ResourceMetadata getResourceMetadata() { if (metadata == null) { metadata = new ResourceMetadata(); metadata.setResolutionPath(path); metadata.lock(); } return metadata; }
/** Get our ResourceMetadata for given path */ static ResourceMetadata getResourceMetadata(String path) { ResourceMetadata result = new ResourceMetadata(); // The path is up to /*, what follows is pathInfo final int index = path.indexOf(SLASH_STAR); if (index >= 0) { result.setResolutionPath(path.substring(0, index) + SLASH_STAR); result.setResolutionPathInfo(path.substring(index + SLASH_STAR.length())); } else { result.setResolutionPath(path); } return result; } }
this.mappedPath = mappedPath; metadata = new ResourceMetadata(); metadata.setResolutionPath(resourcePath); metadata.setCreationTime(this.cache.getBundle().getLastModified()); metadata.setModificationTime(this.cache.getBundle().getLastModified()); final URL url = this.cache.getEntry(mappedPath.getEntryPath(resourcePath)); if ( url != null ) { metadata.setContentLength(url.openConnection().getContentLength());
public NoSqlResource(NoSqlData data, ResourceResolver resourceResolver, NoSqlResourceProvider resourceProvider) { this.data = data; this.resourceResolver = resourceResolver; this.resourceProvider = resourceProvider; this.metadata = new ResourceMetadata(); }
@Override public Iterator<Resource> listChildren(Resource parent) { final String path = parent.getPath(); // If path is not the root, return null // This only allows listChildren to be called on a "Root" path // This restriction is implementation specific if (!isRoot(path)) { return null; } List<Resource> resources = new ArrayList<Resource>(); // Call third party, get and create a list of resources in a similar fashion as in getResource for (int i = 0; i < 10; i++) { ResourceMetadata resourceMetaData = new ResourceMetadata(); // Create the "path" for this resource; this pathing scheme must be compatible with getResource(..) resourceMetaData.setResolutionPath(path + "_" + i); resourceMetaData.put("index", String.valueOf(i)); final String resourceType = "acs-samples/components/content/title"; Resource resource = new SyntheticResource(parent.getResourceResolver(), resourceMetaData, resourceType); // Create a ValueMap representation of this resource Map<String, Object> properties = new HashMap<String, Object>(); properties.put("sampleData", "This is sample data"); resource = new ProvidedResourceWrapper(resource, properties); resources.add(resource); } return resources.iterator(); }
@Override public Resource buildComponentResource() { AbstractResourceImpl component = (AbstractResourceImpl) super.buildComponentResource(); AbstractResourceImpl options = new AbstractResourceImpl("items", null, null, new ResourceMetadata()); component.addChild(options); String defaultValue = getOption("default").orElse(null); getOptions().forEach((value, name) -> { final ResourceMetadata meta = new ResourceMetadata(); final String nodeName = JcrUtil.escapeIllegalJcrChars(value); if (value.equals(defaultValue)) { meta.put("checked", true); } meta.put("name", getName()); meta.put("value", value); if (name.contains("::")) { String description = StringUtils.substringAfter(name, DESCRIPTION_DELIMITER); meta.put("title", description); name = StringUtils.substringBefore(name, DESCRIPTION_DELIMITER); } meta.put("text", name); AbstractResourceImpl option = new AbstractResourceImpl("option_" + nodeName, "granite/ui/components/foundation/form/radio", "granite/ui/components/foundation/form/field", meta); options.addChild(option); }); return component; }
@Override protected Resource seek() { while (input.hasNext()) { final Resource next = input.next(); final String name = next.getName(); if (visited.contains(name)) { continue; } else { visited.add(name); next.getResourceMetadata().setResolutionPath(next.getPath()); return next; } } return null; } }
public JcrPropertyResource(final ResourceResolver resourceResolver, final String path, final String version, final Property property) throws RepositoryException { super(resourceResolver, path, version, property, new ResourceMetadata()); this.resourceType = getResourceTypeForNode(property.getParent()) + "/" + property.getName(); if (PropertyType.BINARY != getProperty().getType()) { this.getResourceMetadata().setContentType("text/plain"); this.getResourceMetadata().setCharacterEncoding("UTF-8"); } this.getResourceMetadata().setContentLength(getContentLength(property)); }
/** * Sets the {@link #CHARACTER_ENCODING} property to <code>encoding</code> * if not <code>null</code>. * @param encoding The encoding */ public void setCharacterEncoding(String encoding) { if (encoding != null) { put(CHARACTER_ENCODING, encoding); } }
resource.getResourceMetadata().setResolutionPath(absPath.substring(0, curPath.length())); resource.getResourceMetadata().setResolutionPathInfo(rpi); resource.getResourceMetadata().setParameterMap(parameters); final String pathInfo = absPath.substring(path.length()); resource.getResourceMetadata().setResolutionPath(path); resource.getResourceMetadata().setResolutionPathInfo(pathInfo); resource.getResourceMetadata().setParameterMap(parameters);
/** * Creates a resource with the given path if existing */ private Resource getAbsoluteResourceInternal(@Nullable final Resource parent, @Nullable final String path, final Map<String, String> parameters, final boolean isResolve) { if (path == null || path.length() == 0 || path.charAt(0) != '/') { logger.debug("getResourceInternal: Path must be absolute {}", path); return null; // path must be absolute } final Resource parentToUse; if (parent != null && path.startsWith(parent.getPath())) { parentToUse = parent; } else { parentToUse = null; } final Resource resource = this.control.getResource(this.context, path, parentToUse, parameters, isResolve); if (resource != null) { resource.getResourceMetadata().setResolutionPath(path); resource.getResourceMetadata().setParameterMap(parameters); return resource; } logger.debug("getResourceInternal: Cannot resolve path '{}' to a resource", path); return null; }
final long modifTime = meta.getModificationTime(); if (modifTime > 0) { response.setDateHeader(HEADER_LAST_MODIFIED, modifTime); String contentType = meta.getContentType(); if (contentType == null || defaultContentType.equals(contentType)) { String encoding = meta.getCharacterEncoding(); if (encoding != null) { response.setCharacterEncoding(encoding); if (meta.getContentLength() > ACCEPT_RANGES_THRESHOLD) { response.setHeader(ACCEPT_RANGES_HEADER, ACCEPT_RANGES_BYTES);
private void renderChild(PrintWriter pw, Resource resource) { String name = ResourceUtil.getName(resource.getPath()); InputStream ins = resource.adaptTo(InputStream.class); if (ins == null) { name += "/"; } else { closeSilently(ins); } String displayName = name; String suffix; if (displayName.length() >= 32) { displayName = displayName.substring(0, 29) + "..."; suffix = ""; } else { suffix = " ".substring( 0, 32 - displayName.length()); } pw.printf("<a href='%s'>%s</a>%s", name, displayName, suffix); ResourceMetadata meta = resource.getResourceMetadata(); long lastModified = meta.getModificationTime(); pw.print(" " + new Date(lastModified) + " "); long length = meta.getContentLength(); if (length > 0) { pw.print(length); } else { pw.print('-'); } pw.println(); }
@Override public void init() { setResourceType("granite/ui/components/foundation/form/radiogroup"); getComponentMetadata().put("vertical", hasOption("vertical")); getComponentMetadata().put("text", getFieldDefinition().name()); getComponentMetadata().remove("fieldLabel"); getComponentMetadata().remove("fieldDescription"); }
/** * Checks if the request contains a if-last-modified-since header and if the the * request's underlying resource has a jcr:lastModified property. if the properties were modified * before the header a 304 is sent otherwise the response last modified header is set. * @param req the request * @param resp the response * @return <code>true</code> if the response was set */ public static boolean handleIfModifiedSince(@NotNull SlingHttpServletRequest req, @NotNull HttpServletResponse resp){ boolean responseSet=false; long lastModified=req.getResource().getResourceMetadata().getModificationTime(); if (lastModified!=-1){ long modifiedTime = lastModified/1000; //seconds long ims = req.getDateHeader(HttpConstants.HEADER_IF_MODIFIED_SINCE)/1000; //seconds if (modifiedTime <= ims) { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); responseSet=true; } resp.setDateHeader(HttpConstants.HEADER_LAST_MODIFIED, lastModified); } return responseSet; }
String encoding = "utf-8"; final ResourceMetadata metadata = resource.getResourceMetadata(); if (metadata.getCharacterEncoding() != null) { encoding = metadata.getCharacterEncoding();