[jboss-svn-commits] JBoss Common SVN: r4248 - jboss-logging/trunk/src/main/java/org/jboss/logging.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Apr 9 14:03:59 EDT 2010
Author: david.lloyd at jboss.com
Date: 2010-04-09 14:03:59 -0400 (Fri, 09 Apr 2010)
New Revision: 4248
Added:
jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java
Modified:
jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java
Log:
Make the API a little more like what I showed Bill
Modified: jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java
===================================================================
--- jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java 2010-04-09 13:38:02 UTC (rev 4247)
+++ jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java 2010-04-09 18:03:59 UTC (rev 4248)
@@ -2264,45 +2264,6 @@
}
}
- public static <T> T getMessageBundle(Class<T> type, Locale locale) {
- String language = locale.getLanguage();
- String country = locale.getCountry();
- String variant = locale.getVariant();
-
- Class<? extends T> bundleClass = null;
- if (variant != null && variant.length() > 0) try {
- bundleClass = Class.forName(join(type.getName(), "$bundle", language, country, variant), true, type.getClassLoader()).asSubclass(type);
- } catch (ClassNotFoundException e) {
- // ignore
- }
- if (bundleClass == null && country != null && country.length() > 0) try {
- bundleClass = Class.forName(join(type.getName(), "$bundle", language, country, null), true, type.getClassLoader()).asSubclass(type);
- } catch (ClassNotFoundException e) {
- // ignore
- }
- if (bundleClass == null && language != null && language.length() > 0) try {
- bundleClass = Class.forName(join(type.getName(), "$bundle", language, null, null), true, type.getClassLoader()).asSubclass(type);
- } catch (ClassNotFoundException e) {
- // ignore
- }
- if (bundleClass == null) try {
- bundleClass = Class.forName(join(type.getName(), "$bundle", null, null, null), true, type.getClassLoader()).asSubclass(type);
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException("Invalid bundle " + type + " (implementation not found)");
- }
- final Field field;
- try {
- field = bundleClass.getField("INSTANCE");
- } catch (NoSuchFieldException e) {
- throw new IllegalArgumentException("Bundle implementation " + bundleClass + " has no instance field");
- }
- try {
- return type.cast(field.get(null));
- } catch (IllegalAccessException e) {
- throw new IllegalArgumentException("Bundle implementation " + bundleClass + " could not be instantiated", e);
- }
- }
-
private static String join(String interfaceName, String a, String b, String c, String d) {
final StringBuilder build = new StringBuilder();
build.append(interfaceName).append('_').append(a);
Added: jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java
===================================================================
--- jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java (rev 0)
+++ jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java 2010-04-09 18:03:59 UTC (rev 4248)
@@ -0,0 +1,113 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.logging;
+
+import java.lang.reflect.Field;
+import java.util.Locale;
+
+/**
+ * A factory class to produce message bundle implementations.
+ *
+ * @author <a href="mailto:david.lloyd at redhat.com">David M. Lloyd</a>
+ */
+public final class Messages {
+
+ private Messages() {
+ }
+
+ /**
+ * Get a message bundle of the given type. Equivalent to <code>{@link #getBundle(Class, java.util.Locale) getBundle}(type, Locale.getDefault())</code>.
+ *
+ * @param type the bundle type class
+ * @param <T> the bundle type
+ * @return the bundle
+ */
+ public static <T> T getBundle(Class<T> type) {
+ return getBundle(type, Locale.getDefault());
+ }
+
+ /**
+ * Get a message bundle of the given type.
+ *
+ * @param type the bundle type class
+ * @param locale the message locale to use
+ * @param <T> the bundle type
+ * @return the bundle
+ */
+ public static <T> T getBundle(Class<T> type, Locale locale) {
+ String language = locale.getLanguage();
+ String country = locale.getCountry();
+ String variant = locale.getVariant();
+
+ Class<? extends T> bundleClass = null;
+ if (variant != null && variant.length() > 0) try {
+ bundleClass = Class.forName(join(type.getName(), "$bundle", language, country, variant), true, type.getClassLoader()).asSubclass(type);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ if (bundleClass == null && country != null && country.length() > 0) try {
+ bundleClass = Class.forName(join(type.getName(), "$bundle", language, country, null), true, type.getClassLoader()).asSubclass(type);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ if (bundleClass == null && language != null && language.length() > 0) try {
+ bundleClass = Class.forName(join(type.getName(), "$bundle", language, null, null), true, type.getClassLoader()).asSubclass(type);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ if (bundleClass == null) try {
+ bundleClass = Class.forName(join(type.getName(), "$bundle", null, null, null), true, type.getClassLoader()).asSubclass(type);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("Invalid bundle " + type + " (implementation not found)");
+ }
+ final Field field;
+ try {
+ field = bundleClass.getField("INSTANCE");
+ } catch (NoSuchFieldException e) {
+ throw new IllegalArgumentException("Bundle implementation " + bundleClass + " has no instance field");
+ }
+ try {
+ return type.cast(field.get(null));
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException("Bundle implementation " + bundleClass + " could not be instantiated", e);
+ }
+ }
+
+ private static String join(String interfaceName, String a, String b, String c, String d) {
+ final StringBuilder build = new StringBuilder();
+ build.append(interfaceName).append('_').append(a);
+ if (b != null && b.length() > 0) {
+ build.append('_');
+ build.append(b);
+ }
+ if (c != null && c.length() > 0) {
+ build.append('_');
+ build.append(c);
+ }
+ if (d != null && d.length() > 0) {
+ build.append('_');
+ build.append(d);
+ }
+ return build.toString();
+ }
+}
More information about the jboss-svn-commits
mailing list