neeme 01/11/02 11:36:18 Modified: src/scratchpad/org/apache/avalon/excalibur/i18n BundleMatcher.java Added: src/scratchpad/org/apache/avalon/excalibur/i18n DefaultBundleMatcher.java Log: converted bundlematcher into an interface and provided a default implementation instead Revision Changes Path 1.2 +3 -45 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/i18n/BundleMatcher.java Index: BundleMatcher.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/i18n/BundleMatcher.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BundleMatcher.java 2001/10/30 21:38:56 1.1 +++ BundleMatcher.java 2001/11/02 19:36:17 1.2 @@ -7,64 +7,22 @@ */ package org.apache.avalon.excalibur.i18n; -import java.util.List; -import java.util.LinkedList; - import org.apache.avalon.framework.configuration.Configurable; -import org.apache.avalon.framework.configuration.Configuration; -import org.apache.avalon.framework.configuration.ConfigurationException; /** * Used to map bundle information to string representation (e.g. URI), * to find the relevant bundle. * * @author <a href="mailto:[EMAIL PROTECTED]">Neeme Praks</a> - * @version CVS $Revision: 1.1 $ $Date: 2001/10/30 21:38:56 $ $Author: neeme $ + * @version CVS $Revision: 1.2 $ $Date: 2001/11/02 19:36:17 $ $Author: neeme $ */ -public abstract class BundleMatcher implements Configurable { - - private List matchers = new LinkedList(); - private String type; +public interface BundleMatcher extends Configurable { /** * Get the string form of the bundle, based on bundle info. * * @return the string form - */ - public abstract boolean match(BundleInfo bundleInfo); - - public String getType(BundleInfo bundleInfo) { - if (match(bundleInfo)) { - for (int i = 0; i < matchers.size(); i++) { - String type = ((BundleMatcher) matchers.get(i)).getType(bundleInfo); - if (type != null) return type; - } - return this.type; - } - return null; - } - - /** - * Configure the component. - * - * @param configuration the configuration */ - public void configure(Configuration configuration) throws ConfigurationException { - this.type = configuration.getAttribute("type"); - Configuration[] matcherConfs = configuration.getChildren("matcher"); - for (int i = 0; i < matcherConfs.length; i++) { - BundleMatcher matcher = getBundleMatcherInstance(configuration.getAttribute("class")); - matcher.configure(matcherConfs[i]); - this.matchers.add(matcher); - } - } + public String getType(BundleInfo bundleInfo); - private BundleMatcher getBundleMatcherInstance(String className) throws ConfigurationException { - try { - return (BundleMatcher) Class.forName(className).newInstance(); - } - catch (Exception e) { - throw new ConfigurationException("unable to load bundleMatcher", e); - } - } } 1.1 jakarta-avalon-excalibur/src/scratchpad/org/apache/avalon/excalibur/i18n/DefaultBundleMatcher.java Index: DefaultBundleMatcher.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */ package org.apache.avalon.excalibur.i18n; import java.util.List; import java.util.LinkedList; import java.util.Locale; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; /** * Used to map bundle information to string representation (e.g. URI), * to find the relevant bundle. * * @author <a href="mailto:[EMAIL PROTECTED]">Neeme Praks</a> * @version CVS $Revision: 1.1 $ $Date: 2001/11/02 19:36:17 $ $Author: neeme $ */ public class DefaultBundleMatcher implements BundleMatcher { private List bundleInfos = new LinkedList(); private String type; /** * Get the string form of the bundle, based on bundle info. * * @return the string form */ public String getType(BundleInfo bundleInfo) { for (int i = 0; i < bundleInfos.size(); i++) { if (((BundleInfo) bundleInfos.get(i)).matches(bundleInfo)) return this.type; } return null; } /** * Configure the component. * * @param configuration the configuration */ public void configure(Configuration configuration) throws ConfigurationException { this.type = configuration.getAttribute("type"); Configuration[] bundleInfos = configuration.getChildren("bundle-info"); for (int i = 0; i < bundleInfos.length; i++) { Locale locale = null; try { Configuration localeConf = bundleInfos[i].getChild("locale"); locale = new Locale(localeConf.getAttribute("language"), localeConf.getAttribute("country")); locale = new Locale(localeConf.getAttribute("language"), localeConf.getAttribute("country"), localeConf.getAttribute("variant")); } catch (ConfigurationException e) { // ignore } String bundleName = null; try { bundleName = bundleInfos[i].getAttribute("name"); } catch (ConfigurationException e) { // ignore } String ext = null; try { ext = bundleInfos[i].getAttribute("ext"); } catch (ConfigurationException e) { // ignore } BundleInfo bundleInfo = new BundleInfo(bundleName, locale, ext); this.bundleInfos.add(bundleInfo); } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>