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 2013/02/06 11:19:10 UTC

svn commit: r1442888 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging: ./ Log4J4AppOpenEJB4ContainerLog.java OpenEJBCommonsLog.java

Author: rmannibucau
Date: Wed Feb  6 10:19:10 2013
New Revision: 1442888

URL: http://svn.apache.org/viewvc?rev=1442888&view=rev
Log:
TOMEE-758 adding Log4J4AppOpenEJB4ContainerLog

Added:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/Log4J4AppOpenEJB4ContainerLog.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/OpenEJBCommonsLog.java

Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/Log4J4AppOpenEJB4ContainerLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/Log4J4AppOpenEJB4ContainerLog.java?rev=1442888&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/Log4J4AppOpenEJB4ContainerLog.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/Log4J4AppOpenEJB4ContainerLog.java Wed Feb  6 10:19:10 2013
@@ -0,0 +1,139 @@
+/*
+ * 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.log.commonslogging;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.Jdk14Logger;
+import org.apache.openejb.util.classloader.URLClassLoaderFirst;
+import org.apache.openejb.util.reflection.Reflections;
+
+import java.io.Serializable;
+
+// totally done by reflection to avoid conflict between Log from container and app classloaders
+public class Log4J4AppOpenEJB4ContainerLog implements Log, Serializable {
+    private static final Class<?>[] NO_PARAM = new Class<?>[0];
+    private static final Class<?>[] OBJECT_PARAM = new Class<?>[] { Object.class };
+    private static final Class<?>[] OBJECT_THROWABLE_PARAM = new Class<?>[] { Object.class, Throwable.class };
+    private static final Object[] NO_ARGS = new Object[0];
+
+    private Object delegate;
+
+    public Log4J4AppOpenEJB4ContainerLog(final String category) {
+        if (URLClassLoaderFirst.shouldSkip(category)) {
+            delegate = new OpenEJBCommonsLog(category);
+        } else {
+            final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+            try { // need to be done with TCCL
+                delegate = contextClassLoader
+                        .loadClass("org.apache.commons.logging.impl.Log4JLogger")
+                        .getConstructor(String.class).newInstance(category);
+            } catch (final Exception ex) {
+                delegate = new Jdk14Logger(category);
+            }
+        }
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return (Boolean) Reflections.invokeByReflection(delegate, "isDebugEnabled", NO_PARAM, NO_ARGS);
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return (Boolean) Reflections.invokeByReflection(delegate, "isErrorEnabled", NO_PARAM, NO_ARGS);
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return (Boolean) Reflections.invokeByReflection(delegate, "isFatalEnabled", NO_PARAM, NO_ARGS);
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return (Boolean) Reflections.invokeByReflection(delegate, "isInfoEnabled", NO_PARAM, NO_ARGS);
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return (Boolean) Reflections.invokeByReflection(delegate, "isTraceEnabled", NO_PARAM, NO_ARGS);
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return (Boolean) Reflections.invokeByReflection(delegate, "isWarnEnabled", NO_PARAM, NO_ARGS);
+    }
+
+    @Override
+    public void trace(final Object message) {
+        Reflections.invokeByReflection(delegate, "trace", OBJECT_PARAM, new Object[]{ message });
+    }
+
+    @Override
+    public void trace(final Object message, final Throwable t) {
+        Reflections.invokeByReflection(delegate, "trace", OBJECT_THROWABLE_PARAM, new Object[]{message, t});
+    }
+
+    @Override
+    public void debug(final Object message) {
+        Reflections.invokeByReflection(delegate, "debug", OBJECT_PARAM, new Object[]{message});
+    }
+
+    @Override
+    public void debug(final Object message, final Throwable t) {
+        Reflections.invokeByReflection(delegate, "debug", OBJECT_THROWABLE_PARAM, new Object[]{message, t});
+    }
+
+    @Override
+    public void info(final Object message) {
+        Reflections.invokeByReflection(delegate, "info", OBJECT_PARAM, new Object[]{message});
+    }
+
+    @Override
+    public void info(final Object message, final Throwable t) {
+        Reflections.invokeByReflection(delegate, "info", OBJECT_THROWABLE_PARAM, new Object[]{message, t});
+    }
+
+    @Override
+    public void warn(final Object message) {
+        Reflections.invokeByReflection(delegate, "warn", OBJECT_PARAM, new Object[]{message});
+    }
+
+    @Override
+    public void warn(final Object message, final Throwable t) {
+        Reflections.invokeByReflection(delegate, "warn", OBJECT_THROWABLE_PARAM, new Object[]{message, t});
+    }
+
+    @Override
+    public void error(final Object message) {
+        Reflections.invokeByReflection(delegate, "error", OBJECT_PARAM, new Object[]{message});
+    }
+
+    @Override
+    public void error(final Object message, final Throwable t) {
+        Reflections.invokeByReflection(delegate, "error", OBJECT_THROWABLE_PARAM, new Object[]{message, t});
+    }
+
+    @Override
+    public void fatal(final Object message) {
+        Reflections.invokeByReflection(delegate, "fatal", OBJECT_PARAM, new Object[]{message});
+    }
+
+    @Override
+    public void fatal(final Object message, final Throwable t) {
+        Reflections.invokeByReflection(delegate, "fatal", OBJECT_THROWABLE_PARAM, new Object[]{message, t});
+    }
+}

Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/OpenEJBCommonsLog.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/OpenEJBCommonsLog.java?rev=1442888&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/OpenEJBCommonsLog.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/log/commonslogging/OpenEJBCommonsLog.java Wed Feb  6 10:19:10 2013
@@ -0,0 +1,134 @@
+/*
+ * 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.log.commonslogging;
+
+import org.apache.commons.logging.Log;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
+public class OpenEJBCommonsLog implements Log, Serializable {
+    private transient Logger logger;
+    private String category;
+
+    public OpenEJBCommonsLog(final String category) {
+        this.category = category;
+        logger = Logger.getInstance(LogCategory.OPENEJB, category);
+    }
+
+    @Override
+    public boolean isDebugEnabled() {
+        return logger.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isErrorEnabled() {
+        return logger.isErrorEnabled();
+    }
+
+    @Override
+    public boolean isFatalEnabled() {
+        return logger.isFatalEnabled();
+    }
+
+    @Override
+    public boolean isInfoEnabled() {
+        return logger.isInfoEnabled();
+    }
+
+    @Override
+    public boolean isTraceEnabled() {
+        return logger.isDebugEnabled();
+    }
+
+    @Override
+    public boolean isWarnEnabled() {
+        return logger.isWarningEnabled();
+    }
+
+    @Override
+    public void trace(Object message) {
+        logger.debug(message + "");
+    }
+
+    @Override
+    public void trace(Object message, Throwable t) {
+        logger.debug(message + "", t);
+    }
+
+    @Override
+    public void debug(Object message) {
+        logger.debug(message + "");
+    }
+
+    @Override
+    public void debug(Object message, Throwable t) {
+        logger.debug(message + "", t);
+    }
+
+    @Override
+    public void info(Object message) {
+        logger.info(message + "");
+    }
+
+    @Override
+    public void info(Object message, Throwable t) {
+        logger.info(message + "", t);
+    }
+
+    @Override
+    public void warn(Object message) {
+        logger.warning(message + "");
+    }
+
+    @Override
+    public void warn(Object message, Throwable t) {
+        logger.warning(message + "", t);
+    }
+
+    @Override
+    public void error(Object message) {
+        logger.error(message + "");
+    }
+
+    @Override
+    public void error(Object message, Throwable t) {
+        logger.error(message + "", t);
+    }
+
+    @Override
+    public void fatal(Object message) {
+        logger.fatal(message + "");
+    }
+
+    @Override
+    public void fatal(Object message, Throwable t) {
+        logger.fatal(message + "", t);
+    }
+
+    private void writeObject(final ObjectOutputStream out) throws IOException {
+        out.writeUTF(category);
+    }
+
+    private void readObject(final ObjectInputStream in) throws IOException {
+        logger = Logger.getInstance(LogCategory.OPENEJB, in.readUTF());
+    }
+}