Class CmsXmlEntityResolver

java.lang.Object
org.opencms.xml.CmsXmlEntityResolver
All Implemented Interfaces:
I_CmsEventListener, EntityResolver

Resolves XML entities (e.g. external DTDs) in the OpenCms VFS.

Also provides a cache for XML content schema definitions.

Since:
6.0.0
  • Field Details

  • Constructor Details

    • CmsXmlEntityResolver

      Creates a new XML entity resolver based on the provided CmsObject.

      If the provided CmsObject is null, then the OpenCms VFS is not searched for XML entities, however the internal cache and other OpenCms internal entities not in the VFS are still resolved.

      Parameters:
      cms - the cms context to use for resolving XML files from the OpenCms VFS
  • Method Details

    • cacheSystemId

      public static void cacheSystemId(String systemId, byte[] content)
      Adds a system ID URL to to internal permanent cache.

      This cache will NOT be cleared automatically.

      Parameters:
      systemId - the system ID to add
      content - the content of the system id
    • isCachedSystemId

      public static boolean isCachedSystemId(String systemId)
      Checks if a given system ID URL is in the internal permanent cache.

      This check is required to see if a XML content is based on a file that actually exists in the OpenCms VFS, or if the schema has been just cached without a VFS file.

      Parameters:
      systemId - the system id ID check
      Returns:
      true if the system ID is in the internal permanent cache, false otherwise
    • isInternalId

      public static boolean isInternalId(String schema)
      Checks whether the given schema id is an internal schema id or is translated to an internal schema id.

      Parameters:
      schema - the schema id
      Returns:
      true if the given schema id is an internal schema id or translated to an internal schema id
    • initialize

      protected static void initialize(CmsObject adminCms, byte[] typeSchemaBytes)
      Initialize the OpenCms XML entity resolver.

      Parameters:
      adminCms - an initialized OpenCms user context with "Administrator" role permissions
      typeSchemaBytes - the base widget type XML schema definitions
      See Also:
    • cacheContentDefinition

      public void cacheContentDefinition(String systemId, CmsXmlContentDefinition contentDefinition)
      Caches an XML content definition based on the given system id and the online / offline status of this entity resolver instance.

      Parameters:
      systemId - the system id to use as cache key
      contentDefinition - the content definition to cache
    • cmsEvent

      public void cmsEvent(CmsEvent event)
      Description copied from interface: I_CmsEventListener
      Acknowledge the occurrence of the specified event, implement this method to check for CmsEvents in your class.
      Specified by:
      cmsEvent in interface I_CmsEventListener
      Parameters:
      event - CmsEvent that has occurred
      See Also:
    • getCachedContentDefinition

      Looks up the given XML content definition system id in the internal content definition cache.

      Parameters:
      systemId - the system id of the XML content definition to look up
      Returns:
      the XML content definition found, or null if no definition is cached for the given system id
    • resolveEntity

      public InputSource resolveEntity(String publicId, String systemId) throws IOException
      Specified by:
      resolveEntity in interface EntityResolver
      Throws:
      IOException
      See Also:
    • uncacheSystemId

      public void uncacheSystemId(String systemId)
      Removes a cached entry for a system id (filename) from the internal offline temporary and content definition caches.

      The online resources cached for the online project are only flushed when a project is published.

      Parameters:
      systemId - the system id (filename) to remove from the cache