CMIS Dictionary Refactor

- follows pattern of Alfresco Dictionary
- simplified and much reduced DictionaryService interface
- model now compiled and cached (no more lots of small continuous object creations)
- walk model via simple getters
- validated (no dangling references)
- fix up property inheritance
- fix up sub-types for all types
- implements strict mode only for now (i.e. doesn't go outside of CMIS doc, folder, rel and policy)
- abstract helper for building other CMIS dictionaries (e.g. mapping all types in Alfresco)

Alfresco Dictionary:
- add event for initialized or re-initialized

Fix up usage in CMIS REST, Web Services and query. Tests pass.

REST support for custom sub-types and properties now reliable as constrained by validated CMIS model.

TODO:
- hook property value accessors into CMIS Dictionary

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13768 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2009-03-27 23:13:29 +00:00
parent df3e143e1c
commit 8fcebdc7cf
51 changed files with 2937 additions and 2095 deletions

View File

@@ -56,7 +56,7 @@ import org.springframework.context.ApplicationEvent;
*
* @author Roy Wetherall, JanV
*/
public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean implements TenantDeployer, DictionaryDeployer, MessageDeployer
public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean implements TenantDeployer, DictionaryListener, MessageDeployer
{
// Logging support
private static Log logger = LogFactory
@@ -204,7 +204,7 @@ public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean impleme
{
public Object execute() throws Exception
{
initDictionary();
onDictionaryInit();
initMessages();
return (Object)null;
@@ -217,7 +217,11 @@ public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean impleme
// NOOP - will be destroyed directly via DictionaryComponent
}
public void initDictionary()
/*
* (non-Javadoc)
* @see org.alfresco.repo.dictionary.DictionaryListener#onInit()
*/
public void onDictionaryInit()
{
if (this.repositoryModelsLocations != null)
{
@@ -281,6 +285,14 @@ public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean impleme
}
}
/*
* (non-Javadoc)
* @see org.alfresco.repo.dictionary.DictionaryListener#afterInit()
*/
public void afterDictionaryInit()
{
}
public void initMessages()
{
if (this.repositoryMessagesLocations != null)