Index: lutinutil/src/java/org/codelutin/i18n/bundle/I18nBundleManager.java diff -u lutinutil/src/java/org/codelutin/i18n/bundle/I18nBundleManager.java:1.1 lutinutil/src/java/org/codelutin/i18n/bundle/I18nBundleManager.java:1.2 --- lutinutil/src/java/org/codelutin/i18n/bundle/I18nBundleManager.java:1.1 Mon Mar 3 13:14:40 2008 +++ lutinutil/src/java/org/codelutin/i18n/bundle/I18nBundleManager.java Thu Mar 20 01:29:42 2008 @@ -45,7 +45,7 @@ private static final Log log = LogFactory.getLog(LanguageManager.class); /** pattern to find all i18n bundles in classloader class path */ - static final String SEARCH_BUNDLE_PATTERN = ".*18n/.+\\.properties"; + public static final String SEARCH_BUNDLE_PATTERN = ".*18n/.+\\.properties"; /** shared instance */ protected static I18nBundleManager instance; @@ -60,7 +60,7 @@ return instance; } - public static void init() { + public static void init(URL... extraUrl) { I18nBundleManager manager = getInstance(); if (manager.isInit()) { // already init @@ -68,10 +68,10 @@ } // get all bundles urls - URL[] urls = manager.getURLs(Language.getLoader()); + URL[] urls = manager.getURLs(Language.getLoader(), extraUrl); long t0 = System.nanoTime(); - + // detect bundles List bundles = manager.detectBundles(urls); @@ -84,7 +84,7 @@ // save bundles in cache manager.cache = Collections.unmodifiableList(bundles); - log.info(bundles.size() + " bundle(s) found, ["+manager.getBundleEntries().length+" file(s)] in "+ StringUtil.convertTime(System.nanoTime()-t0)); + log.info(bundles.size() + " bundle(s) found, [" + manager.getBundleEntries().length + " file(s)] in " + StringUtil.convertTime(System.nanoTime() - t0)); } public I18nBundle[] getBundles() { @@ -133,17 +133,24 @@ for (I18nBundleEntry entry : entries) { entry.load(language, resource); } - log.info(language + ", nbEntries: " + entries.length + ", nbSentences: " + language.size()+" in "+StringUtil.convertTime(System.nanoTime()-t0)); + log.info(language + ", nbEntries: " + entries.length + ", nbSentences: " + language.size() + " in " + StringUtil.convertTime(System.nanoTime() - t0)); + } + + public void reset() { + if (cache != null) { + cache = null; + } } /** * Recherche la liste des url de bundles i18n correspondant à la langue * donné. * - * @param loader le classe loader où trouver les bundles + * @param loader le classe loader où trouver les bundles + * @param extraUrl extra urls to add * @return la liste des urls de bundle i18n pour la langue donné */ - protected URL[] getURLs(URLClassLoader loader) { + protected URL[] getURLs(URLClassLoader loader, URL... extraUrl) { List urls = new ArrayList(); try { @@ -155,6 +162,7 @@ } else { urls.addAll(Resource.getURLs(SEARCH_BUNDLE_PATTERN, loader)); } + urls.addAll(Arrays.asList(extraUrl)); } catch (Exception eee) { log.warn("Unable to find urls for loader : " + loader); return new URL[0];