@Override public ResourceMetadata getResourceMetadata() { return resource.getResourceMetadata(); }
private boolean isContinueResolving(Resource resource) { return resource.getResourceMetadata() != null && resource.getResourceMetadata().containsKey(ResourceMetadata.INTERNAL_CONTINUE_RESOLVING); }
/** * @see org.apache.sling.api.resource.Resource#getResourceMetadata() */ @Override public ResourceMetadata getResourceMetadata() { return this.getActiveResource().getResourceMetadata(); }
/** * Returns the value of calling <code>getResourceMetadata</code> on the * {@link #getResource() wrapped resource}. */ @Override public ResourceMetadata getResourceMetadata() { return getResource().getResourceMetadata(); }
public Object jsFunction_getResourceMetadata() { return toJS(resource.getResourceMetadata()); }
@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; } }
/** * 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; }
/** * Dumps the information about the provided resource to a {@link PrintWriter}. * @param pw the PrintWriter * @param r the resource * @param map the resource's properties */ protected void dump(PrintWriter pw, Resource r, Map<String, Object> map) { pw.println("** Resource dumped by " + getClass().getSimpleName() + "**"); pw.println("Resource path:" + r.getPath()); pw.println("Resource metadata: " + r.getResourceMetadata()); pw.println("Resource type: " + r.getResourceType()); String resourceSuperType = r.getResourceResolver().getParentResourceType(r); if (resourceSuperType == null) { resourceSuperType = "-"; } pw.println("Resource super type: " + resourceSuperType); pw.println("\n** Resource properties **"); final Iterator<Map.Entry<String,Object>> pi = map.entrySet().iterator(); while ( pi.hasNext() ) { final Map.Entry<String,Object> p = pi.next(); printPropertyValue(pw, p.getKey(), p.getValue(), true); pw.println(); } }
/** * @see java.util.Iterator#next() */ @Override public Resource next() { final Resource rsrc = this.iterator.next(); rsrc.getResourceMetadata().setResolutionPath(rsrc.getPath()); return this.tracker.decorate(rsrc); }
/** * 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; }
@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; }
/** * Decorate a resource. */ public Resource decorate(final Resource resource) { Resource result = resource; final ResourceDecorator[] decorators = this.resourceDecoratorsArray; for (final ResourceDecorator decorator : decorators) { final Resource original = result; result = decorator.decorate(original); if (result == null) { result = original; } } // make resource metadata read-only result.getResourceMetadata().lock(); return result; }
private void printResourceInfo(final PrintWriter pw, final Resource r) { pw.print("<h1>Resource dumped by "); pw.print(xssApi.encodeForHTML(getClass().getSimpleName())); pw.println("</h1>"); pw.print("<p>Resource path: <b>"); pw.print(xssApi.encodeForHTML(r.getPath())); pw.println("</b></p>"); pw.print("<p>Resource metadata: <b>"); pw.print(xssApi.encodeForHTML(String.valueOf(r.getResourceMetadata()))); pw.println("</b></p>"); pw.print("<p>Resource type: <b>"); pw.print(xssApi.encodeForHTML(r.getResourceType())); pw.println("</b></p>"); String resourceSuperType = r.getResourceResolver().getParentResourceType(r); if (resourceSuperType == null) { resourceSuperType = "-"; } pw.print("<p>Resource super type: <b>"); pw.print(xssApi.encodeForHTML(resourceSuperType)); pw.println("</b></p>"); }
private static Resource wrap(Resource resource, ValueMap valueMap, Iterable<Resource> children) { return new GraniteUiSyntheticResource(resource.getResourceResolver(), resource.getResourceMetadata(), resource.getResourceType(), valueMap, children); }
@Override public @CheckForNull Resource getParent(final @Nonnull ResolveContext<JcrProviderState> ctx, final @Nonnull Resource child) { if (child instanceof JcrItemResource<?>) { try { String version = null; if (child.getResourceMetadata().getParameterMap() != null) { version = child.getResourceMetadata().getParameterMap().get("v"); } if (version == null) { Item item = ((JcrItemResource<?>) child).getItem(); if ("/".equals(item.getPath())) { return null; } Node parentNode; try { parentNode = item.getParent(); } catch(AccessDeniedException e) { return null; } String parentPath = ResourceUtil.getParent(child.getPath()); return new JcrNodeResource(ctx.getResourceResolver(), parentPath, version, parentNode, ctx.getProviderState().getHelperData()); } } catch (RepositoryException e) { logger.warn("Can't get parent for {}", child, e); return null; } } return super.getParent(ctx, child); }
@Override public Resource copy(final String srcAbsPath, final String destAbsPath) throws PersistenceException { Resource rsrc = this.control.copy(this.context, srcAbsPath, destAbsPath); if (rsrc != null ) { rsrc.getResourceMetadata().setResolutionPath(rsrc.getPath()); rsrc = this.factory.getResourceDecoratorTracker().decorate(rsrc); } return rsrc; }
@Override public Resource move(final String srcAbsPath, final String destAbsPath) throws PersistenceException { Resource rsrc = this.control.move(this.context, srcAbsPath, destAbsPath); if (rsrc != null ) { rsrc.getResourceMetadata().setResolutionPath(rsrc.getPath()); rsrc = this.factory.getResourceDecoratorTracker().decorate(rsrc); } return rsrc; } }
private Object getUseObjectAndRecompileIfNeeded(Resource pojoResource) throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException { SourceIdentifier sourceIdentifier = new SourceIdentifier(sightlyEngineConfiguration, pojoResource.getPath()); long sourceLastModifiedDateFromCache = resourceBackedPojoChangeMonitor.getLastModifiedDateForJavaUseObject(pojoResource.getPath()); long classLastModifiedDate = classLoaderWriter.getLastModified("/" + sourceIdentifier.getFullyQualifiedClassName() .replaceAll("\\.", "/") + ".class"); if (sourceLastModifiedDateFromCache == 0) { // first access; let's check the real last modified date of the source long sourceLastModifiedDate = pojoResource.getResourceMetadata().getModificationTime(); resourceBackedPojoChangeMonitor.recordLastModifiedTimestamp(pojoResource.getPath(), sourceLastModifiedDate); if (classLastModifiedDate < 0 || sourceLastModifiedDate > classLastModifiedDate) { return compileSource(sourceIdentifier, IOUtils.toString(pojoResource.adaptTo(InputStream.class), "UTF-8")); } else { return classLoaderWriter.getClassLoader().loadClass(sourceIdentifier.getFullyQualifiedClassName()).newInstance(); } } else { if (sourceLastModifiedDateFromCache > classLastModifiedDate) { return compileSource(sourceIdentifier, IOUtils.toString(pojoResource.adaptTo(InputStream.class), "UTF-8")); } else { return classLoaderWriter.getClassLoader().loadClass(sourceIdentifier.getFullyQualifiedClassName()).newInstance(); } } }
@Override public Resource getParent(final Resource child) { Resource rsrc = null; final String parentPath = ResourceUtil.getParent(child.getPath()); if ( parentPath != null ) { // if the parent path is relative, resolve using search paths. if ( !parentPath.startsWith("/") ) { rsrc = context.getResourceResolver().getResource(parentPath); } else { rsrc = this.control.getParent(this.context, parentPath, child); if (rsrc != null ) { rsrc.getResourceMetadata().setResolutionPath(rsrc.getPath()); rsrc = this.factory.getResourceDecoratorTracker().decorate(rsrc); } } } return rsrc; }
@Override public Iterator<Resource> listChildren(ResolveContext<JcrProviderState> ctx, Resource parent) { JcrItemResource<?> parentItemResource; // short cut for known JCR resources if (parent instanceof JcrItemResource) { parentItemResource = (JcrItemResource<?>) parent; } else { // try to get the JcrItemResource for the parent path to list // children try { parentItemResource = ctx.getProviderState().getResourceFactory().createResource( parent.getResourceResolver(), parent.getPath(), null, parent.getResourceMetadata().getParameterMap()); } catch (RepositoryException re) { throw new SlingException("Can't list children", re); } } // return children if there is a parent item resource, else null return (parentItemResource != null) ? parentItemResource.listJcrChildren() : null; }