Class CmsJspVfsAccessBean

java.lang.Object
org.opencms.jsp.util.CmsJspVfsAccessBean

public final class CmsJspVfsAccessBean extends Object
Provides utility methods that allow convenient access to the OpenCms VFS, indented to be used from a JSP with the JSTL or EL.

Since:
7.0.2
See Also:
  • Field Details

    • ATTRIBUTE_VFS_ACCESS_BEAN

      public static final String ATTRIBUTE_VFS_ACCESS_BEAN
      Request context attribute for indicating the model file for a create resource operation.
    • m_cms

      protected CmsObject m_cms
      The OpenCms context of the current user.
  • Method Details

    • create

      public static CmsJspVfsAccessBean create(CmsObject cms)
      Creates a new instance of the JSP VFS access utility bean.

      To prevent multiple creations of the bean during a request, the OpenCms request context attributes are used to cache the created VFS access utility bean.

      Parameters:
      cms - the current OpenCms user context
      Returns:
      a new instance of the JSP VFS access utility bean
    • getAvailableLocales

      Returns a lazily generated map from site paths of resources to the available locales for the resource.
      Returns:
      a lazily generated map from site paths of resources to the available locales for the resource.
    • getCmsObject

      Returns the OpenCms user context this bean was initialized with.

      Returns:
      the OpenCms user context this bean was initialized with
    • getContext

      Short form for getRequestContext().

      Usage example on a JSP with the EL:

       The current URI is: ${cms:vfs(pageContext).context.uri}
       
      Returns:
      the OpenCms request context of the current user this bean was initialized with
      See Also:
    • getCurrentProject

      Returns the current project from the context.

      Usage example on a JSP with the EL:

       The current project name is: ${cms:vfs(pageContext).currentProject.name}
       
      Returns:
      the current project
    • getCurrentUser

      Returns the current user from the context.

      Usage example on a JSP with the EL:

       The current user name is: ${cms:vfs(pageContext).currentUser.name}
       
      Returns:
      the current user
    • getExists

      Short form for getExistsResource().

      Usage example on a JSP with the EL / JSTL:

       <c:if test="${cms:vfs(pageContext).exists['/checkme.html']}" >
           The resource "/checkme.html" exists.
       </c:if>
       
      Returns:
      a map that lazily reads resources from the OpenCms VFS
      See Also:
    • getExistsResource

      Returns a map that lazily checks if a resources exists in the OpenCms VFS.

      Usage example on a JSP with the EL / JSTL:

       <c:if test="${cms:vfs(pageContext).existsResource['/checkme.html']}" >
           The resource "/checkme.html" exists.
       </c:if>
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           <c:if test="${content.vfs.existsResource['/checkme.html']}" >
               The resource "/checkme.html" exists.
           </c:if>
       </cms:contentload>
      Returns:
      a map that lazily checks if a resources exists in the OpenCms VFS
      See Also:
    • getExistsXml

      Returns a map that lazily checks if a resources exists in the VFS and is of type XML content or XML page.

      Usage example on a JSP with the EL / JSTL:

       <c:if test="${cms:vfs(pageContext).existsXml['/text.xml']}" >
           The resource "/text.xml" exists and is an XML document.
       </c:if>
       
      Returns:
      a map that lazily checks if a resources exists in the VFS and is of type XML content or XML page
    • getFlushCaches

      public boolean getFlushCaches()
      Flushes the internal caches of this VFS access bean.

      The VFS access bean uses lazy initialized Maps for all access, but once a value has been read it is cached in the Map and not read again from the VFS. This means the lazy Maps act as another layer of cache to the VFS.

      The VFS access bean instance itself is cached in the OpenCms request context attributes of the CmsObject, see create(CmsObject). Normally there is a new CmsObject created for all incoming requests, so the live-time of the VFS access bean is short. In that case the caching of the lazy Maps should improve performance and not be an issue. However, in rare cases an instance of a CmsObject may be kept for a long time in some custom code. In theses cases flushing the caches of the lazy Maps manually may be required, otherwise the Map caches may be out of sync with the VFS.

      Returns:
      always returns true
    • getLink

      public Map<String,String> getLink()
      Returns a map that lazily calculates links to files in the OpenCms VFS, which have been adjusted according to the web application path and the OpenCms static export rules.

      Please note that the target is always assumed to be in the OpenCms VFS, so you can't use this method for links external to OpenCms.

      Relative links are converted to absolute links, using the current element URI as base.

      Relative links are converted to absolute links, using the current OpenCms request context URI as base.

      Usage example on a JSP with the EL:

       Link to the "/index.html" file: ${cms:vfs(pageContext).link['/index.html']}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Link to the "/index.html" file: ${content.vfs.link['/index.html']}
       </cms:contentload>
      Returns:
      a map that lazily calculates links to resources in the OpenCms VFS
      See Also:
    • getLocaleResource

      Gets a lazy loading map used to access locale variants of a resource with a given path.

      Usage in JSP: ${myvfsaccessbeaninstance.localeResource['/foo/bar/index.html']['de']}

      Returns:
      the lazy loading map
    • getMainLocale

      Returns a lazy loading map used to detect the main locale of a resource which is part of a locale group.

      Usage in JSPs: ${myvfsaccessbeaninstance.mainLocale['/foo/index.html']}

      Returns:
      the lazy loading map
    • getParentFolder

      Returns the parent folder of a resource.

      This assumes the parameter is either a CmsResource, or a String representing a file name. If the parameter is a CmsResource, the result will be relative to the current site.

      Parameters:
      obj - a CmsResource or a String representing a resource name
      Returns:
      the parent folder of a resource
      See Also:
    • getPathLevel

      public int getPathLevel(Object obj)
      Returns the directory level of a resource.

      This assumes the parameter is either a CmsResource, or a String representing a file name. If the parameter is a CmsResource, the result will be relative to the current site.

      The root folder "/" has level 0, a folder "/foo/" would have level 1, a folder "/foo/bar/" level 2 etc.

      Parameters:
      obj - a CmsResource or a String representing a resource name
      Returns:
      the directory level of a resource
      See Also:
    • getPermissions

      Short form for getReadPermissions().

      Usage example on a JSP with the EL:

       Permission string of the "/index.html" resource: ${cms:vfs(pageContext).readPermissions['/index.html'].permissionString}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Permission string of the "/index.html" resource: ${content.vfs.readPermissions['/index.html'].permissionString}
       </cms:contentload>
      Returns:
      a map that lazily reads resource permissions from the OpenCms VFS
      See Also:
    • getProperty

      Short form for getReadProperties().

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource: ${cms:vfs(pageContext).property['/index.html']['Title']}
       
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, without search
      See Also:
    • getPropertyLocale

      Short form for getReadPropertiesLocale().

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource for locale "de": ${cms:vfs(pageContext).property['/index.html']['de']['Title']}
       
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, without search
      See Also:
    • getPropertySearch

      Short form for getReadPropertiesSearch().

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource (searched): ${cms:vfs(pageContext).propertySearch['/index.html']['Title']}
       
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, with search
      See Also:
    • getPropertySearchLocale

      Short form for getReadPropertiesSearchLocale().

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource (searched) for locale "de": ${cms:vfs(pageContext).propertySearch['/index.html']['de']['Title']}
       
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, with search
      See Also:
    • getReadPermissions

      Returns a map that lazily reads resource permissions from the OpenCms VFS.

      Usage example on a JSP with the EL:

       Permission string of the "/index.html" resource: ${cms:vfs(pageContext).readPermissions['/index.html'].permissionString}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Permission string of the "/index.html" resource: ${content.vfs.readPermissions['/index.html'].permissionString}
       </cms:contentload>
      Returns:
      a map that lazily reads resource permissions from the OpenCms VFS
      See Also:
    • getReadProperties

      Returns a map that lazily reads all resource properties from the OpenCms VFS, without search.

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource: ${cms:vfs(pageContext).readProperties['/index.html']['Title']}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Title property of the "/index.html" resource: ${content.vfs.readProperties['/index.html']['Title']}
       </cms:contentload>
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, without search
      See Also:
    • getReadPropertiesLocale

      Returns a map that lazily reads all resource properties from the OpenCms VFS, without search.

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource for locale "de": ${cms:vfs(pageContext).readProperties['/index.html']['de']['Title']}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Title property of the "/index.html" resource: ${content.vfs.readProperties['/index.html']['Title']}
       </cms:contentload>
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, without search
      See Also:
    • getReadPropertiesSearch

      Returns a map that lazily reads all resource properties from the OpenCms VFS, with search.

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource (searched): ${cms:vfs(pageContext).readPropertiesSearch['/index.html']['Title']}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Title property of the "/index.html" resource (searched): ${content.vfs.readPropertiesSearch['/index.html']['Title']}
       </cms:contentload>
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, with search
      See Also:
    • getReadPropertiesSearchLocale

      Returns a map that lazily reads all resource properties from the OpenCms VFS, with search and provides locale specific access to them.

      Usage example on a JSP with the EL:

       Title property of the "/index.html" resource (searched): ${cms:vfs(pageContext).readPropertiesSearch['/index.html']['Title']}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Title property of the "/index.html" resource (searched) for locale "de": ${content.vfs.readPropertiesSearchLocale['/index.html']['de']['Title']}
       </cms:contentload>
      Returns:
      a map that lazily reads all resource properties from the OpenCms VFS, with search
      See Also:
    • getReadResource

      Returns a map that lazily reads resources from the OpenCms VFS.

      Usage example on a JSP with the EL:

       Root path of the "/index.html" resource: ${cms:vfs(pageContext).readResource['/index.html'].rootPath}
       
      Usage example on a JSP with the <cms:contentaccess> tag:
       <cms:contentload ... >
           <cms:contentaccess var="content" />
           Root path of the "/index.html" resource: ${content.vfs.readResource['/index.html'].rootPath}
       </cms:contentload>
      Returns:
      a map that lazily reads resources from the OpenCms VFS
      See Also:
    • getReadXml

      Returns a map that lazily reads XML documents from the OpenCms VFS that are wrapped using a CmsJspContentAccessBean.

      Usage example on a JSP with the EL:

       Title of "/text.xml": ${cms:vfs(pageContext).readXml['/text.xml'].value['Title']}
       
      Returns:
      a map that lazily reads wrapped XML documents from the OpenCms VFS
      See Also:
    • getRequestContext

      Returns the OpenCms request context the current user this bean was initialized with.

      Usage example on a JSP with the EL:

       The current URI is: ${cms:vfs(pageContext).requestContext.uri}
       
      Returns:
      the OpenCms request context the current user this bean was initialized with
      See Also:
    • getResource

      Short form for getReadResource().

      Usage example on a JSP with the EL:

       Root path of the "/index.html" resource: ${cms:vfs(pageContext).resource['/index.html'].rootPath}
       
      Returns:
      a map that lazily reads resources from the OpenCms VFS
      See Also:
    • getResourceExtension

      Returns the resource name extension if present.

      This assumes the parameter is either a CmsResource, or a String representing a resource name.

      The extension will always be lower case.

      Parameters:
      obj - a CmsResource or a String representing a resource name
      Returns:
      the extension or null if not available
      See Also:
    • getResourceName

      Returns the name of a resource without the path information.

      This assumes the parameter is either a CmsResource, or a String representing a resource name.

      The resource name of a file is the name of the file. The resource name of a folder is the folder name with trailing "/". The resource name of the root folder is /.

      Parameters:
      obj - a CmsResource or a String representing a resource name
      Returns:
      the name of a resource without the path information
      See Also:
    • getXml

      Short form for getReadXml().

      Usage example on a JSP with the EL:

       Title of "/text.xml": ${cms:vfs(pageContext).xml['/text.xml'].value['Title']}
       
      Returns:
      a map that lazily reads wrapped XML documents from the OpenCms VFS
      See Also:
    • hasNoReadPermissions

      public boolean hasNoReadPermissions(String path)
      Returns true if the user has no read permissions for the given path.
      Parameters:
      path - the path of a resource
      Returns:
      true if the user has no read permissions for the path
    • readFilesInFolder

      Reads the resources in the given folder.

      Parameters:
      resourcePath - the site path to the folder
      Returns:
      the resources
      Throws:
      CmsException - in case reading the resources fails
    • readFilesInFolder

      public List<CmsJspResourceWrapper> readFilesInFolder(String resourcePath, String filterString) throws CmsException
      Reads the resources in the given folder using the provided filter.

      Parameters:
      resourcePath - the site path to the folder
      filterString - a comma separated list of resource type names
      Returns:
      the resources
      Throws:
      CmsException - in case reading the resources fails
    • readSubsiteFor

      Reads the sub site folder resource.

      Parameters:
      path - the current site path
      Returns:
      the folder resource
      Throws:
      CmsException - in case reading the resource fails