[jboss-svn-commits] JBoss Common SVN: r4685 - jboss-logging/trunk/src/main/java/org/jboss/logging.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 6 23:19:26 EDT 2010


Author: david.lloyd at jboss.com
Date: 2010-07-06 23:19:26 -0400 (Tue, 06 Jul 2010)
New Revision: 4685

Modified:
   jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java
   jboss-logging/trunk/src/main/java/org/jboss/logging/MessageBundleInvocationHandler.java
   jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java
Log:
Some fixes for message bundles

Modified: jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java
===================================================================
--- jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java	2010-07-07 02:25:42 UTC (rev 4684)
+++ jboss-logging/trunk/src/main/java/org/jboss/logging/Logger.java	2010-07-07 03:19:26 UTC (rev 4685)
@@ -25,8 +25,6 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Proxy;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
 import java.util.Locale;
 
 /**
@@ -38,16 +36,6 @@
 
     private static final String FQCN = Logger.class.getName();
 
-    private static final boolean GENERATE_PROXIES;
-
-    static {
-        GENERATE_PROXIES = AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
-            public Boolean run() {
-                return Boolean.valueOf(System.getProperty("jboss.i18n.generate-proxies"));
-            }
-        }).booleanValue();
-    }
-
     /**
      * Levels used by this logging API.
      */
@@ -2318,7 +2306,7 @@
         if (loggerClass == null) try {
             loggerClass = Class.forName(join(type.getName(), "$logger", null, null, null), true, type.getClassLoader()).asSubclass(type);
         } catch (ClassNotFoundException e) {
-            if (GENERATE_PROXIES) {
+            if (Messages.GENERATE_PROXIES) {
                 return type.cast(Proxy.newProxyInstance(type.getClassLoader(), new Class<?>[] { type }, new MessageLoggerInvocationHandler(type, category)));
             }
             throw new IllegalArgumentException("Invalid logger " + type + " (implementation not found)");

Modified: jboss-logging/trunk/src/main/java/org/jboss/logging/MessageBundleInvocationHandler.java
===================================================================
--- jboss-logging/trunk/src/main/java/org/jboss/logging/MessageBundleInvocationHandler.java	2010-07-07 02:25:42 UTC (rev 4684)
+++ jboss-logging/trunk/src/main/java/org/jboss/logging/MessageBundleInvocationHandler.java	2010-07-07 03:19:26 UTC (rev 4685)
@@ -41,6 +41,14 @@
         this.projectCode = projectCode;
     }
 
+    protected MessageBundleInvocationHandler(final Class<?> type) {
+        this(type.getAnnotation(MessageBundle.class));
+    }
+
+    protected MessageBundleInvocationHandler(final MessageBundle messageBundle) {
+        this(messageBundle != null ? messageBundle.projectCode() : null);
+    }
+
     public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
         final Message message = method.getAnnotation(Message.class);
         if (message == null) {
@@ -84,6 +92,7 @@
         }
         final int id = message.id();
         if (id > 0) {
+            // todo - support for inherited msg id
             final String projectCode = this.projectCode;
             if (projectCode != null) {
                 final StringBuilder b = new StringBuilder(32);

Modified: jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java
===================================================================
--- jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java	2010-07-07 02:25:42 UTC (rev 4684)
+++ jboss-logging/trunk/src/main/java/org/jboss/logging/Messages.java	2010-07-07 03:19:26 UTC (rev 4685)
@@ -23,6 +23,9 @@
 package org.jboss.logging;
 
 import java.lang.reflect.Field;
+import java.lang.reflect.Proxy;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.Locale;
 
 /**
@@ -32,6 +35,16 @@
  */
 public final class Messages {
 
+    static final boolean GENERATE_PROXIES;
+
+    static {
+        GENERATE_PROXIES = AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
+            public Boolean run() {
+                return Boolean.valueOf(System.getProperty("jboss.i18n.generate-proxies"));
+            }
+        }).booleanValue();
+    }
+
     private Messages() {
     }
 
@@ -78,6 +91,9 @@
         if (bundleClass == null) try {
             bundleClass = Class.forName(join(type.getName(), "$bundle", null, null, null), true, type.getClassLoader()).asSubclass(type);
         } catch (ClassNotFoundException e) {
+            if (GENERATE_PROXIES) {
+                return type.cast(Proxy.newProxyInstance(type.getClassLoader(), new Class<?>[] { type }, new MessageBundleInvocationHandler(type)));
+            }
             throw new IllegalArgumentException("Invalid bundle " + type + " (implementation not found)");
         }
         final Field field;



More information about the jboss-svn-commits mailing list