From 92919aa931575ea1e2debedb5b32410533fff5bd Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Tue, 22 Jan 2008 12:49:50 +0000 Subject: [PATCH] Dynamic Models - minor, validate message resource bundle exists in repo git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8055 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/admin/RepoAdminServiceImpl.java | 25 +++++++++++------ .../DictionaryRepositoryBootstrap.java | 27 +++++-------------- .../alfresco/repo/i18n/MessageService.java | 3 +++ .../repo/i18n/MessageServiceImpl.java | 24 +++++++++++++++++ 4 files changed, 50 insertions(+), 29 deletions(-) diff --git a/source/java/org/alfresco/repo/admin/RepoAdminServiceImpl.java b/source/java/org/alfresco/repo/admin/RepoAdminServiceImpl.java index c6ff34f570..fef9977a42 100755 --- a/source/java/org/alfresco/repo/admin/RepoAdminServiceImpl.java +++ b/source/java/org/alfresco/repo/admin/RepoAdminServiceImpl.java @@ -729,18 +729,27 @@ public class RepoAdminServiceImpl implements RepoAdminService List nodeRefs = searchService.selectNodes(rootNode, repoMessagesLocation.getPath()+CRITERIA_ALL, null, namespaceService, false); + boolean found = false; for (NodeRef nodeRef : nodeRefs) { - String customLabelName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); + String resourceName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); - if (customLabelName.startsWith(bundleBaseName)) + if (bundleBaseName.equals(messageService.getBaseBundleName(resourceName))) { // remove message resource file from the repository - nodeService.deleteNode(nodeRef); + nodeService.deleteNode(nodeRef); + found = true; // continue to undeploy any others } } - - logger.info("Message resources undeployed: " + bundleBaseName); + + if (found) + { + logger.info("Message resources undeployed: " + bundleBaseName); + } + else + { + throw new AlfrescoRuntimeException("Could not find message resource bundle " + repoBundlePath); + } } catch (Throwable t) { @@ -771,9 +780,9 @@ public class RepoAdminServiceImpl implements RepoAdminService boolean found = false; for (NodeRef nodeRef : nodeRefs) { - String customLabelName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); + String resourceName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); - if (customLabelName.startsWith(bundleBaseName)) + if (bundleBaseName.equals(messageService.getBaseBundleName(resourceName))) { found = true; break; @@ -807,7 +816,7 @@ public class RepoAdminServiceImpl implements RepoAdminService if (bundleBaseName.indexOf("_") != -1) { - // currently limited due to parser in DictionaryRepositoryBootstrap + // currently limited due to parser in MessageServiceImpl.getBaseBundleName throw new AlfrescoRuntimeException("Message deployment failed - bundle base name '" + bundleBaseName + "' should not contain '_' (underscore)"); } diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java b/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java index 083f36f882..cffe8381d6 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java @@ -323,29 +323,14 @@ public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean impleme for (NodeRef messageResource : nodeRefs) { - String name = (String) nodeService.getProperty( + String resourceName = (String) nodeService.getProperty( messageResource, ContentModel.PROP_NAME); - - // convert resource file name to a resource bundle basename - // e.g. either 'workflow_fr_FR.properties' or 'workflow.properties' should be converted to 'workflow' - // note: this assumes that the baseName itself does not contain underscore ! - int idx = name.indexOf("_"); - if (idx > 0) + + String bundleBaseName = messageService.getBaseBundleName(resourceName); + + if (!resourceBundleBaseNames.contains(bundleBaseName)) { - name = name.substring(0, idx - 1); - } - else - { - int idx1 = name.indexOf("."); - if (idx1 > 0) - { - name = name.substring(0, idx1); - } - } - - if (!resourceBundleBaseNames.contains(name)) - { - resourceBundleBaseNames.add(name); + resourceBundleBaseNames.add(bundleBaseName); } } diff --git a/source/java/org/alfresco/repo/i18n/MessageService.java b/source/java/org/alfresco/repo/i18n/MessageService.java index 5776f082c0..9a6d65fb42 100644 --- a/source/java/org/alfresco/repo/i18n/MessageService.java +++ b/source/java/org/alfresco/repo/i18n/MessageService.java @@ -153,4 +153,7 @@ public interface MessageService extends TenantDeployer * @param messageDeployer */ public void register(MessageDeployer messageDeployer); + + public String getBaseBundleName(String resourceName); + } diff --git a/source/java/org/alfresco/repo/i18n/MessageServiceImpl.java b/source/java/org/alfresco/repo/i18n/MessageServiceImpl.java index 3f39450ccf..2c0396c611 100644 --- a/source/java/org/alfresco/repo/i18n/MessageServiceImpl.java +++ b/source/java/org/alfresco/repo/i18n/MessageServiceImpl.java @@ -925,4 +925,28 @@ public class MessageServiceImpl implements MessageService } } } + + public String getBaseBundleName(String resourceName) + { + // convert resource file name to a resource bundle basename + // e.g. either 'workflow_fr_FR.properties' or 'workflow.properties' should be converted to 'workflow' + // note: this assumes that the baseName itself does not contain underscore ! + + String bundleBaseName = resourceName; + int idx = resourceName.indexOf("_"); + if (idx > 0) + { + bundleBaseName = resourceName.substring(0, idx - 1); + } + else + { + int idx1 = resourceName.indexOf("."); + if (idx1 > 0) + { + bundleBaseName = resourceName.substring(0, idx1); + } + } + + return bundleBaseName; + } }