org.opencms.file.wrapper
Interface I_CmsResourceWrapper

All Known Implementing Classes:
A_CmsResourceExtensionWrapper, A_CmsResourceWrapper, CmsResourceExtensionWrapperJsp, CmsResourceExtensionWrapperXmlContent, CmsResourceExtensionWrapperXmlPage, CmsResourceWrapperPropertyFile, CmsResourceWrapperSystemFolder, CmsResourceWrapperXmlPage

public interface I_CmsResourceWrapper

Interface which is used by the CmsObjectWrapper to create a different view to the resources in the VFS.

It is possible to create "new" virtual resource in the view to the clients using the CmsObjectWrapper or to change the existing ones. For example adding the correct file extension for resources, because it is not always given that resources of type jsp have the extension ".jsp". A resource wrapper just could add this extension, so that clients can handle that resource correctly.

Each method in the implementing classes first have to check in every method if it is responsible for the action to execute, because the CmsObjectWrapper iterates through all configured resource wrappers and the first which feels responsible wins and the others won't even called.

Since:
6.2.4
Version:
$Revision: 1.9 $
Author:
Peter Bonrad

Method Summary
 java.util.List addResourcesToFolder(CmsObject cms, java.lang.String resourcename, CmsResourceFilter filter)
          Here it is possible to add additional (virtual) child resources to those already existing in the VFS.
 boolean copyResource(CmsObject cms, java.lang.String source, java.lang.String destination, CmsResource.CmsResourceCopyMode siblingMode)
          Copies a resource.
 CmsResource createResource(CmsObject cms, java.lang.String resourcename, int type, byte[] content, java.util.List properties)
          Creates a new resource of the given resource type with the provided content and properties.
 boolean deleteResource(CmsObject cms, java.lang.String resourcename, CmsResource.CmsResourceDeleteMode siblingMode)
          Deletes a resource given its name.
 CmsLock getLock(CmsObject cms, CmsResource resource)
          Returns the lock for the resource.
 boolean isWrappedResource(CmsObject cms, CmsResource res)
          Is called to check if the given resource is handled by this wrapper.
 boolean lockResource(CmsObject cms, java.lang.String resourcename)
          Locks a resource.
 boolean moveResource(CmsObject cms, java.lang.String source, java.lang.String destination)
          Moves a resource to the given destination.
 CmsFile readFile(CmsObject cms, java.lang.String resourcename, CmsResourceFilter filter)
          Reads a file resource (including it's binary content) from the VFS, using the specified resource filter.
 CmsResource readResource(CmsObject cms, java.lang.String resourcename, CmsResourceFilter filter)
          Reads a resource from the VFS, using the specified resource filter.
 java.lang.String restoreLink(CmsObject cms, java.lang.String uri)
          Returns the link to a existing resource in the VFS for the uri.
 java.lang.String rewriteLink(CmsObject cms, CmsResource res)
          Returns the link how it is for the resource after using this resource wrapper.
 boolean unlockResource(CmsObject cms, java.lang.String resourcename)
          Unlocks a resource.
 CmsResource wrapResource(CmsObject cms, CmsResource resource)
          Changes the given resource based on the implementation of this wrapper.
 CmsFile writeFile(CmsObject cms, CmsFile resource)
          Writes a resource, including it's content.
 

Method Detail

addResourcesToFolder

java.util.List addResourcesToFolder(CmsObject cms,
                                    java.lang.String resourcename,
                                    CmsResourceFilter filter)
                                    throws CmsException
Here it is possible to add additional (virtual) child resources to those already existing in the VFS.

Parameters:
cms - the current users OpenCms context
resourcename - the full path of the resource where to add the child resources for
filter - the resource filter to use
Returns:
a list of all additionaly child CmsResources
Throws:
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.getResourcesInFolder(String, CmsResourceFilter)

copyResource

boolean copyResource(CmsObject cms,
                     java.lang.String source,
                     java.lang.String destination,
                     CmsResource.CmsResourceCopyMode siblingMode)
                     throws CmsException,
                            CmsIllegalArgumentException
Copies a resource.

First should be a check if the source and/or the destination are handled by this resource wrapper.

It is possible that the path in the source or in the destination are virtual paths and so has to be translated into valid paths existing in the VFS to copy the resource.

Parameters:
cms - the initialized CmsObject
source - the name of the resource to copy
destination - the name of the copy destination with complete path
siblingMode - indicates how to handle siblings during copy
Returns:
true if the copy action was handled by this resource wrapper otherwise false
Throws:
CmsIllegalArgumentException - if the destination argument is null or of length 0
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.copyResource(String, String, CmsResource.CmsResourceCopyMode), CmsObject.copyResource(String, String, CmsResource.CmsResourceCopyMode)

createResource

CmsResource createResource(CmsObject cms,
                           java.lang.String resourcename,
                           int type,
                           byte[] content,
                           java.util.List properties)
                           throws CmsException,
                                  CmsIllegalArgumentException
Creates a new resource of the given resource type with the provided content and properties.

First should be a check if the resourcename is handled by this resource wrapper.

It is possible that the path in the resourcename is a virtual path and so has to be translated into a valid path existing in the VFS to create the resource.

Parameters:
cms - the initialized CmsObject
resourcename - the name of the resource to create (full path)
type - the type of the resource to create
content - the content for the new resource
properties - the properties for the new resource
Returns:
the created resource or null if not handled by this resource wrapper
Throws:
CmsException - if something goes wrong
CmsIllegalArgumentException - if the source argument is null or of length 0
See Also:
CmsObjectWrapper.createResource(String, int, byte[], List), CmsObject.createResource(String, int, byte[], List)

deleteResource

boolean deleteResource(CmsObject cms,
                       java.lang.String resourcename,
                       CmsResource.CmsResourceDeleteMode siblingMode)
                       throws CmsException
Deletes a resource given its name.

First should be a check if the resourcename is handled by this resource wrapper.

It is possible that the path in the resourcename is a virtual path and so has to be translated into a valid path existing in the VFS to delete the resource.

Parameters:
cms - the initialized CmsObject
resourcename - the name of the resource to delete
siblingMode - indicates how to handle siblings of the deleted resource
Returns:
true if the delete action was handled by this resource wrapper otherwise false
Throws:
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.deleteResource(String, CmsResource.CmsResourceDeleteMode), CmsObject.deleteResource(String, CmsResource.CmsResourceDeleteMode)

getLock

CmsLock getLock(CmsObject cms,
                CmsResource resource)
                throws CmsException
Returns the lock for the resource.

First should be a check if the resource is handled by this resource wrapper.

It is possible that the path in the resource is a virtual path and so has to be translated into a valid path existing in the VFS to get the lock for the resource.

Parameters:
cms - the initialized CmsObject
resource - the resource to check the lock for
Returns:
the lock state of the resource or null if the action couldn't be handled by this resource wrapper
Throws:
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.getLock(CmsResource), CmsObject.getLock(CmsResource)

isWrappedResource

boolean isWrappedResource(CmsObject cms,
                          CmsResource res)
Is called to check if the given resource is handled by this wrapper.

Parameters:
cms - the initialized CmsObject
res - the resource to check
Returns:
true if the resource will be handled by the wrapper otherwise false
See Also:
CmsObjectWrapper.getResourcesInFolder(String, CmsResourceFilter)

lockResource

boolean lockResource(CmsObject cms,
                     java.lang.String resourcename)
                     throws CmsException
Locks a resource.

First should be a check if the resourcename is handled by this resource wrapper.

It is possible that the path in the resourcename is a virtual path and so has to be translated into a valid path existing in the VFS to lock the resource.

Parameters:
cms - the current users OpenCms context
resourcename - the name of the resource to lock (full path)
Returns:
true if this request could be handled by this wrapper or false if not
Throws:
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.lockResource(String), CmsObject.lockResource(String)

moveResource

boolean moveResource(CmsObject cms,
                     java.lang.String source,
                     java.lang.String destination)
                     throws CmsException,
                            CmsIllegalArgumentException
Moves a resource to the given destination.

First should be a check if the source and/or the destination are handled by this resource wrapper.

It is possible that the path in the source or in the destination are virtual paths and so has to be translated into valid paths existing in the VFS to move the resource.

Parameters:
cms - the current cms context
source - the name of the resource to move
destination - the destination resource name
Returns:
true if the move action was handled by this resource wrapper otherwise false
Throws:
CmsException - if something goes wrong
CmsIllegalArgumentException - if the source argument is null or of length 0
See Also:
CmsObjectWrapper.moveResource(String, String), CmsObject.moveResource(String, String)

readFile

CmsFile readFile(CmsObject cms,
                 java.lang.String resourcename,
                 CmsResourceFilter filter)
                 throws CmsException
Reads a file resource (including it's binary content) from the VFS, using the specified resource filter.

First should be a check if the resourcename is handled by this resource wrapper.

It is possible that the path in the resourcename is a virtual path and so has to be translated into a valid path existing in the VFS to read the resource.

Parameters:
cms - the current users OpenCms context
resourcename - the name of the resource to read (full path)
filter - the resource filter to use while reading
Returns:
the file resource that was read or null if it could not be handled by this resource wrapper
Throws:
CmsException - if the file resource could not be read for any reason
See Also:
CmsObjectWrapper.readFile(String, CmsResourceFilter), CmsObject.readFile(String, CmsResourceFilter)

readResource

CmsResource readResource(CmsObject cms,
                         java.lang.String resourcename,
                         CmsResourceFilter filter)
                         throws CmsException
Reads a resource from the VFS, using the specified resource filter.

First should be a check if the resourcename is handled by this resource wrapper.

It is possible that the path in the resourcename is a virtual path and so has to be translated into a valid path existing in the VFS to read the resource.

Parameters:
cms - the current users OpenCms context
resourcename - The name of the resource to read (full path)
filter - the resource filter to use while reading
Returns:
the resource that was read or null if it could not be handled by this resource wrapper
Throws:
CmsException - if the resource could not be read for any reason
See Also:
CmsObjectWrapper.readResource(String, CmsResourceFilter), CmsObject.readResource(String, CmsResourceFilter)

restoreLink

java.lang.String restoreLink(CmsObject cms,
                             java.lang.String uri)
Returns the link to a existing resource in the VFS for the uri.

Turns the virtual path into a real path to a resource in the VFS.

Parameters:
cms - the initialized CmsObject
uri - the (virtual) uri to be restored
Returns:
the uri where to find the resource in the VFS or null if the wrapper is not responsible
See Also:
rewriteLink(CmsObject, CmsResource), CmsObjectWrapper.restoreLink(String)

rewriteLink

java.lang.String rewriteLink(CmsObject cms,
                             CmsResource res)
Returns the link how it is for the resource after using this resource wrapper.

For example: in the VFS: "/sites/default/index.html" and this resource wrapper adds the extension "jsp" then link returned should be "/sites/default/index.html.jsp".

Parameters:
cms - the initialized CmsObject
res - the resource where to rewrite the path
Returns:
the rewritten path or null if the wrapper is not responsible
See Also:
restoreLink(CmsObject, String), CmsObjectWrapper.rewriteLink(String)

unlockResource

boolean unlockResource(CmsObject cms,
                       java.lang.String resourcename)
                       throws CmsException
Unlocks a resource.

First should be a check if the resourcename is handled by this resource wrapper.

It is possible that the path in the resourcename is a virtual path and so has to be translated into a valid path existing in the VFS to unlock the resource.

Parameters:
cms - the current users OpenCms context
resourcename - the name of the resource to unlock (full path)
Returns:
true if this request could be handled by this wrapper of false if not
Throws:
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.unlockResource(String), CmsObject.unlockResource(String)

wrapResource

CmsResource wrapResource(CmsObject cms,
                         CmsResource resource)
Changes the given resource based on the implementation of this wrapper.

For example, some resource types like CmsResourceTypeJsp just get a .jsp extension, while other types like CmsResourceTypeXmlPage are "exploded" into a folder / file structure.

Parameters:
cms - the current users OpenCms context
resource - the resource to wrap
Returns:
a wrapped CmsResource object or null to not change the resource
See Also:
CmsObjectWrapper.getResourcesInFolder(String, CmsResourceFilter)

writeFile

CmsFile writeFile(CmsObject cms,
                  CmsFile resource)
                  throws CmsException
Writes a resource, including it's content.

First should be a check if the resource is handled by this resource wrapper.

It is possible that the path in the resource is a virtual path and so has to be translated into a valid path existing in the VFS to write the resource.

Parameters:
cms - the current cms context
resource - the resource to apply this operation to
Returns:
the written resource or null if the action could not be handled by this resource wrapper
Throws:
CmsException - if something goes wrong
See Also:
CmsObjectWrapper.writeFile(CmsFile), CmsObject.writeFile(CmsFile)