org.opencms.file.wrapper
Class A_CmsResourceExtensionWrapper

java.lang.Object
  extended by org.opencms.file.wrapper.A_CmsResourceWrapper
      extended by org.opencms.file.wrapper.A_CmsResourceExtensionWrapper
All Implemented Interfaces:
I_CmsResourceWrapper
Direct Known Subclasses:
CmsResourceExtensionWrapperJsp, CmsResourceExtensionWrapperXmlContent, CmsResourceExtensionWrapperXmlPage

public abstract class A_CmsResourceExtensionWrapper
extends A_CmsResourceWrapper

Abstract base class which implements I_CmsResourceWrapper and makes it possible to add and remove file extensions to resources.

Since:
6.5.6
Version:
$Revision: 1.11 $
Author:
Peter Bonrad

Field Summary
 
Fields inherited from class org.opencms.file.wrapper.A_CmsResourceWrapper
m_isWrappedResource
 
Constructor Summary
A_CmsResourceExtensionWrapper()
           
 
Method Summary
protected abstract  boolean checkTypeId(int typeId)
          Checks if the type id belongs to this resource wrapper.
 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.
protected abstract  java.lang.String getExtension()
          Returns the extension to add and/or remove to/from the resource.
 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 res)
          Changes the given resource based on the implementation of this wrapper.
 CmsFile writeFile(CmsObject cms, CmsFile resource)
          Writes a resource, including it's content.
 
Methods inherited from class org.opencms.file.wrapper.A_CmsResourceWrapper
addResourcesToFolder
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

A_CmsResourceExtensionWrapper

public A_CmsResourceExtensionWrapper()
Method Detail

copyResource

public boolean copyResource(CmsObject cms,
                            java.lang.String source,
                            java.lang.String destination,
                            CmsResource.CmsResourceCopyMode siblingMode)
                     throws CmsException,
                            CmsIllegalArgumentException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
copyResource in interface I_CmsResourceWrapper
Overrides:
copyResource in class A_CmsResourceWrapper
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:
CmsException - if something goes wrong
CmsIllegalArgumentException - if the destination argument is null or of length 0
See Also:
A_CmsResourceWrapper.copyResource(org.opencms.file.CmsObject, java.lang.String, java.lang.String, org.opencms.file.CmsResource.CmsResourceCopyMode)

createResource

public CmsResource createResource(CmsObject cms,
                                  java.lang.String resourcename,
                                  int type,
                                  byte[] content,
                                  java.util.List properties)
                           throws CmsException,
                                  CmsIllegalArgumentException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
createResource in interface I_CmsResourceWrapper
Overrides:
createResource in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.createResource(org.opencms.file.CmsObject, java.lang.String, int, byte[], java.util.List)

deleteResource

public boolean deleteResource(CmsObject cms,
                              java.lang.String resourcename,
                              CmsResource.CmsResourceDeleteMode siblingMode)
                       throws CmsException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
deleteResource in interface I_CmsResourceWrapper
Overrides:
deleteResource in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.deleteResource(CmsObject, String, org.opencms.file.CmsResource.CmsResourceDeleteMode)

getLock

public CmsLock getLock(CmsObject cms,
                       CmsResource resource)
                throws CmsException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
getLock in interface I_CmsResourceWrapper
Overrides:
getLock in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.getLock(org.opencms.file.CmsObject, org.opencms.file.CmsResource)

isWrappedResource

public boolean isWrappedResource(CmsObject cms,
                                 CmsResource res)
Description copied from interface: I_CmsResourceWrapper
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:
I_CmsResourceWrapper.isWrappedResource(CmsObject, CmsResource)

lockResource

public boolean lockResource(CmsObject cms,
                            java.lang.String resourcename)
                     throws CmsException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
lockResource in interface I_CmsResourceWrapper
Overrides:
lockResource in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.lockResource(org.opencms.file.CmsObject, java.lang.String)

moveResource

public boolean moveResource(CmsObject cms,
                            java.lang.String source,
                            java.lang.String destination)
                     throws CmsException,
                            CmsIllegalArgumentException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
moveResource in interface I_CmsResourceWrapper
Overrides:
moveResource in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.moveResource(org.opencms.file.CmsObject, java.lang.String, java.lang.String)

readFile

public CmsFile readFile(CmsObject cms,
                        java.lang.String resourcename,
                        CmsResourceFilter filter)
                 throws CmsException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
readFile in interface I_CmsResourceWrapper
Overrides:
readFile in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.readFile(CmsObject, String, CmsResourceFilter)

readResource

public CmsResource readResource(CmsObject cms,
                                java.lang.String resourcename,
                                CmsResourceFilter filter)
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
readResource in interface I_CmsResourceWrapper
Overrides:
readResource in class A_CmsResourceWrapper
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
See Also:
A_CmsResourceWrapper.readResource(CmsObject, String, CmsResourceFilter)

restoreLink

public java.lang.String restoreLink(CmsObject cms,
                                    java.lang.String uri)
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
restoreLink in interface I_CmsResourceWrapper
Overrides:
restoreLink in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.restoreLink(org.opencms.file.CmsObject, java.lang.String)

rewriteLink

public java.lang.String rewriteLink(CmsObject cms,
                                    CmsResource res)
Description copied from interface: I_CmsResourceWrapper
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".

Specified by:
rewriteLink in interface I_CmsResourceWrapper
Overrides:
rewriteLink in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.rewriteLink(CmsObject, CmsResource)

unlockResource

public boolean unlockResource(CmsObject cms,
                              java.lang.String resourcename)
                       throws CmsException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
unlockResource in interface I_CmsResourceWrapper
Overrides:
unlockResource in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.unlockResource(org.opencms.file.CmsObject, java.lang.String)

wrapResource

public CmsResource wrapResource(CmsObject cms,
                                CmsResource res)
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
wrapResource in interface I_CmsResourceWrapper
Overrides:
wrapResource in class A_CmsResourceWrapper
Parameters:
cms - the current users OpenCms context
res - the resource to wrap
Returns:
a wrapped CmsResource object or null to not change the resource
See Also:
A_CmsResourceWrapper.wrapResource(CmsObject, CmsResource)

writeFile

public CmsFile writeFile(CmsObject cms,
                         CmsFile resource)
                  throws CmsException
Description copied from interface: I_CmsResourceWrapper
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.

Specified by:
writeFile in interface I_CmsResourceWrapper
Overrides:
writeFile in class A_CmsResourceWrapper
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:
A_CmsResourceWrapper.writeFile(org.opencms.file.CmsObject, org.opencms.file.CmsFile)

checkTypeId

protected abstract boolean checkTypeId(int typeId)
Checks if the type id belongs to this resource wrapper.

Parameters:
typeId - the type id to check
Returns:
true if the type id belongs to this wrapper otherwise false

getExtension

protected abstract java.lang.String getExtension()
Returns the extension to add and/or remove to/from the resource.

Returns:
the extension to use