/** * $Id: EntityPropertiesServiceSpringImpl.java 105077 2012-02-24 22:54:29Z ottenhoff@longsight.com $ * $URL: https://source.sakaiproject.org/svn/entitybroker/trunk/utils/src/java/org/sakaiproject/entitybroker/util/spring/EntityPropertiesServiceSpringImpl.java $ * EntityProviderProperties.java - entity-broker - Jul 18, 2008 6:20:19 PM - azeckoski ************************************************************************** * Copyright (c) 2008, 2009 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.sakaiproject.entitybroker.util.spring; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.MissingResourceException; import org.sakaiproject.entitybroker.providers.EntityPropertiesService; import org.sakaiproject.entitybroker.util.core.AbstractEntityPropertiesService; import org.springframework.context.NoSuchMessageException; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.core.io.DefaultResourceLoader; /** * This service allows us to track all the properties files related to describing the capabilities * of our entities and the entities themselves, it allows lookup of strings as well<br/> * NOTE: Depends on spring and extends the spring based message bundle * * @author Aaron Zeckoski (azeckoski @ gmail.com) */ public class EntityPropertiesServiceSpringImpl extends AbstractEntityPropertiesService implements EntityPropertiesService { protected class SpringMessageBundle extends ReloadableResourceBundleMessageSource implements MessageBundle { public String getPropertyMessage(String key, Object[] args, Locale locale) { String msg; try { msg = getMessage(key, args, locale); } catch (NoSuchMessageException e) { throw new MissingResourceException("Cannot find key ("+key+"): " + e.getMessage(), SpringMessageBundle.class.getName(), key); } return msg; } public List<String> getPropertyKeys(Locale locale) { ArrayList<String> keys = new ArrayList<String>(); PropertiesHolder ph = this.getMergedProperties(locale); for (Object o : ph.getProperties().keySet()) { keys.add(o.toString()); } return keys; } } /* (non-Javadoc) * @see org.sakaiproject.entitybroker.util.core.AbstractEntityPropertiesService#registerLocaleMessages(java.lang.String, java.lang.String, java.util.Locale, java.lang.ClassLoader) */ @Override public List<String> registerLocaleMessages(String prefix, String baseName, Locale locale, ClassLoader classLoader) { SpringMessageBundle messageBundle = new SpringMessageBundle(); messageBundle.setResourceLoader( new DefaultResourceLoader(classLoader) ); messageBundle.setBasename(baseName); messageBundle.setDefaultEncoding("UTF-8"); List<String> keys = messageBundle.getPropertyKeys(locale); registerPrefixMessageBundle(prefix, messageBundle); return keys; } }