@Override @Nonnull public ResourceBundle create(@Nonnull String basename) { return create(basename, Locale.getDefault()); }
@Override public <T> T instantiate(@Nonnull Class<? extends T> klass) { Injector injector = this.injector.get(); if (injector != null) { try { return (T) injector.getInstance(klass); } catch (InstanceNotFoundException e) { return newInstanceFromClass(klass); } } else { return newInstanceFromClass(klass); } }
@Nonnull private ResourceBundle toResourceBundle(@Nonnull Document document) { document.getDocumentElement().normalize(); final Map<String, Object> map = new LinkedHashMap<>(); traverseNodes(map, document.getDocumentElement().getChildNodes()); return new AbstractMapResourceBundle() { @Override protected void initialize(@Nonnull Map<String, Object> entries) { entries.putAll(map); } }; }
.toProvider(new ResourceBundleProvider("Mybatis")) .asSingleton();
@Nonnull @Override public Collection<ResourceBundle> load(@Nonnull String name) { requireNonBlank(name, ERROR_FILENAME_BLANK); List<ResourceBundle> bundles = new ArrayList<>(); URL resource = getResourceAsURL(name, CLASS_SUFFIX); if (null != resource) { String url = resource.toString(); String className = name.replace('/', '.'); try { Class klass = loadClass(className); if (ResourceBundle.class.isAssignableFrom(klass)) { bundles.add(resourceBundleReader.read(newInstance(klass))); } } catch (ClassNotFoundException e) { // ignore } catch (Exception e) { LOG.warn("An error occurred while loading resource bundle " + name + " from " + url, e); } } return bundles; }
@Override @Nonnull public ResourceBundle create(@Nonnull String basename, @Nonnull Locale locale) { requireNonBlank(basename, ERROR_BASENAME_BLANK); requireNonNull(locale, ERROR_LOCALE_NULL); initialize(); String[] combinations = { locale.getLanguage() + "_" + locale.getCountry() + "_" + locale.getVariant(), locale.getLanguage() + "_" + locale.getCountry(), locale.getLanguage() }; basename = basename.replace('.', '/'); List<ResourceBundle> bundles = new ArrayList<>(); for (String suffix : combinations) { if (suffix.endsWith("_")) { continue; } bundles.addAll(loadBundlesFor(basename + "_" + suffix)); } bundles.addAll(loadBundlesFor(basename)); if (bundles.isEmpty()) { throw new IllegalArgumentException("There are no ResourceBundle resources matching " + basename); } return new CompositeResourceBundle(bundles); }
@Nonnull @Override public Collection<ResourceBundle> load(@Nonnull String name) { requireNonBlank(name, ERROR_FILENAME_BLANK); List<ResourceBundle> bundles = new ArrayList<>(); List<URL> resources = getResources(name, XML_SUFFIX); if (resources != null) { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = null; try { documentBuilder = documentBuilderFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { throw new IllegalStateException("Can not read " + name + XML_SUFFIX, e); } for (URL resource : resources) { if (null == resource) { continue; } try { Document document = documentBuilder.parse(resource.openStream()); ResourceBundle bundle = resourceBundleReader.read(toResourceBundle(document)); bundles.add(bundle); } catch (Exception e) { // ignore } } } return bundles; }
@Nonnull protected Class<?> loadClass(String className) throws ClassNotFoundException { return getResourceHandler().classloader().loadClass(className); }
@Nonnull @Override public Collection<ResourceBundle> load(@Nonnull String name) { requireNonBlank(name, ERROR_FILENAME_BLANK); List<ResourceBundle> bundles = new ArrayList<>(); List<URL> resources = getResources(name, PROPERTIES_SUFFIX); if (resources != null) { for (URL resource : resources) { if (null == resource) { continue; } try { Properties properties = propertiesReader.load(resource.openStream()); bundles.add(new PropertiesResourceBundle(properties)); } catch (IOException e) { // ignore } } } return bundles; } }
@Nonnull @Override public Collection<ResourceBundle> load(@Nonnull String name) { requireNonBlank(name, ERROR_FILENAME_BLANK); List<ResourceBundle> bundles = new ArrayList<>(); URL resource = getResourceAsURL(name, GROOVY_SUFFIX); if (null != resource) { bundles.add(new GroovyScriptResourceBundle(configReader, resource)); return bundles; } resource = getResourceAsURL(name, CLASS_SUFFIX); if (null != resource) { String className = name.replace('/', '.'); try { Class<?> klass = loadClass(className); if (Script.class.isAssignableFrom(klass)) { bundles.add(new GroovyScriptResourceBundle(configReader, (Class<? extends Script>) klass)); return bundles; } } catch (ClassNotFoundException e) { // ignore } } return super.load(name); } }
.toProvider(new ResourceBundleProvider("Hibernate4")) .asSingleton();
private void traverseNodes(@Nonnull Map<String, Object> accumulator, @Nonnull NodeList nodes) { for (int index = 0; index < nodes.getLength(); index++) { Node item = nodes.item(index); if (item.getNodeType() != Node.ELEMENT_NODE) { continue; } String key = item.getNodeName(); if (item.hasChildNodes()) { if (item.getChildNodes().getLength() == 1) { accumulator.put(key, item.getTextContent().trim()); } else { Map<String, Object> map = new LinkedHashMap<>(); traverseNodes(map, item.getChildNodes()); accumulator.put(key, map); } } else { accumulator.put(key, ""); } } } }
.toProvider(new ResourceBundleProvider("DataSource")) .asSingleton();
.toProvider(new ResourceBundleProvider("Db4o")) .asSingleton();
.toProvider(new ResourceBundleProvider("Hibernate5")) .asSingleton();
.toProvider(new ResourceBundleProvider("Jcouchdb")) .asSingleton();
.toProvider(new ResourceBundleProvider("Config")) .asSingleton();