Merged V3.2 to HEAD

18023: RM: groundwork for custom metadata delete
    18071: MT - fix ETHREEOH-3730 (reject invitation shows "Invitation not found" instead of Yes / No options)
    18078: MT - fix ETHREEOH-3892 (it is not possible to create or manage any Tenants once the DOD5015 RM AMP is installed)
    18903: RM Caveats - fix ALF-1894 (improvement for ESC - remove hardcoded "rmc" model/namespace)
    19046: Improve dictionary debug logging (ALF-587)
    19096: Merging PATCHES/V3.2.r to V3.2
        19075: Merging DEV/BELARUS/V3.2-2010_02_24 to PATCHES/V3.2.r
            18881: ALF-587: MT Upgrades to 3.2r fail unable to find Alfresco content types
        19085: ALF-587 - test/build fix (follow on for r18881->r19075)
    19145: Dynamic Models - follow-on for ALF-587 (& ALFCOM-2977) + additional unit tests
    19176: Remove Java 6'ism
    19198: Build/test fix (follow-on to r19145 - do not validate model delete of version nodes)


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19260 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2010-03-12 17:06:36 +00:00
parent e96af8d097
commit 8f0ad2d96f
17 changed files with 1703 additions and 323 deletions

View File

@@ -20,11 +20,13 @@ package org.alfresco.repo.dictionary;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.springframework.extensions.surf.util.I18NUtil;
import org.alfresco.repo.tenant.TenantService;
import org.alfresco.service.cmr.dictionary.DictionaryException;
import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,7 +34,7 @@ import org.apache.commons.logging.LogFactory;
/**
* Bootstrap Dictionary DAO with pre-defined models & message resources (from classpath)
*
* @author David Caruana
* @author David Caruana, janv
*
*/
public class DictionaryBootstrap implements DictionaryListener
@@ -50,7 +52,7 @@ public class DictionaryBootstrap implements DictionaryListener
private TenantService tenantService;
// Logger
private static Log logger = LogFactory.getLog(DictionaryDAO.class);
private static Log logger = LogFactory.getLog(DictionaryBootstrap.class);
/**
@@ -110,8 +112,7 @@ public class DictionaryBootstrap implements DictionaryListener
*/
public void register()
{
dictionaryDAO.destroy(); // deployer - force reload on next get
dictionaryDAO.register(this);
dictionaryDAO.register(this);
}
/*
@@ -120,6 +121,11 @@ public class DictionaryBootstrap implements DictionaryListener
*/
public void onDictionaryInit()
{
long startTime = System.currentTimeMillis();
Collection<QName> modelsBefore = dictionaryDAO.getModels(); // note: on first bootstrap will init empty dictionary
int modelsBeforeCnt = (modelsBefore != null ? modelsBefore.size() : 0);
if ((tenantService == null) || (! tenantService.isTenantUser()))
{
// register models
@@ -132,12 +138,13 @@ public class DictionaryBootstrap implements DictionaryListener
}
try
{
M2Model model = M2Model.createModel(modelStream);
if (logger.isDebugEnabled())
{
logger.debug("Loading model from " + bootstrapModel);
logger.debug("Loading model: "+model.getName()+" (from "+bootstrapModel+")");
}
M2Model model = M2Model.createModel(modelStream);
dictionaryDAO.putModel(model);
}
catch(DictionaryException e)
@@ -145,6 +152,14 @@ public class DictionaryBootstrap implements DictionaryListener
throw new DictionaryException("Could not import bootstrap model " + bootstrapModel, e);
}
}
Collection<QName> modelsAfter = dictionaryDAO.getModels();
int modelsAfterCnt = (modelsAfter != null ? modelsAfter.size() : 0);
if (logger.isDebugEnabled())
{
logger.debug("Model count: before="+modelsBeforeCnt+", load="+models.size()+", after="+modelsAfterCnt+" in "+(System.currentTimeMillis()-startTime)+" msecs");
}
}
}