From 4714ef8d46c1ca9d7612416669b8deae5e721a59 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Thu, 22 May 2008 14:18:45 +0000 Subject: [PATCH] Merged V2.9 to HEAD 9231: Merged V2.2 to V2.9 9207: Merged V2.1 to V2.2 9124: Class behaviour compilation doesn't throw exceptions for missing model class definitions. 9125: Part-fix for ACT-2935: AVMSyncException during index rebuild in AVM 9171: Improvements to I18N freemarker template message() method as supplied by Will Abson 9202: Additional servlet mappings added to example NTLM auth section in web.xml git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9235 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/policy/ClassBehaviourBinding.java | 3 +- .../impl/lucene/AVMLuceneIndexerImpl.java | 16 +++- .../repo/template/I18NMessageMethod.java | 78 +++++++++++-------- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/source/java/org/alfresco/repo/policy/ClassBehaviourBinding.java b/source/java/org/alfresco/repo/policy/ClassBehaviourBinding.java index fd4529b275..038abb4933 100644 --- a/source/java/org/alfresco/repo/policy/ClassBehaviourBinding.java +++ b/source/java/org/alfresco/repo/policy/ClassBehaviourBinding.java @@ -87,7 +87,8 @@ import org.alfresco.service.namespace.QName; ClassDefinition classDefinition = dictionary.getClass(classQName); if (classDefinition == null) { - throw new PolicyException("Class definition " + classQName.toPrefixString() + " does not exist."); + // The class definition doesn't exist so there can be no behaviour bound + return null; } QName parentClassName = classDefinition.getParentName(); diff --git a/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java index 997a4873c3..1c858b72b0 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java @@ -62,6 +62,7 @@ import org.alfresco.service.cmr.avm.AVMException; import org.alfresco.service.cmr.avm.AVMNodeDescriptor; import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.avmsync.AVMDifference; +import org.alfresco.service.cmr.avmsync.AVMSyncException; import org.alfresco.service.cmr.avmsync.AVMSyncService; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.PropertyDefinition; @@ -246,7 +247,20 @@ public class AVMLuceneIndexerImpl extends AbstractLuceneIndexerImpl impl s_logger.debug("Sync index for " + store + " from " + srcVersion + " to " + dstVersion); } String path = store + ":/"; - List changeList = avmSyncService.compare(srcVersion, path, dstVersion, path, null); + List changeList = null; + try + { + changeList = avmSyncService.compare(srcVersion, path, dstVersion, path, null); + } + catch (AVMSyncException e) + { + s_logger.warn("\n" + + "Unable to generate change list for synchronous indexing: \n" + + " Store: " + store + "\n" + + " Start version: " + srcVersion + "\n" + + " End version: " + endVersion); + return; + } for (AVMDifference difference : changeList) { switch (difference.getDifferenceCode()) diff --git a/source/java/org/alfresco/repo/template/I18NMessageMethod.java b/source/java/org/alfresco/repo/template/I18NMessageMethod.java index 649983c08b..bd287d146a 100644 --- a/source/java/org/alfresco/repo/template/I18NMessageMethod.java +++ b/source/java/org/alfresco/repo/template/I18NMessageMethod.java @@ -28,8 +28,10 @@ import java.util.List; import org.alfresco.i18n.I18NUtil; +import freemarker.template.TemplateDateModel; import freemarker.template.TemplateMethodModelEx; import freemarker.template.TemplateModelException; +import freemarker.template.TemplateNumberModel; import freemarker.template.TemplateScalarModel; /** @@ -50,40 +52,50 @@ public class I18NMessageMethod extends BaseTemplateProcessorExtension implements { String result = ""; int argSize = args.size(); - - if (argSize > 0) + + if (argSize != 0) { - String id = ""; - Object arg0 = args.get(0); - if (arg0 instanceof TemplateScalarModel) - { - id = ((TemplateScalarModel)arg0).getAsString(); - } - - if (argSize == 1) - { - // Shortcut for no additional params - result = I18NUtil.getMessage(id); - } - else - { - Object arg; - Object[] params = new Object[argSize - 1]; - for (int i = 0; i < argSize-1; i++) - { - // Note: need to ignore first passed-in arg - arg = args.get(i+1); - if (arg instanceof TemplateScalarModel) - { - params[i] = ((TemplateScalarModel)arg).getAsString(); - } - else - { - params[i] = new String(""); - } - } - result = I18NUtil.getMessage(id, params); - } + String id = ""; + Object arg0 = args.get(0); + if (arg0 instanceof TemplateScalarModel) + { + id = ((TemplateScalarModel)arg0).getAsString(); + } + + if (id != null) + { + if (argSize == 1) + { + // shortcut for no additional msg params + result = I18NUtil.getMessage(id); + } + else + { + Object[] params = new Object[argSize - 1]; + for (int i = 0; i < argSize-1; i++) + { + // ignore first passed-in arg which is the msg id + Object arg = args.get(i + 1); + if (arg instanceof TemplateScalarModel) + { + params[i] = ((TemplateScalarModel)arg).getAsString(); + } + else if (arg instanceof TemplateNumberModel) + { + params[i] = ((TemplateNumberModel)arg).getAsNumber(); + } + else if (arg instanceof TemplateDateModel) + { + params[i] = ((TemplateDateModel)arg).getAsDate(); + } + else + { + params[i] = ""; + } + } + result = I18NUtil.getMessage(id, params); + } + } } return result;