Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -rd1bddeacdf3d146c0ac5927683151a62b1daa0b6 -r832b7388158e6588d5791e09d202774d8434de86 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision d1bddeacdf3d146c0ac5927683151a62b1daa0b6) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 832b7388158e6588d5791e09d202774d8434de86) @@ -139,6 +139,16 @@ + + + + + + + + + + Index: lams_common/src/java/org/lamsfoundation/lams/util/ILoadedMessageSourceService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/util/ILoadedMessageSourceService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/util/ILoadedMessageSourceService.java (revision 832b7388158e6588d5791e09d202774d8434de86) @@ -0,0 +1,15 @@ +package org.lamsfoundation.lams.util; + +import org.springframework.context.MessageSource; + + +public interface ILoadedMessageSourceService { + + /** Get the MessageSource for the specified message file. + * + * @param messageFilename Mandatory + * @return Null if messageFilename is null, otherwise a MessageSource (even if the bundle cannot be found) + */ + public abstract MessageSource getMessageService(String messageFilename); + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/util/LoadedMessageSourceService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/util/LoadedMessageSourceService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/util/LoadedMessageSourceService.java (revision 832b7388158e6588d5791e09d202774d8434de86) @@ -0,0 +1,45 @@ +package org.lamsfoundation.lams.util; + + +import java.util.HashMap; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.BeanFactoryAware; +import org.springframework.context.MessageSource; +import org.springframework.context.support.ResourceBundleMessageSource; + +/** + * Access a message service related to a programatically loaded message file. + * Authoring uses this to access the message files for tools and activities. + */ +public class LoadedMessageSourceService implements ILoadedMessageSourceService, BeanFactoryAware { + + private static final String LOADED_MESSAGE_SOURCE_BEAN = "loadedMessageSource"; + private HashMap messageServices = new HashMap(); + private BeanFactory beanFactory = null; + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.authoring.service.ILoadMessageService#getMessageService(java.lang.String) + */ + public MessageSource getMessageService(String messageFilename) { + if ( messageFilename != null ) { + MessageSource ms = messageServices.get(messageFilename); + if ( ms == null ) { + ResourceBundleMessageSource rbms = (ResourceBundleMessageSource) beanFactory.getBean(LOADED_MESSAGE_SOURCE_BEAN); + rbms.setBasename(messageFilename); + messageServices.put(messageFilename,rbms); + ms = rbms; + } + return ms; + } else { + return null; + } + } + + /* **** Method for BeanFactoryAware interface *****************/ + public void setBeanFactory(BeanFactory beanFactory) throws BeansException { + this.beanFactory = beanFactory; + } + +}