Class ExtensibilityContainer
- All Implemented Interfaces:
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
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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddExtensibilityDirectives(Map<String, Object> freeMarkerModel, org.springframework.extensions.surf.extensibility.ExtensibilityModel extModel) Adds the <@markup> directive to the container which allows FreeMarker templates to be extended.voidaddExtensionBundleToCache(String webScriptId, org.springframework.extensions.webscripts.WebScriptPropertyResourceBundle extensionBundle) Adds a new extended bundle to the cache.voidcloseExtensibilityModel(org.springframework.extensions.surf.extensibility.ExtensibilityModel model, Writer out) Flushes theExtensibilityModelprovided and sets its parent as the currentExtensibilityModelfor the current thread.voidexecuteScript(org.springframework.extensions.webscripts.WebScriptRequest scriptReq, org.springframework.extensions.webscripts.WebScriptResponse scriptRes, org.springframework.extensions.webscripts.Authenticator auth) Opens a newExtensibilityModel, defers execution to the extendedRepositoryContainerand then closes theExtensibilityModel.getCachedExtendedBundle(String webScriptId) Checks the cache to see if it has cached an extended bundle (that is a basicResourceBundlethat has had extension modules applied to it.org.springframework.extensions.surf.extensibility.ExtensibilityModelReturns theExtensibilityModelfor the current thread.List<org.springframework.extensions.surf.extensibility.BasicExtensionModule>Retrieve the list oforg.springframework.extensions.surf.types.ExtensionModuleinstances that have been evaluated as applicable for the current request.org.springframework.extensions.webscripts.ScriptConfigModelgetExtendedScriptConfigModel(String xmlConfig) Creates a newExtendedScriptConfigModelinstance using the local configuration generated for this request.org.springframework.extensions.webscripts.TemplateConfigModelgetExtendedTemplateConfigModel(String xmlConfig) Creates a newTemplateConfigModelinstance using the local configuration generated for this request.getExtendingModuleFiles(String pathBeingProcessed) Retrieves an files for the evaluated modules that are extending the WebScript files being processed.Returns the path of the file currently being processed in the model by the current thread.booleanorg.springframework.extensions.surf.extensibility.ExtensibilityModelCreates a newExtensibilityModeland sets it on the current threadvoidsetExtensibilityModuleHandler(org.springframework.extensions.surf.extensibility.WebScriptExtensibilityModuleHandler extensibilityModuleHandler) Sets theWebScriptExtensibilityModuleHandlerfor thisContainer.voidsetFileBeingProcessed(String file) Sets the path of the file currently being processed in the model by the current thread.voidupdateExtendingModuleDependencies(String pathBeingProcessed, Map<String, 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.alfresco.repo.web.scripts.RepositoryContainer
authenticate, executeScriptInternal, getDescription, getNotPublicExceptions, getPublicExceptions, getRequiredAuthentication, getScriptParameters, getTemplateParameters, isAdminOrSystemUser, onApplicationEvent, reset, setAuthorityService, setDescriptorService, setEncryptTempFiles, setFallbackTransactionHelper, setMaxContentSize, setMemoryThreshold, setNotPublicExceptions, setPreserveHeadersPattern, setPublicExceptions, setRepository, setRepositoryImageResolver, setTempDirectoryName, setTransactionService, setup, transactionedExecuteMethods 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, setTemplateProcessorRegistryMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationListener
supportsAsyncExecution
-
Constructor Details
-
ExtensibilityContainer
public ExtensibilityContainer()
-
-
Method Details
-
isExtensibilitySuppressed
public boolean isExtensibilitySuppressed()- Specified by:
isExtensibilitySuppressedin interfaceorg.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 IOException Opens a new
ExtensibilityModel, defers execution to the extendedRepositoryContainerand then closes theExtensibilityModel.- Specified by:
executeScriptin interfaceorg.springframework.extensions.webscripts.RuntimeContainer- Overrides:
executeScriptin classRepositoryContainer- Throws:
IOException
-
setExtensibilityModuleHandler
public void setExtensibilityModuleHandler(org.springframework.extensions.surf.extensibility.WebScriptExtensibilityModuleHandler extensibilityModuleHandler) Sets the
WebScriptExtensibilityModuleHandlerfor thisContainer.- Parameters:
extensibilityModuleHandler- WebScriptExtensibilityModuleHandler
-
openExtensibilityModel
public org.springframework.extensions.surf.extensibility.ExtensibilityModel openExtensibilityModel()Creates a new
ExtensibilityModeland sets it on the current thread- Specified by:
openExtensibilityModelin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
closeExtensibilityModel
public void closeExtensibilityModel(org.springframework.extensions.surf.extensibility.ExtensibilityModel model, Writer out) Flushes the
ExtensibilityModelprovided and sets its parent as the currentExtensibilityModelfor the current thread.- Specified by:
closeExtensibilityModelin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
getCurrentExtensibilityModel
public org.springframework.extensions.surf.extensibility.ExtensibilityModel getCurrentExtensibilityModel()Returns the
ExtensibilityModelfor the current thread.- Specified by:
getCurrentExtensibilityModelin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
updateExtendingModuleDependencies
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:
updateExtendingModuleDependenciesin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
getCachedExtendedBundle
Checks the cache to see if it has cached an extended bundle (that is a basic
ResourceBundlethat 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:
getCachedExtendedBundlein interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility- Parameters:
webScriptId- The id of the WebScript to retrieve the extended bundle for.- Returns:
- A cached bundle or
nullif the bundle has not previously been cached.
-
addExtensionBundleToCache
public void addExtensionBundleToCache(String webScriptId, org.springframework.extensions.webscripts.WebScriptPropertyResourceBundle extensionBundle) Adds a new extended bundle to the cache. An extended bundle is a WebScript
ResourceBundlethat has hadResourceBundleinstances 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:
addExtensionBundleToCachein interfaceorg.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
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:
getFileBeingProcessedin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility- Returns:
- The path of the file currently being processed.
-
setFileBeingProcessed
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:
setFileBeingProcessedin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility- Parameters:
file- The path of the file currently being processed.
-
getExtendingModuleFiles
Retrieves an files for the evaluated modules that are extending the WebScript files being processed.
- Specified by:
getExtendingModuleFilesin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
getEvaluatedModules
public List<org.springframework.extensions.surf.extensibility.BasicExtensionModule> getEvaluatedModules()Retrieve the list of
org.springframework.extensions.surf.types.ExtensionModuleinstances that have been evaluated as applicable for the current request. If this list has not yet been populated then use theorg.springframework.extensions.surf.extensibility.ExtensibilityModuleHandlerconfigured in the Spring application context to evaluate them.- Returns:
- A list of
org.springframework.extensions.surf.types.ExtensionModuleinstances that are applicable to the current request.
-
getExtendedScriptConfigModel
public org.springframework.extensions.webscripts.ScriptConfigModel getExtendedScriptConfigModel(String xmlConfig) Creates a new
ExtendedScriptConfigModelinstance 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 newExtendedScriptConfigModelinstance will always be created as the the suppliedxmlConfigstring could be different for each call (because each WebScript invoked in the request will supply different configuration.- Specified by:
getExtendedScriptConfigModelin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
getExtendedTemplateConfigModel
public org.springframework.extensions.webscripts.TemplateConfigModel getExtendedTemplateConfigModel(String xmlConfig) Creates a new
TemplateConfigModelinstance 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 newTemplateConfigModelinstance will always be created as the the suppliedxmlConfigstring could be different for each call (because each WebScript invoked in the request will supply different configuration.- Specified by:
getExtendedTemplateConfigModelin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-
addExtensibilityDirectives
public void addExtensibilityDirectives(Map<String, 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:
addExtensibilityDirectivesin interfaceorg.springframework.extensions.surf.extensibility.HandlesExtensibility
-