You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/09 21:42:38 UTC

svn commit: r1630572 - in /tomee/tomee/trunk: maven/maven-util/ maven/maven-util/src/main/java/org/apache/openejb/maven/util/ maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/ tomee/tomee-juli/src/main/java/org/apache/to...

Author: rmannibucau
Date: Thu Oct  9 19:42:38 2014
New Revision: 1630572

URL: http://svn.apache.org/r1630572
Log:
integrating MavenLogStreamFactory with tomee

Added:
    tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java
Modified:
    tomee/tomee/trunk/maven/maven-util/pom.xml
    tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java
    tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java
    tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java

Modified: tomee/tomee/trunk/maven/maven-util/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/maven-util/pom.xml?rev=1630572&r1=1630571&r2=1630572&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/maven-util/pom.xml (original)
+++ tomee/tomee/trunk/maven/maven-util/pom.xml Thu Oct  9 19:42:38 2014
@@ -38,5 +38,11 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>openejb-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-juli</artifactId>
+      <version>${tomee.version}</version>
+      <scope>provided</scope>
+    </dependency>
   </dependencies>
 </project>

Modified: tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java?rev=1630572&r1=1630571&r2=1630572&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java (original)
+++ tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/MavenLogStreamFactory.java Thu Oct  9 19:42:38 2014
@@ -17,12 +17,23 @@
 package org.apache.openejb.maven.util;
 
 import org.apache.maven.plugin.logging.Log;
+import org.apache.openejb.log.logger.AbstractDelegatingLogger;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.LogStream;
 import org.apache.openejb.util.LogStreamFactory;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
