org.apache.sling.api.resource.Resource.getResourceMetadata()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(12.3k)|赞(0)|评价(0)|浏览(86)

本文整理了Java中org.apache.sling.api.resource.Resource.getResourceMetadata方法的一些代码示例,展示了Resource.getResourceMetadata的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Resource.getResourceMetadata方法的具体详情如下:
包路径:org.apache.sling.api.resource.Resource
类名称:Resource
方法名:getResourceMetadata

Resource.getResourceMetadata介绍

[英]Returns the meta data of this resource. The concrete data contained in the ResourceMetadata object returned is implementation specific except for the ResourceMetadata#RESOLUTION_PATH property which is required to be set to the part of the request URI used to resolve the resource.
[中]返回此资源的元数据。返回的ResourceMetadata对象中包含的具体数据是特定于实现的,ResourceMetadata#RESOLUTION_PATH属性除外,该属性需要设置为用于解析资源的请求URI的一部分。

代码示例

代码示例来源:origin: heervisscher/htl-examples

@Override
public ResourceMetadata getResourceMetadata() {
  return resource.getResourceMetadata();
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

private boolean isContinueResolving(Resource resource) {
  return resource.getResourceMetadata() != null
      && resource.getResourceMetadata().containsKey(ResourceMetadata.INTERNAL_CONTINUE_RESOLVING);
}

代码示例来源:origin: org.apache.sling/org.apache.sling.servlets.resolver

/**
 * @see org.apache.sling.api.resource.Resource#getResourceMetadata()
 */
@Override
public ResourceMetadata getResourceMetadata() {
  return this.getActiveResource().getResourceMetadata();
}

代码示例来源:origin: org.apache.sling/org.apache.sling.api

/**
 * Returns the value of calling <code>getResourceMetadata</code> on the
 * {@link #getResource() wrapped resource}.
 */
@Override
public ResourceMetadata getResourceMetadata() {
  return getResource().getResourceMetadata();
}

代码示例来源:origin: org.apache.sling/org.apache.sling.scripting.javascript

public Object jsFunction_getResourceMetadata() {
  return toJS(resource.getResourceMetadata());
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

@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;
  }
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

/**
 * 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;
}

代码示例来源:origin: org.apache.sling/org.apache.sling.servlets.get

/**
 * 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();
  }
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

/**
 * @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);
}

代码示例来源:origin: org.apache.sling/org.apache.sling.api

/**
 * 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;
}

代码示例来源:origin: heervisscher/htl-examples

@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;
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

/**
 * 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;
}

代码示例来源:origin: org.apache.sling/org.apache.sling.servlets.get

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>");
}

代码示例来源:origin: io.wcm/io.wcm.wcm.ui.granite

private static Resource wrap(Resource resource, ValueMap valueMap, Iterable<Resource> children) {
 return new GraniteUiSyntheticResource(resource.getResourceResolver(),
   resource.getResourceMetadata(),
   resource.getResourceType(),
   valueMap,
   children);
}

代码示例来源:origin: org.apache.sling/org.apache.sling.jcr.resource

@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);
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

@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;
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

@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;
  }
}

代码示例来源:origin: org.apache.sling/org.apache.sling.scripting.sightly

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();
    }
  }
}

代码示例来源:origin: org.apache.sling/org.apache.sling.resourceresolver

@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;
}

代码示例来源:origin: org.apache.sling/org.apache.sling.jcr.resource

@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;
}

相关文章