Class CmsResourceManager

java.lang.Object
org.opencms.loader.CmsResourceManager

public class CmsResourceManager extends 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
  • Field Details

  • Constructor Details

    • CmsResourceManager

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

  • Method Details

    • addContentCollector

      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

      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
    • addLoader

      Adds a new loader to the internal list of loaded loaders.

      Parameters:
      loader - the loader to add
      Throws:
      CmsConfigurationException - in case the resource manager configuration is already initialized
    • addMimeType

      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

      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

      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

      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

      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

      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.
    • getFileTranslator

      Returns the file translator.

      Returns:
      the file translator
    • getFolderTranslator

      Returns the folder translator.

      Returns:
      the folder translator
    • getHtmlConverter

      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
    • getHtmlConverters

      Returns an unmodifiable List of the configured CmsHtmlConverterOption objects.

      Returns:
      an unmodifiable List of the configured CmsHtmlConverterOption objects
    • getLoader

      Returns the loader class instance for a given resource.

      Parameters:
      resource - the resource
      Returns:
      the appropriate loader class instance
      Throws:
      CmsLoaderException - if something goes wrong
    • 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

      Returns the (unmodifiable array) list with all initialized resource loaders.

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

      public String getMimeType(String filename, 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 String getMimeType(String filename, String encoding, 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
    • getMimeTypes

      Returns an unmodifiable List of the configured CmsMimeType objects.

      Returns:
      an unmodifiable List of the configured CmsMimeType objects
    • getNameGenerator

      Returns the name generator for XML content file names.

      Returns:
      the name generator for XML content file names.
    • getRegisteredContentCollectors

      Returns an (unmodifiable) list of class names of all currently registered content collectors (I_CmsResourceCollector objects).

      Returns:
      an (unmodifiable) list of class names of all currently registered content collectors (I_CmsResourceCollector objects)
    • getRelationTypes

      Returns an unmodifiable List of the configured CmsRelationType objects.

      Returns:
      an unmodifiable List of the configured CmsRelationType objects
    • getResourceType

      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

      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

      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

      Returns the (unmodifiable) list with all initialized resource types.

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

      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

      The configured default type for files when the resource type is missing.

      Returns:
      the configured default type for files
    • 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, 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, 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
    • getXsdTranslator

      Returns the XSD translator.

      Returns:
      the XSD translator
    • hasResourceType

      public boolean hasResourceType(I_CmsResourceType type)
      Checks if an initialized resource type instance equal to the given resource type is available.

      Parameters:
      type - the resource type to check
      Returns:
      true if such a resource type has been configured, false otherwise
      See Also:
    • 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:
    • hasResourceType

      public boolean hasResourceType(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:
    • initConfiguration

      Throws:
      CmsConfigurationException - in case of duplicate resource types in the configuration
      See Also:
    • initialize

      Initializes all additional resource types stored in the modules.

      Parameters:
      cms - an initialized OpenCms user context with "module manager" role permissions
      Throws:
      CmsRoleViolationException - in case the provided OpenCms user context did not have "module manager" role permissions
      CmsConfigurationException - in case of duplicate resource types in the configuration
    • loadResource

      public void loadResource(CmsObject cms, CmsResource resource, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res) throws javax.servlet.ServletException, 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
      IOException - if something goes wrong
      CmsException - if something goes wrong
    • matchResourceType

      public boolean matchResourceType(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
    • setNameGenerator

      Configures the URL name generator for XML contents.

      Parameters:
      nameGenerator - the configured name generator class
      Throws:
      CmsConfigurationException - if something goes wrong
    • setTranslators

      public void setTranslators(CmsResourceTranslator folderTranslator, CmsResourceTranslator fileTranslator, CmsResourceTranslator xsdTranslator)
      Sets the folder, the file and the XSD translator.

      Parameters:
      folderTranslator - the folder translator to set
      fileTranslator - the file translator to set
      xsdTranslator - the XSD translator to set
    • shutDown

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

      Throws:
      Exception - in case of errors during shutdown