+import org.apache.webbeans.logger.WebBeansLoggerFactory;
+
+import java.util.Locale;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
 
 public class MavenLogStreamFactory implements LogStreamFactory {
     private static Log logger;
+    static {
+        System.setProperty(WebBeansLoggerFacade.OPENWEBBEANS_LOGGING_FACTORY_PROP, OWBMavenLogFactory.class.getName());
+    }
 
     @Override
     public LogStream createLogStream(final LogCategory logCategory) {
@@ -33,6 +44,88 @@ public class MavenLogStreamFactory imple
         MavenLogStreamFactory.logger = logger;
     }
 
+    public static Log currentLogger() {
+        return logger;
+    }
+
+    public static class MavenLogger extends AbstractDelegatingLogger {
+        public MavenLogger(final String name, final String resourceBundleName) {
+            super(name, resourceBundleName);
+        }
+
+        @Override
+        public Level getLevel() {
+            if (logger.isDebugEnabled()) {
+                return Level.FINER;
+            } else if (logger.isInfoEnabled()) {
+                return Level.INFO;
+            } else if (logger.isWarnEnabled()) {
+                return Level.WARNING;
+            } else if (logger.isErrorEnabled()) {
+                return Level.SEVERE;
+            }
+            return Level.OFF;
+        }
+
+        @Override
+        public boolean isLoggable(final Level level) {
+            final int i = level.intValue();
+            if (i == Level.OFF.intValue()) {
+                return false;
+            } else if (i >= Level.SEVERE.intValue()) {
+                return logger.isErrorEnabled();
+            } else if (i >= Level.WARNING.intValue()) {
+                return logger.isWarnEnabled();
+            } else if (i >= Level.INFO.intValue()) {
+                return logger.isInfoEnabled();
+            }
+            return logger.isDebugEnabled();
+        }
+
+        @Override
+        protected void internalLogFormatted(final String msg, final LogRecord record) {
+            final Level level = record.getLevel();
+            final Throwable t = record.getThrown();
+            if (Level.FINE.equals(level) || Level.FINER.equals(level) || Level.CONFIG.equals(level)) {
+                if (t == null) {
+                    logger.debug(msg);
+                } else {
+                    logger.debug(msg, t);
+                }
+            } else if (Level.INFO.equals(level)) {
+                if (t == null) {
+                    logger.info(msg);
+                } else {
+                    logger.info(msg, t);
+                }
+            } else if (Level.WARNING.equals(level)) {
+                if (t == null) {
+                    logger.warn(msg);
+                } else {
+                    logger.warn(msg, t);
+                }
+            } else if (Level.ALL.equals(level) || Level.SEVERE.equals(level)) {
+                if (t == null) {
+                    logger.error(msg);
+                } else {
+                    logger.error(msg, t);
+                }
+            }
+        }
+    }
+
+    public static class OWBMavenLogFactory implements WebBeansLoggerFactory {
+        @Override
+        public Logger getLogger(final Class<?> clazz, final Locale desiredLocale) {
+            return new MavenLogger(clazz.getName(), "openwebbeans/Messages");
+        }
+
+        @Override
+        public Logger getLogger(final Class<?> clazz) {
+            return new MavenLogger(clazz.getName(), "openwebbeans/Messages");
+        }
+    }
+
     private static class MavenLogStream implements LogStream {
         private final Log log;
 

Added: tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java?rev=1630572&view=auto
==============================================================================
--- tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java (added)
+++ tomee/tomee/trunk/maven/maven-util/src/main/java/org/apache/openejb/maven/util/TomEEMavenLog.java Thu Oct  9 19:42:38 2014
@@ -0,0 +1,115 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.maven.util;
+
+import org.apache.juli.logging.Log;
+
+public class TomEEMavenLog implements Log {
+    public TomEEMavenLog(final String ignored ) {
+        // no-op but needed by TomEELog (reloadable feature)
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return MavenLogStreamFactory.currentLogger().isDebugEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return MavenLogStreamFactory.currentLogger().isErrorEnabled();
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return MavenLogStreamFactory.currentLogger().isErrorEnabled();
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return MavenLogStreamFactory.currentLogger().isInfoEnabled();
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return MavenLogStreamFactory.currentLogger().isDebugEnabled();
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return MavenLogStreamFactory.currentLogger().isWarnEnabled();
+    }
+
+    @Override
+    public void trace(final Object message) {
+        MavenLogStreamFactory.currentLogger().debug(String.valueOf(message));
+    }
+
+    @Override
+    public void trace(final Object message, final Throwable t) {
+        MavenLogStreamFactory.currentLogger().debug(String.valueOf(message), t);
+    }
+
+    @Override
+    public void debug(final Object message) {
+        MavenLogStreamFactory.currentLogger().debug(String.valueOf(message));
+    }
+
+    @Override
+    public void debug(final Object message, final Throwable t) {
+        MavenLogStreamFactory.currentLogger().debug(String.valueOf(message), t);
+    }
+
+    @Override
+    public void info(final Object message) {
+        MavenLogStreamFactory.currentLogger().info(String.valueOf(message));
+    }
+
+    @Override
+    public void info(final Object message, final Throwable t) {
+        MavenLogStreamFactory.currentLogger().info(String.valueOf(message), t);
+    }
+
+    @Override
+    public void warn(final Object message) {
+        MavenLogStreamFactory.currentLogger().warn(String.valueOf(message));
+    }
+
+    @Override
+    public void warn(final Object message, final Throwable t) {
+        MavenLogStreamFactory.currentLogger().warn(String.valueOf(message), t);
+    }
+
+    @Override
+    public void error(final Object message) {
+        MavenLogStreamFactory.currentLogger().error(String.valueOf(message));
+    }
+
+    @Override
+    public void error(final Object message, final Throwable t) {
+        MavenLogStreamFactory.currentLogger().error(String.valueOf(message), t);
+    }
+
+    @Override
+    public void fatal(final Object message) {
+        MavenLogStreamFactory.currentLogger().error(String.valueOf(message));
+    }
+
+    @Override
+    public void fatal(final Object message, final Throwable t) {
+        MavenLogStreamFactory.currentLogger().error(String.valueOf(message), t);
+    }
+}

Modified: tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java?rev=1630572&r1=1630571&r2=1630572&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java Thu Oct  9 19:42:38 2014
@@ -143,7 +143,7 @@ public class TomEEEmbeddedMojo extends A
         final String logFactory = System.getProperty("openejb.log.factory");
         MavenLogStreamFactory.setLogger(getLog());
         if (mavenLog) {
-            System.setProperty("openejb.log.factory", "org.apache.openejb.maven.util.MavenLogStreamFactory");
+            System.setProperty("openejb.log.factory", MavenLogStreamFactory.class.getName()); // this line also preload the class (<cinit>)
             System.setProperty("openejb.jul.forceReload", "true");
         }
 

Modified: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java?rev=1630572&r1=1630571&r2=1630572&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/ReloadableLog.java Thu Oct  9 19:42:38 2014
@@ -41,6 +41,7 @@ public final class ReloadableLog {
         private static final String LOG4J_IMPL = "org.apache.tomee.loader.log.Log4jLog";
         private static final String LOG4J2_IMPL = "org.apache.tomee.loader.log.Log4j2Log";
         private static final String SLF4J_IMPL = "org.apache.tomee.loader.log.Slf4jLog";
+        private static final String MAVEN_IMPL = "org.apache.openejb.maven.util.TomEEMavenLog";
 
         private volatile String factory;
         private final String name;
@@ -64,6 +65,11 @@ public final class ReloadableLog {
                     if (f != null) {
                         factory = f;
                     }
+
+                    final Log log = delegate.get();
+                    if (factory == null && log != null) {
+                        return log;
+                    }
                 }
                 switch (factory) {
                     case "org.apache.openejb.util.Log4jLogStreamFactory":
@@ -75,6 +81,9 @@ public final class ReloadableLog {
                     case "org.apache.openejb.util.Slf4jLogStreamFactory":
                         delegate.set(newInstance(SLF4J_IMPL));
                         break;
+                    case "org.apache.openejb.maven.util.MavenLogStreamFactory":
+                        delegate.set(newInstance(MAVEN_IMPL));
+                        break;
                     default:
                         delegate.set(new JULLogger(name));
                 }

Modified: tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java?rev=1630572&r1=1630571&r2=1630572&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java (original)
+++ tomee/tomee/trunk/tomee/tomee-juli/src/main/java/org/apache/tomee/jul/formatter/log/TomEELog.java Thu Oct  9 19:42:38 2014
@@ -46,6 +46,7 @@ public class TomEELog implements Log {
                     case "org.apache.openejb.util.Log4j2LogStreamFactory":
                     case "org.apache.openejb.util.Log4jLogStreamFactory":
                     case "org.apache.openejb.util.Slf4jLogStreamFactory":
+                    case "org.apache.openejb.maven.util.MavenLogStreamFactory":
                         defaultLogger = false;
                         break;
                     default: