Class ExtensibilityContainer

  • All Implemented Interfaces:
    java.util.EventListener, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware, org.springframework.context.ApplicationListener, org.springframework.extensions.surf.extensibility.HandlesExtensibility, org.springframework.extensions.webscripts.Container, org.springframework.extensions.webscripts.RuntimeContainer

    public class ExtensibilityContainer
    extends RepositoryContainer
    implements org.springframework.extensions.surf.extensibility.HandlesExtensibility

    A simple extensibility Container for processing WebScripts. This extends the RepositoryContainer and implements the HandlesExtensibility interface to provide extensibility capabilities.

    Author:
    David Draper
    • Field Summary

      • Fields inherited from class org.springframework.extensions.webscripts.AbstractRuntimeContainer

        applicationContext
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addExtensibilityDirectives​(java.util.Map<java.lang.String,​java.lang.Object> freeMarkerModel, org.springframework.extensions.surf.extensibility.ExtensibilityModel extModel)
      Adds the <@markup> directive to the container which allows FreeMarker templates to be extended.
      void addExtensionBundleToCache​(java.lang.String webScriptId, org.springframework.extensions.webscripts.WebScriptPropertyResourceBundle extensionBundle)
      Adds a new extended bundle to the cache.
      void closeExtensibilityModel​(org.springframework.extensions.surf.extensibility.ExtensibilityModel model, java.io.Writer out)
      Flushes the ExtensibilityModel provided and sets its parent as the current ExtensibilityModel for the current thread.
      void executeScript​(org.springframework.extensions.webscripts.WebScriptRequest scriptReq, org.springframework.extensions.webscripts.WebScriptResponse scriptRes, org.springframework.extensions.webscripts.Authenticator auth)
      Opens a new ExtensibilityModel, defers execution to the extended RepositoryContainer and then closes the ExtensibilityModel.
      java.util.ResourceBundle getCachedExtendedBundle​(java.lang.String webScriptId)
      Checks the cache to see if it has cached an extended bundle (that is a basic ResourceBundle that has had extension modules applied to it.
      org.springframework.extensions.surf.extensibility.ExtensibilityModel getCurrentExtensibilityModel()
      Returns the ExtensibilityModel for the current thread.
      java.util.List<org.springframework.extensions.surf.extensibility.BasicExtensionModule> getEvaluatedModules()
      Retrieve the list of org.springframework.extensions.surf.types.ExtensionModule instances that have been evaluated as applicable for the current request.
      org.springframework.extensions.webscripts.ScriptConfigModel getExtendedScriptConfigModel​(java.lang.String xmlConfig)
      Creates a new ExtendedScriptConfigModel instance using the local configuration generated for this request.
      org.springframework.extensions.webscripts.TemplateConfigModel getExtendedTemplateConfigModel​(java.lang.String xmlConfig)
      Creates a new TemplateConfigModel instance using the local configuration generated for this request.
      java.util.List<java.lang.String> getExtendingModuleFiles​(java.lang.String pathBeingProcessed)
      Retrieves an files for the evaluated modules that are extending the WebScript files being processed.
      java.lang.String getFileBeingProcessed()
      Returns the path of the file currently being processed in the model by the current thread.
      boolean isExtensibilitySuppressed()  
      org.springframework.extensions.surf.extensibility.ExtensibilityModel openExtensibilityModel()
      Creates a new ExtensibilityModel and sets it on the current thread
      void setExtensibilityModuleHandler​(org.springframework.extensions.surf.extensibility.WebScriptExtensibilityModuleHandler extensibilityModuleHandler)
      Sets the WebScriptExtensibilityModuleHandler for this Container.
      void setFileBeingProcessed​(java.lang.String file)
      Sets the path of the file currently being processed in the model by the current thread.
      void updateExtendingModuleDependencies​(java.lang.String pathBeingProcessed, java.util.Map<java.lang.String,​java.lang.Object> model)
      This method is implemented to perform no action as it is not necessary for a standalone WebScript container to add dependencies for processing.
      • Methods inherited from class org.springframework.extensions.webscripts.AbstractRuntimeContainer

        allowCallbacks, getApplicationContext, getConfigService, getFormatRegistry, getName, getRegistry, getScriptParameterFactoryRegistry, getScriptProcessorRegistry, getSearchPath, getTemplateProcessorRegistry, setAllowCallbacks, setApplicationContext, setConfigService, setFormatRegistry, setName, setRegistry, setScriptObjects, setScriptParameterFactoryRegistry, setScriptProcessorRegistry, setSearchPath, setTemplateObjects, setTemplateProcessorRegistry
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ExtensibilityContainer

        public ExtensibilityContainer()
    • Method Detail

      • isExtensibilitySuppressed

        public boolean isExtensibilitySuppressed()
        Specified by:
        isExtensibilitySuppressed in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • executeScript

        public void executeScript​(org.springframework.extensions.webscripts.WebScriptRequest scriptReq,
                                  org.springframework.extensions.webscripts.WebScriptResponse scriptRes,
                                  org.springframework.extensions.webscripts.Authenticator auth)
                           throws java.io.IOException

        Opens a new ExtensibilityModel, defers execution to the extended RepositoryContainer and then closes the ExtensibilityModel.

        Specified by:
        executeScript in interface org.springframework.extensions.webscripts.RuntimeContainer
        Overrides:
        executeScript in class RepositoryContainer
        Throws:
        java.io.IOException
      • setExtensibilityModuleHandler

        public void setExtensibilityModuleHandler​(org.springframework.extensions.surf.extensibility.WebScriptExtensibilityModuleHandler extensibilityModuleHandler)

        Sets the WebScriptExtensibilityModuleHandler for this Container.

        Parameters:
        extensibilityModuleHandler - WebScriptExtensibilityModuleHandler
      • openExtensibilityModel

        public org.springframework.extensions.surf.extensibility.ExtensibilityModel openExtensibilityModel()

        Creates a new ExtensibilityModel and sets it on the current thread

        Specified by:
        openExtensibilityModel in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • closeExtensibilityModel

        public void closeExtensibilityModel​(org.springframework.extensions.surf.extensibility.ExtensibilityModel model,
                                            java.io.Writer out)

        Flushes the ExtensibilityModel provided and sets its parent as the current ExtensibilityModel for the current thread.

        Specified by:
        closeExtensibilityModel in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • getCurrentExtensibilityModel

        public org.springframework.extensions.surf.extensibility.ExtensibilityModel getCurrentExtensibilityModel()

        Returns the ExtensibilityModel for the current thread.

        Specified by:
        getCurrentExtensibilityModel in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • updateExtendingModuleDependencies

        public void updateExtendingModuleDependencies​(java.lang.String pathBeingProcessed,
                                                      java.util.Map<java.lang.String,​java.lang.Object> model)

        This method is implemented to perform no action as it is not necessary for a standalone WebScript container to add dependencies for processing.

        Specified by:
        updateExtendingModuleDependencies in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • getCachedExtendedBundle

        public java.util.ResourceBundle getCachedExtendedBundle​(java.lang.String webScriptId)

        Checks the cache to see if it has cached an extended bundle (that is a basic ResourceBundle that has had extension modules applied to it. Extended bundles can only be safely cached once per request as the modules applied can vary for each request.

        Specified by:
        getCachedExtendedBundle in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
        Parameters:
        webScriptId - The id of the WebScript to retrieve the extended bundle for.
        Returns:
        A cached bundle or null if the bundle has not previously been cached.
      • addExtensionBundleToCache

        public void addExtensionBundleToCache​(java.lang.String webScriptId,
                                              org.springframework.extensions.webscripts.WebScriptPropertyResourceBundle extensionBundle)

        Adds a new extended bundle to the cache. An extended bundle is a WebScript ResourceBundle that has had ResourceBundle instances merged into it from extension modules that have been applied. These can only be cached for the lifetime of the request as different modules may be applied to the same WebScript for different requests.

        Specified by:
        addExtensionBundleToCache in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
        Parameters:
        webScriptId - The id of the WebScript to cache the extended bundle against.
        extensionBundle - The extended bundle to cache.
      • getFileBeingProcessed

        public java.lang.String getFileBeingProcessed()

        Returns the path of the file currently being processed in the model by the current thread. This information is primarily provided for the purposes of generating debug information.

        Specified by:
        getFileBeingProcessed in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
        Returns:
        The path of the file currently being processed.
      • setFileBeingProcessed

        public void setFileBeingProcessed​(java.lang.String file)

        Sets the path of the file currently being processed in the model by the current thread. This information should be collected to assist with providing debug information.

        Specified by:
        setFileBeingProcessed in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
        Parameters:
        file - The path of the file currently being processed.
      • getExtendingModuleFiles

        public java.util.List<java.lang.String> getExtendingModuleFiles​(java.lang.String pathBeingProcessed)

        Retrieves an files for the evaluated modules that are extending the WebScript files being processed.

        Specified by:
        getExtendingModuleFiles in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • getEvaluatedModules

        public java.util.List<org.springframework.extensions.surf.extensibility.BasicExtensionModule> getEvaluatedModules()

        Retrieve the list of org.springframework.extensions.surf.types.ExtensionModule instances that have been evaluated as applicable for the current request. If this list has not yet been populated then use the org.springframework.extensions.surf.extensibility.ExtensibilityModuleHandler configured in the Spring application context to evaluate them.

        Returns:
        A list of org.springframework.extensions.surf.types.ExtensionModule instances that are applicable to the current request.
      • getExtendedScriptConfigModel

        public org.springframework.extensions.webscripts.ScriptConfigModel getExtendedScriptConfigModel​(java.lang.String xmlConfig)

        Creates a new ExtendedScriptConfigModel instance using the local configuration generated for this request. If configuration for the request will be generated if it does not yet exist. It is likely that this method will be called multiple times within the context of a single request and although the configuration containers will always be the same a new ExtendedScriptConfigModel instance will always be created as the the supplied xmlConfig string could be different for each call (because each WebScript invoked in the request will supply different configuration.

        Specified by:
        getExtendedScriptConfigModel in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • getExtendedTemplateConfigModel

        public org.springframework.extensions.webscripts.TemplateConfigModel getExtendedTemplateConfigModel​(java.lang.String xmlConfig)

        Creates a new TemplateConfigModel instance using the local configuration generated for this request. If configuration for the request will be generated if it does not yet exist. It is likely that this method will be called multiple times within the context of a single request and although the configuration containers will always be the same a new TemplateConfigModel instance will always be created as the the supplied xmlConfig string could be different for each call (because each WebScript invoked in the request will supply different configuration.

        Specified by:
        getExtendedTemplateConfigModel in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility
      • addExtensibilityDirectives

        public void addExtensibilityDirectives​(java.util.Map<java.lang.String,​java.lang.Object> freeMarkerModel,
                                               org.springframework.extensions.surf.extensibility.ExtensibilityModel extModel)

        Adds the <@markup> directive to the container which allows FreeMarker templates to be extended.

        Specified by:
        addExtensibilityDirectives in interface org.springframework.extensions.surf.extensibility.HandlesExtensibility