Class CmsResourceManager


  • public class CmsResourceManager
    extends java.lang.Object
    Collects all available resource loaders, resource types and resource collectors at startup and provides methods to access them during OpenCms runtime.

    Since:
    6.0.0
    • Constructor Detail

      • CmsResourceManager

        public CmsResourceManager()
        Creates a new instance for the resource manager, will be called by the VFS configuration manager.

    • Method Detail

      • addContentCollector

        public I_CmsResourceCollector addContentCollector​(java.lang.String className,
                                                          java.lang.String order)
                                                   throws CmsConfigurationException
        Adds a given content collector class to the type manager.

        Parameters:
        className - the name of the class to add
        order - the order number for this collector
        Returns:
        the created content collector instance
        Throws:
        CmsConfigurationException - in case the collector could not be properly initialized
      • addHtmlConverter

        public I_CmsHtmlConverter addHtmlConverter​(java.lang.String name,
                                                   java.lang.String className)
                                            throws CmsConfigurationException
        Adds a new HTML converter class to internal list of loaded converter classes.

        Parameters:
        name - the name of the option that should trigger the HTML converter class
        className - the name of the class to add
        Returns:
        the created HTML converter instance
        Throws:
        CmsConfigurationException - in case the HTML converter could not be properly initialized
      • addMimeType

        public CmsMimeType addMimeType​(java.lang.String extension,
                                       java.lang.String type)
                                throws CmsConfigurationException
        Adds a new MIME type from the XML configuration to the internal list of MIME types.

        Parameters:
        extension - the MIME type extension
        type - the MIME type description
        Returns:
        the created MIME type instance
        Throws:
        CmsConfigurationException - in case the resource manager configuration is already initialized
      • addRelationType

        public CmsRelationType addRelationType​(java.lang.String name,
                                               java.lang.String type)
                                        throws CmsConfigurationException
        Adds a new relation type from the XML configuration to the list of user defined relation types.

        Parameters:
        name - the name of the relation type
        type - the type of the relation type, weak or strong
        Returns:
        the new created relation type instance
        Throws:
        CmsConfigurationException - in case the resource manager configuration is already initialized
      • addResourceType

        public void addResourceType​(I_CmsResourceType resourceType)
                             throws CmsConfigurationException
        Adds a new resource type from the XML configuration to the internal list of loaded resource types.

        Resource types can also be added from a module.

        Parameters:
        resourceType - the resource type to add
        Throws:
        CmsConfigurationException - in case the resource manager configuration is already initialized
      • getAllowedContextMap

        public java.util.Map<java.lang.String,​CmsDefaultSet<java.lang.String>> getAllowedContextMap​(CmsObject cms)
        Gets the map of forbidden contexts for resource types.

        Parameters:
        cms - the current CMS context
        Returns:
        the map from resource types to the forbidden contexts
      • getContentCollector

        public I_CmsResourceCollector getContentCollector​(java.lang.String collectorName)
        Returns the configured content collector with the given name, or null if no collector with this name is configured.

        Parameters:
        collectorName - the name of the collector to get
        Returns:
        the configured content collector with the given name
      • getDefaultTypeForName

        public I_CmsResourceType getDefaultTypeForName​(java.lang.String resourcename)
                                                throws CmsException
        Returns the default resource type for the given resource name, using the configured resource type file extensions.

        In case the given name does not map to a configured resource type, CmsResourceTypePlain is returned.

        This is only required (and should not be used otherwise) when creating a new resource automatically during file upload or synchronization. Only in this case, the file type for the new resource is determined using this method. Otherwise the resource type is always stored as part of the resource, and is not related to the file name.

        Parameters:
        resourcename - the resource name to look up the resource type for
        Returns:
        the default resource type for the given resource name
        Throws:
        CmsException - if something goes wrong
      • getExtensionMapping

        public java.util.Map<java.lang.String,​java.lang.String> getExtensionMapping()
        Returns the file extensions (suffixes) mappings to resource types.

        Returns:
        a Map with all known file extensions as keys and their resource types as values.
      • getHtmlConverter

        public java.lang.String getHtmlConverter​(java.lang.String name)
        Returns the matching HTML converter class name for the specified option name.

        Parameters:
        name - the name of the option that should trigger the HTML converter class
        Returns:
        the matching HTML converter class name for the specified option name or null if no match is found
      • getLoader

        public I_CmsResourceLoader getLoader​(int id)
        Returns the loader class instance for the given loader id.

        Parameters:
        id - the id of the loader to return
        Returns:
        the loader class instance for the given loader id
      • getLoaders

        public java.util.List<I_CmsResourceLoadergetLoaders()
        Returns the (unmodifiable array) list with all initialized resource loaders.

        Returns:
        the (unmodifiable array) list with all initialized resource loaders
      • getMimeType

        public java.lang.String getMimeType​(java.lang.String filename,
                                            java.lang.String encoding)
        Returns the MIME type for a specified file name.

        If an encoding parameter that is not null is provided, the returned MIME type is extended with a ; charset={encoding} setting.

        If no MIME type for the given filename can be determined, the default MIMETYPE_HTML is used.

        Parameters:
        filename - the file name to check the MIME type for
        encoding - the default encoding (charset) in case of MIME types is of type "text"
        Returns:
        the MIME type for a specified file
      • getMimeType

        public java.lang.String getMimeType​(java.lang.String filename,
                                            java.lang.String encoding,
                                            java.lang.String defaultMimeType)
        Returns the MIME type for a specified file name.

        If an encoding parameter that is not null is provided, the returned MIME type is extended with a ; charset={encoding} setting.

        If no MIME type for the given filename can be determined, the provided default is used.

        Parameters:
        filename - the file name to check the MIME type for
        encoding - the default encoding (charset) in case of MIME types is of type "text"
        defaultMimeType - the default MIME type to use if no matching type for the filename is found
        Returns:
        the MIME type for a specified file
      • getResourceType

        public I_CmsResourceType getResourceType​(CmsResource resource)
        Convenience method to get the initialized resource type instance for the given resource, with a fall back to special "unknown" resource types in case the resource type is not configured.

        Parameters:
        resource - the resource to get the type for
        Returns:
        the initialized resource type instance for the given resource
      • getResourceType

        public I_CmsResourceType getResourceType​(int typeId)
                                          throws CmsLoaderException
        Returns the initialized resource type instance for the given id.

        Parameters:
        typeId - the id of the resource type to get
        Returns:
        the initialized resource type instance for the given id
        Throws:
        CmsLoaderException - if no resource type is available for the given id
      • getResourceType

        public I_CmsResourceType getResourceType​(java.lang.String typeName)
                                          throws CmsLoaderException
        Returns the initialized resource type instance for the given resource type name.

        Parameters:
        typeName - the name of the resource type to get
        Returns:
        the initialized resource type instance for the given name
        Throws:
        CmsLoaderException - if no resource type is available for the given name
      • getResourceTypes

        public java.util.List<I_CmsResourceTypegetResourceTypes()
        Returns the (unmodifiable) list with all initialized resource types.

        Returns:
        the (unmodifiable) list with all initialized resource types
      • getResourceTypesWithUnknown

        public java.util.List<I_CmsResourceTypegetResourceTypesWithUnknown()
        Returns the (unmodifiable) list with all initialized resource types including unknown types.

        Returns:
        the (unmodifiable) list with all initialized resource types including unknown types
      • getResTypeUnknownFile

        public I_CmsResourceType getResTypeUnknownFile()
        The configured default type for files when the resource type is missing.

        Returns:
        the configured default type for files
      • getResTypeUnknownFolder

        public I_CmsResourceType getResTypeUnknownFolder()
        The configured default type for folders when the resource type is missing.

        Returns:
        The configured default type for folders
      • getTemplateLoaderFacade

        public CmsTemplateLoaderFacade getTemplateLoaderFacade​(CmsObject cms,
                                                               CmsResource resource,
                                                               java.lang.String templateProperty)
                                                        throws CmsException
        Returns a template loader facade for the given file.

        Parameters:
        cms - the current OpenCms user context
        resource - the requested file
        templateProperty - the property to read for the template
        Returns:
        a resource loader facade for the given file
        Throws:
        CmsException - if something goes wrong
      • getTemplateLoaderFacade

        public CmsTemplateLoaderFacade getTemplateLoaderFacade​(CmsObject cms,
                                                               javax.servlet.http.HttpServletRequest request,
                                                               CmsResource resource,
                                                               java.lang.String templateProperty)
                                                        throws CmsException
        Returns a template loader facade for the given file.

        Parameters:
        cms - the current OpenCms user context
        request - the current request
        resource - the requested file
        templateProperty - the property to read for the template
        Returns:
        a resource loader facade for the given file
        Throws:
        CmsException - if something goes wrong
      • hasResourceType

        @Deprecated
        public boolean hasResourceType​(int typeId)
        Deprecated.
        Use hasResourceType(I_CmsResourceType) or hasResourceType(I_CmsResourceType) instead. Resource types should always be referenced either by its type class (preferred) or by type name. Use of int based resource type references will be discontinued in a future OpenCms release.
        Checks if an initialized resource type instance for the given resource type is is available.

        Parameters:
        typeId - the id of the resource type to check
        Returns:
        true if such a resource type has been configured, false otherwise
        See Also:
        getResourceType(int)
      • hasResourceType

        public boolean hasResourceType​(java.lang.String typeName)
        Checks if an initialized resource type instance for the given resource type name is available.

        Parameters:
        typeName - the name of the resource type to check
        Returns:
        true if such a resource type has been configured, false otherwise
        See Also:
        getResourceType(String)
      • loadResource

        public void loadResource​(CmsObject cms,
                                 CmsResource resource,
                                 javax.servlet.http.HttpServletRequest req,
                                 javax.servlet.http.HttpServletResponse res)
                          throws javax.servlet.ServletException,
                                 java.io.IOException,
                                 CmsException
        Loads the requested resource and writes the contents to the response stream.

        Parameters:
        req - the current HTTP request
        res - the current HTTP response
        cms - the current OpenCms user context
        resource - the requested resource
        Throws:
        javax.servlet.ServletException - if something goes wrong
        java.io.IOException - if something goes wrong
        CmsException - if something goes wrong
      • matchResourceType

        public boolean matchResourceType​(java.lang.String name,
                                         int id)
        Checks if there is a resource type with a given name whose id matches the given id.

        This will return 'false' if no resource type with the given name is registered.

        Parameters:
        name - a resource type name
        id - a resource type id
        Returns:
        true if a matching resource type with the given name and id was found
      • shutDown

        public void shutDown()
                      throws java.lang.Exception
        Shuts down this resource manage instance.

        Throws:
        java.lang.Exception - in case of errors during shutdown