org.opencms.xml
Class CmsXmlEntityResolver

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

public class CmsXmlEntityResolver
extends java.lang.Object
implements org.xml.sax.EntityResolver, I_CmsEventListener

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

Also provides a cache for XML content schema definitions.

Since:
6.0.0
Version:
$Revision: 1.35 $
Author:
Alexander Kandzior

Field Summary
static java.lang.String OPENCMS_SCHEME
          The scheme to identify a file in the OpenCms VFS.
 
Fields inherited from interface org.opencms.main.I_CmsEventListener
EVENT_BEFORE_PUBLISH_PROJECT, EVENT_CLEAR_CACHES, EVENT_CLEAR_OFFLINE_CACHES, EVENT_CLEAR_ONLINE_CACHES, EVENT_CLEAR_PRINCIPAL_CACHES, EVENT_FLEX_CACHE_CLEAR, EVENT_FLEX_PURGE_JSP_REPOSITORY, EVENT_FULLSTATIC_EXPORT, EVENT_GROUP_MODIFIED, EVENT_LOGIN_USER, EVENT_OU_MODIFIED, EVENT_PROJECT_MODIFIED, EVENT_PROPERTY_DEFINITION_CREATED, EVENT_PROPERTY_DEFINITION_MODIFIED, EVENT_PROPERTY_MODIFIED, EVENT_PUBLISH_PROJECT, EVENT_REBUILD_SEARCHINDEXES, EVENT_RESOURCE_AND_PROPERTIES_MODIFIED, EVENT_RESOURCE_COPIED, EVENT_RESOURCE_CREATED, EVENT_RESOURCE_DELETED, EVENT_RESOURCE_MODIFIED, EVENT_RESOURCE_MOVED, EVENT_RESOURCES_AND_PROPERTIES_MODIFIED, EVENT_RESOURCES_MODIFIED, EVENT_UPDATE_EXPORTS, EVENT_USER_MODIFIED, KEY_CHANGE, KEY_DBCONTEXT, KEY_GROUP_ID, KEY_GROUP_NAME, KEY_INDEX_NAMES, KEY_OU_ID, KEY_OU_NAME, KEY_PROJECTID, KEY_PUBLISHID, KEY_PUBLISHLIST, KEY_REPORT, KEY_RESOURCE, KEY_RESOURCES, KEY_USER_ACTION, KEY_USER_ID, KEY_USER_NAME, LISTENERS_FOR_ALL_EVENTS, VALUE_GROUP_MODIFIED_ACTION_CREATE, VALUE_GROUP_MODIFIED_ACTION_DELETE, VALUE_GROUP_MODIFIED_ACTION_WRITE, VALUE_OU_MODIFIED_ACTION_CREATE, VALUE_OU_MODIFIED_ACTION_DELETE, VALUE_USER_MODIFIED_ACTION_ADD_USER_TO_GROUP, VALUE_USER_MODIFIED_ACTION_CREATE_USER, VALUE_USER_MODIFIED_ACTION_DELETE_USER, VALUE_USER_MODIFIED_ACTION_REMOVE_USER_FROM_GROUP, VALUE_USER_MODIFIED_ACTION_RESET_PASSWORD, VALUE_USER_MODIFIED_ACTION_SET_OU, VALUE_USER_MODIFIED_ACTION_WRITE_USER
 
Constructor Summary
CmsXmlEntityResolver(CmsObject cms)
          Creates a new XML entity resolver based on the provided CmsObject.
 
Method Summary
 void cacheContentDefinition(java.lang.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.
static void cacheSystemId(java.lang.String systemId, byte[] content)
          Adds a sytem id URL to to internal permanent cache.
 void cmsEvent(CmsEvent event)
          Acknowledge the occurrence of the specified event, implement this method to check for CmsEvents in your class.
 CmsXmlContentDefinition getCachedContentDefinition(java.lang.String systemId)
          Looks up the given XML content definition system id in the internal content definition cache.
protected static void initialize(CmsObject adminCms, byte[] typeSchemaBytes)
          Initialize the OpenCms XML entity resolver.
 org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OPENCMS_SCHEME

public static final java.lang.String OPENCMS_SCHEME
The scheme to identify a file in the OpenCms VFS.

See Also:
Constant Field Values
Constructor Detail

CmsXmlEntityResolver

public CmsXmlEntityResolver(CmsObject cms)
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 Detail

cacheSystemId

public static void cacheSystemId(java.lang.String systemId,
                                 byte[] content)
Adds a sytem 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

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:
CmsXmlContentTypeManager.initialize(CmsObject)

cacheContentDefinition

public void cacheContentDefinition(java.lang.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:
I_CmsEventListener.cmsEvent(org.opencms.main.CmsEvent)

getCachedContentDefinition

public CmsXmlContentDefinition getCachedContentDefinition(java.lang.String systemId)
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 org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
                                             java.lang.String systemId)
Specified by:
resolveEntity in interface org.xml.sax.EntityResolver
See Also:
EntityResolver.resolveEntity(java.lang.String, java.lang.String)