Class CmsJspVfsAccessBean
- java.lang.Object
-
- org.opencms.jsp.util.CmsJspVfsAccessBean
-
public final class CmsJspVfsAccessBean extends java.lang.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:
CmsJspContentAccessBean
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
CmsJspVfsAccessBean.CmsAvailableLocaleLoaderTransformer
Transformer that loads a resource from the OpenCms VFS, the input is used as String for the resource name to read.class
CmsJspVfsAccessBean.CmsExistsResourceTransformer
Provides Booleans that indicate if a specified resource exists in the OpenCms VFS, the input is used as String for the resource name to read.class
CmsJspVfsAccessBean.CmsExistsXmlTransformer
Provides Booleans that indicate if a specified resource exists in the OpenCms VFS and is of type XML content or XML page, the input is used as String for the resource name to read.class
CmsJspVfsAccessBean.CmsPermissionsLoaderTransformer
Transformer that loads a resource permission from the OpenCms VFS, the input is used as String for the resource name to read the permissions for.class
CmsJspVfsAccessBean.CmsPropertyLoaderSingleTransformer
Transformer that a properties of a resource from the OpenCms VFS, the input is used as String for the property name to read.class
CmsJspVfsAccessBean.CmsResourceLoaderTransformer
Transformer that loads a resource from the OpenCms VFS, the input is used as String for the resource name to read.class
CmsJspVfsAccessBean.CmsResourceLocalePropertyLoaderTransformer
Transformer that loads properties of a resource from the OpenCms VFS with another lazy map, the input is used as String for the resource name to read.class
CmsJspVfsAccessBean.CmsResourcePropertyLoaderTransformer
Transformer that loads properties of a resource from the OpenCms VFS with another lazy map, the input is used as String for the resource name to read.class
CmsJspVfsAccessBean.CmsVfsLinkTransformer
Transformer that calculates links to resources in the OpenCms VFS, the input is used as String for the resource name to use as link target.class
CmsJspVfsAccessBean.CmsXmlContentAccessTransformer
Provides XML content access beans for VFS resources.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ATTRIBUTE_VFS_ACCESS_BEAN
Request context attribute for indicating the model file for a create resource operation.protected CmsObject
m_cms
The OpenCms context of the current user.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static CmsJspVfsAccessBean
create(CmsObject cms)
Creates a new instance of the JSP VFS access utility bean.java.util.Map<java.lang.String,java.util.List<java.util.Locale>>
getAvailableLocales()
Returns a lazily generated map from site paths of resources to the available locales for the resource.CmsObject
getCmsObject()
Returns the OpenCms user context this bean was initialized with.CmsRequestContext
getContext()
Short form forgetRequestContext()
.CmsProject
getCurrentProject()
Returns the current project from the context.CmsUser
getCurrentUser()
Returns the current user from the context.java.util.Map<java.lang.String,java.lang.Boolean>
getExists()
Short form forgetExistsResource()
.java.util.Map<java.lang.String,java.lang.Boolean>
getExistsResource()
Returns a map that lazily checks if a resources exists in the OpenCms VFS.java.util.Map<java.lang.String,java.lang.Boolean>
getExistsXml()
Returns a map that lazily checks if a resources exists in the VFS and is of type XML content or XML page.boolean
getFlushCaches()
Flushes the internal caches of this VFS access bean.java.util.Map<java.lang.String,java.lang.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.java.util.Map<java.lang.String,java.util.Map<java.lang.String,CmsJspResourceWrapper>>
getLocaleResource()
Gets a lazy loading map used to access locale variants of a resource with a given path.java.util.Map<java.lang.String,java.util.Locale>
getMainLocale()
Returns a lazy loading map used to detect the main locale of a resource which is part of a locale group.java.lang.String
getParentFolder(java.lang.Object obj)
Returns the parent folder of a resource.int
getPathLevel(java.lang.Object obj)
Returns the directory level of a resource.java.util.Map<java.lang.String,CmsPermissionSet>
getPermissions()
Short form forgetReadPermissions()
.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
getProperty()
Short form forgetReadProperties()
.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>>
getPropertyLocale()
Short form forgetReadPropertiesLocale()
.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
getPropertySearch()
Short form forgetReadPropertiesSearch()
.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>>
getPropertySearchLocale()
Short form forgetReadPropertiesSearchLocale()
.java.util.Map<java.lang.String,CmsPermissionSet>
getReadPermissions()
Returns a map that lazily reads resource permissions from the OpenCms VFS.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
getReadProperties()
Returns a map that lazily reads all resource properties from the OpenCms VFS, without search.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>>
getReadPropertiesLocale()
Returns a map that lazily reads all resource properties from the OpenCms VFS, without search.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
getReadPropertiesSearch()
Returns a map that lazily reads all resource properties from the OpenCms VFS, with search.java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>>
getReadPropertiesSearchLocale()
Returns a map that lazily reads all resource properties from the OpenCms VFS, with search and provides locale specific access to them.java.util.Map<java.lang.String,CmsJspResourceWrapper>
getReadResource()
Returns a map that lazily reads resources from the OpenCms VFS.java.util.Map<java.lang.String,CmsJspContentAccessBean>
getReadXml()
Returns a map that lazily reads XML documents from the OpenCms VFS that are wrapped using aCmsJspContentAccessBean
.CmsRequestContext
getRequestContext()
Returns the OpenCms request context the current user this bean was initialized with.java.util.Map<java.lang.String,CmsJspResourceWrapper>
getResource()
Short form forgetReadResource()
.java.lang.String
getResourceExtension(java.lang.Object obj)
Returns the resource name extension if present.java.lang.String
getResourceName(java.lang.Object obj)
Returns the name of a resource without the path information.java.util.Map<java.lang.String,CmsJspContentAccessBean>
getXml()
Short form forgetReadXml()
.boolean
hasNoReadPermissions(java.lang.String path)
Returns true if the user has no read permissions for the given path.java.util.List<CmsJspResourceWrapper>
readFilesInFolder(java.lang.String resourcePath)
Reads the resources in the given folder.java.util.List<CmsJspResourceWrapper>
readFilesInFolder(java.lang.String resourcePath, java.lang.String filterString)
Reads the resources in the given folder using the provided filter.CmsJspResourceWrapper
readSubsiteFor(java.lang.String path)
Reads the sub site folder resource.
-
-
-
Field Detail
-
ATTRIBUTE_VFS_ACCESS_BEAN
public static final java.lang.String ATTRIBUTE_VFS_ACCESS_BEAN
Request context attribute for indicating the model file for a create resource operation.
-
-
Method Detail
-
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
public java.util.Map<java.lang.String,java.util.List<java.util.Locale>> 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
public CmsObject getCmsObject()
Returns the OpenCms user context this bean was initialized with.- Returns:
- the OpenCms user context this bean was initialized with
-
getContext
public CmsRequestContext getContext()
Short form forgetRequestContext()
.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:
getRequestContext()
-
getCurrentProject
public CmsProject 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
public CmsUser 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
public java.util.Map<java.lang.String,java.lang.Boolean> getExists()
Short form forgetExistsResource()
.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()
-
getExistsResource
public java.util.Map<java.lang.String,java.lang.Boolean> 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:
for a short form of this method
-
getExistsXml
public java.util.Map<java.lang.String,java.lang.Boolean> 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
, seecreate(CmsObject)
. Normally there is a newCmsObject
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 aCmsObject
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 java.util.Map<java.lang.String,java.lang.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:
CmsJspActionElement.link(String)
,CmsJspTagLink.linkTagAction(String, javax.servlet.ServletRequest)
-
getLocaleResource
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,CmsJspResourceWrapper>> 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
public java.util.Map<java.lang.String,java.util.Locale> 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
public java.lang.String getParentFolder(java.lang.Object obj)
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:
CmsResource.getParentFolder(String)
,CmsJspResourceWrapper.getSitePathParentFolder()
-
getPathLevel
public int getPathLevel(java.lang.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:
CmsResource.getPathLevel(String)
,CmsJspResourceWrapper.getSitePathLevel()
-
getPermissions
public java.util.Map<java.lang.String,CmsPermissionSet> getPermissions()
Short form forgetReadPermissions()
.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:
getReadPermissions()
-
getProperty
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getProperty()
Short form forgetReadProperties()
.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:
getReadProperties()
-
getPropertyLocale
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>> getPropertyLocale()
Short form forgetReadPropertiesLocale()
.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:
getReadPropertiesLocale()
-
getPropertySearch
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> getPropertySearch()
Short form forgetReadPropertiesSearch()
.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:
getReadPropertiesSearch()
-
getPropertySearchLocale
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>> getPropertySearchLocale()
Short form forgetReadPropertiesSearchLocale()
.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:
getReadPropertiesSearchLocale()
-
getReadPermissions
public java.util.Map<java.lang.String,CmsPermissionSet> 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:
for a short form of this method
-
getReadProperties
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> 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:
for a short form of this method
-
getReadPropertiesLocale
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>> 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:
for a short form of this method
-
getReadPropertiesSearch
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> 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:
for a short form of this method
-
getReadPropertiesSearchLocale
public java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>> 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:
for a short form of this method
-
getReadResource
public java.util.Map<java.lang.String,CmsJspResourceWrapper> 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:
for a short form of this method
-
getReadXml
public java.util.Map<java.lang.String,CmsJspContentAccessBean> getReadXml()
Returns a map that lazily reads XML documents from the OpenCms VFS that are wrapped using aCmsJspContentAccessBean
.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:
for a short form of this method
-
getRequestContext
public CmsRequestContext 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:
for a short form of this method
-
getResource
public java.util.Map<java.lang.String,CmsJspResourceWrapper> getResource()
Short form forgetReadResource()
.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:
getReadResource()
-
getResourceExtension
public java.lang.String getResourceExtension(java.lang.Object obj)
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:
CmsResource.getExtension(String)
,CmsJspResourceWrapper.getResourceExtension()
-
getResourceName
public java.lang.String getResourceName(java.lang.Object obj)
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:
CmsResource.getName()
,CmsJspResourceWrapper.getResourceName()
-
getXml
public java.util.Map<java.lang.String,CmsJspContentAccessBean> getXml()
Short form forgetReadXml()
.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:
getReadXml()
-
hasNoReadPermissions
public boolean hasNoReadPermissions(java.lang.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
public java.util.List<CmsJspResourceWrapper> readFilesInFolder(java.lang.String resourcePath) throws CmsException
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 java.util.List<CmsJspResourceWrapper> readFilesInFolder(java.lang.String resourcePath, java.lang.String filterString) throws CmsException
Reads the resources in the given folder using the provided filter.- Parameters:
resourcePath
- the site path to the folderfilterString
- a comma separated list of resource type names- Returns:
- the resources
- Throws:
CmsException
- in case reading the resources fails
-
readSubsiteFor
public CmsJspResourceWrapper readSubsiteFor(java.lang.String path) throws CmsException
Reads the sub site folder resource.- Parameters:
path
- the current site path- Returns:
- the folder resource
- Throws:
CmsException
- in case reading the resource fails
-
-