Class MessageServiceImpl

  • All Implemented Interfaces:
    MessageService, org.alfresco.repo.tenant.TenantDeployer, org.alfresco.service.cmr.i18n.MessageLookup

    public class MessageServiceImpl
    extends java.lang.Object
    implements MessageService
    Message Service to get localised messages/strings which have been loaded from resource bundles either dynamically deployed in the Repository and/or statically loaded from the Classpath. Also provides methods (delegated to core utility class) to access the Locale of the current thread.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void destroy()  
      java.lang.String getBaseBundleName​(java.lang.String resourceName)  
      java.util.Locale getContentLocale()
      Get the content local for the current thread.
      This will revert to MessageService.getLocale() if no value has been defined.
      java.util.Locale getLocale()
      Get the general local for the current thread, will revert to the default locale if none specified for this thread.
      java.lang.String getMessage​(java.lang.String messageKey)  
      java.lang.String getMessage​(java.lang.String messageKey, java.lang.Object... params)  
      java.lang.String getMessage​(java.lang.String messageKey, java.util.Locale locale)  
      java.lang.String getMessage​(java.lang.String messageKey, java.util.Locale locale, java.lang.Object... params)  
      java.util.Locale getNearestLocale​(java.util.Locale templateLocale, java.util.Set<java.util.Locale> options)
      Searches for the nearest locale from the available options.
      protected org.alfresco.service.cmr.repository.NodeRef getNode​(org.alfresco.service.cmr.repository.NodeRef rootNodeRef, java.lang.String path)  
      java.util.Set<java.lang.String> getRegisteredBundles()
      Get set of registered message resource bundles
      java.util.ResourceBundle getRepoResourceBundle​(org.alfresco.service.cmr.repository.StoreRef storeRef, java.lang.String path, java.util.Locale locale)
      Get message resource bundle from the repository note: also used by Web Client (ResourceBundleWrapper)
      void init()  
      void onDisableTenant()  
      void onEnableTenant()  
      java.util.Locale parseLocale​(java.lang.String localeStr)
      Factory method to create a Locale from a lang_country_variant string.
      void register​(MessageDeployer messageDeployer)
      Register message deployer with message service
      void registerResourceBundle​(java.lang.String resBundlePath)
      Register a resource bundle.
      void reset()
      Resets the message service
      protected org.alfresco.service.cmr.repository.NodeRef resolveQNamePath​(org.alfresco.service.cmr.repository.NodeRef rootNodeRef, java.lang.String[] pathPrefixQNameStrings)  
      void setContentLocale​(java.util.Locale locale)
      Set the content locale for the current thread.
      void setContentService​(ContentService contentService)  
      void setLoadedResourceBundlesCache​(org.alfresco.repo.cache.SimpleCache<java.lang.String,​java.util.Map<java.util.Locale,​java.util.Set<java.lang.String>>> loadedResourceBundlesCache)  
      void setLocale​(java.util.Locale locale)
      Set the locale for the current thread.
      void setMessagesCache​(org.alfresco.repo.cache.SimpleCache<java.lang.String,​java.util.Map<java.util.Locale,​java.util.Map<java.lang.String,​java.lang.String>>> messagesCache)  
      void setNamespaceService​(org.alfresco.service.namespace.NamespaceService namespaceService)  
      void setNodeService​(org.alfresco.service.cmr.repository.NodeService nodeService)  
      void setResourceBundleBaseNamesCache​(org.alfresco.repo.cache.SimpleCache<java.lang.String,​java.util.Set<java.lang.String>> resourceBundleBaseNamesCache)  
      void setTenantService​(org.alfresco.repo.tenant.TenantService tenantService)  
      void setTryLockTimeout​(long tryLockTimeout)  
      void unregisterResourceBundle​(java.lang.String resBundlePath)
      Unregister a resource bundle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • PROPERTIES_FILE_SUFFIX

        public static final java.lang.String PROPERTIES_FILE_SUFFIX
        See Also:
        Constant Field Values
    • Constructor Detail

      • MessageServiceImpl

        public MessageServiceImpl()
    • Method Detail

      • setNamespaceService

        public void setNamespaceService​(org.alfresco.service.namespace.NamespaceService namespaceService)
      • setNodeService

        public void setNodeService​(org.alfresco.service.cmr.repository.NodeService nodeService)
      • setTenantService

        public void setTenantService​(org.alfresco.repo.tenant.TenantService tenantService)
      • setContentService

        public void setContentService​(ContentService contentService)
      • setResourceBundleBaseNamesCache

        public void setResourceBundleBaseNamesCache​(org.alfresco.repo.cache.SimpleCache<java.lang.String,​java.util.Set<java.lang.String>> resourceBundleBaseNamesCache)
      • setLoadedResourceBundlesCache

        public void setLoadedResourceBundlesCache​(org.alfresco.repo.cache.SimpleCache<java.lang.String,​java.util.Map<java.util.Locale,​java.util.Set<java.lang.String>>> loadedResourceBundlesCache)
      • setMessagesCache

        public void setMessagesCache​(org.alfresco.repo.cache.SimpleCache<java.lang.String,​java.util.Map<java.util.Locale,​java.util.Map<java.lang.String,​java.lang.String>>> messagesCache)
      • setTryLockTimeout

        public void setTryLockTimeout​(long tryLockTimeout)
      • setLocale

        public void setLocale​(java.util.Locale locale)
        Description copied from interface: MessageService
        Set the locale for the current thread.
        Specified by:
        setLocale in interface MessageService
        Parameters:
        locale - the locale
      • getLocale

        public java.util.Locale getLocale()
        Description copied from interface: MessageService
        Get the general local for the current thread, will revert to the default locale if none specified for this thread.
        Specified by:
        getLocale in interface MessageService
        Returns:
        the general locale
      • setContentLocale

        public void setContentLocale​(java.util.Locale locale)
        Description copied from interface: MessageService
        Set the content locale for the current thread.
        Specified by:
        setContentLocale in interface MessageService
        Parameters:
        locale - the content locale
      • getNearestLocale

        public java.util.Locale getNearestLocale​(java.util.Locale templateLocale,
                                                 java.util.Set<java.util.Locale> options)
        Description copied from interface: MessageService
        Searches for the nearest locale from the available options. To match any locale, pass in null.
        Specified by:
        getNearestLocale in interface MessageService
        Parameters:
        templateLocale - the template to search for or null to match any locale
        options - the available locales to search from
        Returns:
        Returns the best match from the available options, or the null if all matches fail
      • parseLocale

        public java.util.Locale parseLocale​(java.lang.String localeStr)
        Description copied from interface: MessageService
        Factory method to create a Locale from a lang_country_variant string.
        Specified by:
        parseLocale in interface MessageService
        Parameters:
        localeStr - e.g. fr_FR
        Returns:
        Returns the locale instance, or the default if the string is invalid
      • registerResourceBundle

        public void registerResourceBundle​(java.lang.String resBundlePath)
        Description copied from interface: MessageService
        Register a resource bundle.

        This should be the bundle base path eg, alfresco/messages/errors or, workspace://SpaceStore/app:company_home/app:dictionary/app:labels/cm:errors

        Once registered the messages will be available via getMessage, assuming the bundle resource exists at the given path location.

        Specified by:
        registerResourceBundle in interface MessageService
        Parameters:
        resBundlePath - the bundle base path
      • getMessage

        public java.lang.String getMessage​(java.lang.String messageKey)
        Specified by:
        getMessage in interface org.alfresco.service.cmr.i18n.MessageLookup
      • getMessage

        public java.lang.String getMessage​(java.lang.String messageKey,
                                           java.util.Locale locale)
        Specified by:
        getMessage in interface org.alfresco.service.cmr.i18n.MessageLookup
      • getMessage

        public java.lang.String getMessage​(java.lang.String messageKey,
                                           java.lang.Object... params)
        Specified by:
        getMessage in interface org.alfresco.service.cmr.i18n.MessageLookup
      • getMessage

        public java.lang.String getMessage​(java.lang.String messageKey,
                                           java.util.Locale locale,
                                           java.lang.Object... params)
        Specified by:
        getMessage in interface org.alfresco.service.cmr.i18n.MessageLookup
      • unregisterResourceBundle

        public void unregisterResourceBundle​(java.lang.String resBundlePath)
        Description copied from interface: MessageService
        Unregister a resource bundle

        This should be the bundle base path eg alfresco/messages/errors or workspace://SpaceStore/app:company_home/app:dictionary/app:labels/cm:errors

        Once unregistered the messages will no longer be available via getMessage

        Specified by:
        unregisterResourceBundle in interface MessageService
        Parameters:
        resBundlePath - the bundle base path
      • getRepoResourceBundle

        public java.util.ResourceBundle getRepoResourceBundle​(org.alfresco.service.cmr.repository.StoreRef storeRef,
                                                              java.lang.String path,
                                                              java.util.Locale locale)
                                                       throws java.io.IOException
        Description copied from interface: MessageService
        Get message resource bundle from the repository note: also used by Web Client (ResourceBundleWrapper)
        Specified by:
        getRepoResourceBundle in interface MessageService
        Parameters:
        storeRef - store ref
        path - repository path (XPath)
        locale - locale
        Returns:
        input stream
        Throws:
        java.io.IOException
      • onEnableTenant

        public void onEnableTenant()
        Specified by:
        onEnableTenant in interface org.alfresco.repo.tenant.TenantDeployer
      • onDisableTenant

        public void onDisableTenant()
        Specified by:
        onDisableTenant in interface org.alfresco.repo.tenant.TenantDeployer
      • init

        public void init()
        Specified by:
        init in interface org.alfresco.repo.tenant.TenantDeployer
      • destroy

        public void destroy()
        Specified by:
        destroy in interface org.alfresco.repo.tenant.TenantDeployer
      • getRegisteredBundles

        public java.util.Set<java.lang.String> getRegisteredBundles()
        Description copied from interface: MessageService
        Get set of registered message resource bundles
        Specified by:
        getRegisteredBundles in interface MessageService
        Returns:
        set of registered bundles
      • register

        public void register​(MessageDeployer messageDeployer)
        Description copied from interface: MessageService
        Register message deployer with message service
        Specified by:
        register in interface MessageService
        Parameters:
        messageDeployer - MessageDeployer
      • reset

        public void reset()
        Resets the message service
      • getBaseBundleName

        public java.lang.String getBaseBundleName​(java.lang.String resourceName)
        Specified by:
        getBaseBundleName in interface MessageService
      • getNode

        protected org.alfresco.service.cmr.repository.NodeRef getNode​(org.alfresco.service.cmr.repository.NodeRef rootNodeRef,
                                                                      java.lang.String path)
      • resolveQNamePath

        protected org.alfresco.service.cmr.repository.NodeRef resolveQNamePath​(org.alfresco.service.cmr.repository.NodeRef rootNodeRef,
                                                                               java.lang.String[] pathPrefixQNameStrings)