SLF4J implementation.
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 30 Dec 2021 10:32:49 +0000 (11:32 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 30 Dec 2021 10:32:49 +0000 (11:32 +0100)
19 files changed:
dep/org.argeo.dep.cms.minimal/pom.xml
org.argeo.api/bnd.bnd
org.argeo.api/src/org/apache/commons/logging/Log.java [new file with mode: 0644]
org.argeo.api/src/org/apache/commons/logging/LogFactory.java [new file with mode: 0644]
org.argeo.cms.jcr/build.properties
org.argeo.cms/bnd.bnd
org.argeo.cms/src/org/argeo/cms/internal/kernel/Activator.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeLogger.java
org.argeo.init/bnd.bnd
org.argeo.init/src/org/argeo/init/logging/ThinJavaUtilLogging.java
org.argeo.init/src/org/argeo/init/logging/ThinLogging.java
org.argeo.transition/.classpath [new file with mode: 0644]
org.argeo.transition/.project [new file with mode: 0644]
org.argeo.transition/bnd.bnd [new file with mode: 0644]
org.argeo.transition/build.properties [new file with mode: 0644]
org.argeo.transition/pom.xml [new file with mode: 0644]
org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java [new file with mode: 0644]
org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java [new file with mode: 0644]
pom.xml

index fd029efa4e90ded3622c837c2091f495bfbc45bb..7434e4289d6cd7923f9ee69da0fcef081e5ee664 100644 (file)
        <dependencies>
 
                <!-- Argeo Commons -->
+               <dependency>
+                       <groupId>org.argeo.commons</groupId>
+                       <artifactId>org.argeo.init</artifactId>
+                       <version>2.3-SNAPSHOT</version>
+               </dependency>
                <dependency>
                        <groupId>org.argeo.commons</groupId>
                        <artifactId>org.argeo.enterprise</artifactId>
                        <artifactId>org.argeo.api</artifactId>
                        <version>2.3-SNAPSHOT</version>
                </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons</groupId>
+                       <artifactId>org.argeo.transition</artifactId>
+                       <version>2.3-SNAPSHOT</version>
+               </dependency>
                <dependency>
                        <groupId>org.argeo.commons</groupId>
                        <artifactId>org.argeo.cms</artifactId>
 
                <!-- Third Parties -->
 
-               <dependency>
-                       <groupId>org.argeo.tp.apache</groupId>
-                       <artifactId>org.apache.log4j</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.argeo.tp.misc</groupId>
-                       <artifactId>org.slf4j.log4j12</artifactId>
-               </dependency>
+               <!-- <dependency> -->
+               <!-- <groupId>org.argeo.tp.apache</groupId> -->
+               <!-- <artifactId>org.apache.log4j</artifactId> -->
+               <!-- </dependency> -->
+               <!-- <dependency> -->
+               <!-- <groupId>org.argeo.tp.misc</groupId> -->
+               <!-- <artifactId>org.slf4j.log4j12</artifactId> -->
+               <!-- </dependency> -->
                <dependency>
                        <groupId>org.argeo.tp.misc</groupId>
                        <artifactId>org.slf4j.api</artifactId>
                </dependency>
-               <dependency>
-                       <groupId>org.argeo.tp.misc</groupId>
-                       <artifactId>org.slf4j.commons.logging</artifactId>
-               </dependency>
+               <!-- <dependency> -->
+               <!-- <groupId>org.argeo.tp.misc</groupId> -->
+               <!-- <artifactId>slf4j.osgi</artifactId> -->
+               <!-- </dependency> -->
+               <!-- <dependency> -->
+               <!-- <groupId>org.argeo.tp.misc</groupId> -->
+               <!-- <artifactId>org.slf4j.commons.logging</artifactId> -->
+               <!-- </dependency> -->
 
                <!-- OSGi annotations -->
                <!-- <dependency> -->
                        <groupId>org.argeo.tp.bouncycastle</groupId>
                        <artifactId>bcpkix</artifactId>
                </dependency>
-<!--           <dependency> -->
-<!--                   <groupId>org.argeo.tp.bouncycastle</groupId> -->
-<!--                   <artifactId>bcpg</artifactId> -->
-<!--           </dependency> -->
+               <!-- <dependency> -->
+               <!-- <groupId>org.argeo.tp.bouncycastle</groupId> -->
+               <!-- <artifactId>bcpg</artifactId> -->
+               <!-- </dependency> -->
 
                <!-- Apache Commons -->
                <dependency>
                        <groupId>org.argeo.tp.misc</groupId>
                        <artifactId>org.postgresql.jdbc42</artifactId>
                </dependency>
-
-               <!-- Test only -->
-               <dependency>
-                       <groupId>org.argeo.commons</groupId>
-                       <artifactId>org.argeo.osgi.boot</artifactId>
-                       <version>2.3-SNAPSHOT</version>
-                       <scope>test</scope>
-               </dependency>
        </dependencies>
 
        <profiles>
index 6f9826d27c949d9fe77a1d643f6c500355844728..0dfe096633c39b785a2a8dff5db6e05134ee0c3b 100644 (file)
@@ -1,2 +1,5 @@
 Import-Package: javax.naming.*,\
-javax.security.*
\ No newline at end of file
+javax.security.*
+
+Export-Package: org.argeo.api.*,\
+org.apache.commons.logging;version=1.2.666
\ No newline at end of file
diff --git a/org.argeo.api/src/org/apache/commons/logging/Log.java b/org.argeo.api/src/org/apache/commons/logging/Log.java
new file mode 100644 (file)
index 0000000..4c4f8b4
--- /dev/null
@@ -0,0 +1,151 @@
+package org.apache.commons.logging;
+
+import java.lang.System.Logger;
+import java.lang.System.Logger.Level;
+import java.util.Objects;
+
+/** A pseudo implementation of Apache Commons Logging. */
+public interface Log {
+       Logger getLogger();
+
+       default boolean isDebugEnabled() {
+               return getLogger().isLoggable(Level.DEBUG);
+       }
+
+       default boolean isErrorEnabled() {
+               return getLogger().isLoggable(Level.ERROR);
+       }
+
+       default boolean isInfoEnabled() {
+               return getLogger().isLoggable(Level.INFO);
+       }
+
+       default boolean isTraceEnabled() {
+               return getLogger().isLoggable(Level.TRACE);
+       }
+
+       default boolean isWarnEnabled() {
+               return getLogger().isLoggable(Level.WARNING);
+       }
+
+       /*
+        * TRACE
+        */
+
+       default void trace(String message) {
+               getLogger().log(Level.TRACE, message);
+       }
+
+       default void trace(Object message) {
+               getLogger().log(Level.TRACE, Objects.requireNonNull(message));
+       }
+
+       default void trace(String message, Throwable t) {
+               getLogger().log(Level.TRACE, message, t);
+       }
+
+       default void trace(Object message, Throwable t) {
+               trace(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void trace(String format, Object... arguments) {
+               getLogger().log(Level.TRACE, format, arguments);
+       }
+
+       /*
+        * DEBUG
+        */
+
+       default void debug(String message) {
+               getLogger().log(Level.DEBUG, message);
+       }
+
+       default void debug(Object message) {
+               getLogger().log(Level.DEBUG, message);
+       }
+
+       default void debug(String message, Throwable t) {
+               getLogger().log(Level.DEBUG, message, t);
+       }
+
+       default void debug(Object message, Throwable t) {
+               debug(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void debug(String format, Object... arguments) {
+               getLogger().log(Level.DEBUG, format, arguments);
+       }
+
+       /*
+        * INFO
+        */
+
+       default void info(String message) {
+               getLogger().log(Level.INFO, message);
+       }
+
+       default void info(Object message) {
+               getLogger().log(Level.INFO, message);
+       }
+
+       default void info(String message, Throwable t) {
+               getLogger().log(Level.INFO, message, t);
+       }
+
+       default void info(Object message, Throwable t) {
+               info(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void info(String format, Object... arguments) {
+               getLogger().log(Level.INFO, format, arguments);
+       }
+
+       /*
+        * WARN
+        */
+
+       default void warn(String message) {
+               getLogger().log(Level.WARNING, message);
+       }
+
+       default void warn(Object message) {
+               getLogger().log(Level.WARNING, message);
+       }
+
+       default void warn(String message, Throwable t) {
+               getLogger().log(Level.WARNING, message, t);
+       }
+
+       default void warn(Object message, Throwable t) {
+               warn(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void warn(String format, Object... arguments) {
+               getLogger().log(Level.WARNING, format, arguments);
+       }
+
+       /*
+        * ERROR
+        */
+
+       default void error(String message) {
+               getLogger().log(Level.ERROR, message);
+       }
+
+       default void error(Object message) {
+               getLogger().log(Level.ERROR, message);
+       }
+
+       default void error(String message, Throwable t) {
+               getLogger().log(Level.ERROR, message, t);
+       }
+
+       default void error(Object message, Throwable t) {
+               error(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void error(String format, Object... arguments) {
+               getLogger().log(Level.ERROR, format, arguments);
+       }
+
+}
diff --git a/org.argeo.api/src/org/apache/commons/logging/LogFactory.java b/org.argeo.api/src/org/apache/commons/logging/LogFactory.java
new file mode 100644 (file)
index 0000000..e95b792
--- /dev/null
@@ -0,0 +1,31 @@
+package org.apache.commons.logging;
+
+import java.lang.System.Logger;
+import java.util.Objects;
+
+/** A pseudo implementation of Apache Commons Logging. */
+public abstract class LogFactory {
+       public static Log getLog(Class<?> clss) {
+               return getLog(Objects.requireNonNull(clss).getName());
+       }
+
+       public static Log getLog(String name) {
+               Logger logger = System.getLogger(Objects.requireNonNull(name));
+               return new LoggerWrapper(logger);
+       }
+
+       static class LoggerWrapper implements Log {
+               private final Logger logger;
+
+               LoggerWrapper(Logger logger) {
+                       super();
+                       this.logger = logger;
+               }
+
+               @Override
+               public Logger getLogger() {
+                       return logger;
+               }
+
+       }
+}
index fc636406c332ddbe0c500558d53c944041cf3312..83a4053bce0c3b3b1e302fc47721474a7b86d561 100644 (file)
@@ -14,8 +14,6 @@ additional.bundles = org.junit,\
                      org.apache.jackrabbit.spi,\
                      org.apache.jackrabbit.spi.commons,\
                      org.slf4j.api,\
-                     org.slf4j.log4j12,\
-                     org.apache.log4j,\
                      org.apache.commons.collections,\
                      EDU.oswego.cs.dl.util.concurrent,\
                      org.apache.lucene,\
index e5046d308cc5ebb3aca552a672dd6cf17d35ee6a..dc2cca306636f77ed379aa2e359d7130a7acfd01 100644 (file)
@@ -5,6 +5,7 @@ Import-Package: org.apache.commons.httpclient.cookie;resolution:=optional,\
 org.osgi.*;version=0.0.0,\
 org.osgi.service.http.whiteboard;version=0.0.0,\
 org.osgi.framework.namespace;version=0.0.0,\
+org.apache.log4j.*;resolution:=optional,\
 *
 
 Service-Component:\
index 3fbed28f410c037316ed1975019120abcb18fdf4..8d68be64309c3aad81b97cb6779937e260411d79 100644 (file)
@@ -76,7 +76,7 @@ public class Activator implements BundleActivator {
 
                try {
                        initSecurity();
-                       initArgeoLogger();
+//                     initArgeoLogger();
                        initNode();
 
                        if (log.isTraceEnabled())
index fef7a7a30a0e4b308cdca33a374fac8f57e6d849..89c7e05a67d9a9c8b2c2024c2203424660f3456a 100644 (file)
@@ -25,12 +25,6 @@ import java.util.concurrent.LinkedBlockingQueue;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-import org.apache.log4j.spi.LoggingEvent;
 import org.argeo.api.ArgeoLogListener;
 import org.argeo.api.ArgeoLogger;
 import org.argeo.api.NodeConstants;
@@ -51,14 +45,11 @@ class NodeLogger implements ArgeoLogger, LogListener {
        /** Internal debug for development purposes. */
        private static Boolean debug = false;
 
-       // private final static Log log = LogFactory.getLog(NodeLogger.class);
-
        private Boolean disabled = false;
 
        private String level = null;
 
-       private Level log4jLevel = null;
-       // private Layout layout;
+//     private Level log4jLevel = null;
 
        private Properties configuration;
 
@@ -126,7 +117,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        // setLayout(new PatternLayout(pattern));
                        appender = new AppenderImpl();
                        reloadConfiguration();
-                       Logger.getRootLogger().addAppender(appender);
+//                     Logger.getRootLogger().addAppender(appender);
 
                        logDispatcherThread = new LogDispatcherThread();
                        logDispatcherThread.start();
@@ -136,7 +127,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
        }
 
        public void destroy() throws Exception {
-               Logger.getRootLogger().removeAppender(appender);
+//             Logger.getRootLogger().removeAppender(appender);
                allUsersListeners.clear();
                for (List<ArgeoLogListener> lst : userListeners.values())
                        lst.clear();
@@ -353,8 +344,8 @@ class NodeLogger implements ArgeoLogger, LogListener {
         */
        protected void reloadConfiguration() {
                if (configuration != null) {
-                       LogManager.resetConfiguration();
-                       PropertyConfigurator.configure(configuration);
+//                     LogManager.resetConfiguration();
+//                     PropertyConfigurator.configure(configuration);
                }
        }
 
@@ -366,18 +357,18 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        return;
 
                if (level != null && !level.trim().equals("")) {
-                       if (log4jLevel == null || !log4jLevel.toString().equals(level))
-                               try {
-                                       log4jLevel = Level.toLevel(level);
-                               } catch (Exception e) {
-                                       System.err.println("Log4j level could not be set for level '" + level + "', resetting it to null.");
-                                       e.printStackTrace();
-                                       level = null;
-                               }
-
-                       if (log4jLevel != null && !event.getLoggingEvent().getLevel().isGreaterOrEqual(log4jLevel)) {
-                               return;
-                       }
+//                     if (log4jLevel == null || !log4jLevel.toString().equals(level))
+//                             try {
+//                                     log4jLevel = Level.toLevel(level);
+//                             } catch (Exception e) {
+//                                     System.err.println("Log4j level could not be set for level '" + level + "', resetting it to null.");
+//                                     e.printStackTrace();
+//                                     level = null;
+//                             }
+//
+//                     if (log4jLevel != null && !event.getLoggingEvent().getLevel().isGreaterOrEqual(log4jLevel)) {
+//                             return;
+//                     }
                }
 
                try {
@@ -404,12 +395,12 @@ class NodeLogger implements ArgeoLogger, LogListener {
        }
 
        protected void dispatchEvent(ArgeoLogListener logListener, LogEvent evt) {
-               LoggingEvent event = evt.getLoggingEvent();
-               logListener.appendLog(evt.getUsername(), event.getTimeStamp(), event.getLevel().toString(),
-                               event.getLoggerName(), event.getThreadName(), event.getMessage(), event.getThrowableStrRep());
+//             LoggingEvent event = evt.getLoggingEvent();
+//             logListener.appendLog(evt.getUsername(), event.getTimeStamp(), event.getLevel().toString(),
+//                             event.getLoggerName(), event.getThreadName(), event.getMessage(), event.getThrowableStrRep());
        }
 
-       private class AppenderImpl extends AppenderSkeleton {
+       private class AppenderImpl { //extends AppenderSkeleton {
                public boolean requiresLayout() {
                        return false;
                }
@@ -417,17 +408,17 @@ class NodeLogger implements ArgeoLogger, LogListener {
                public void close() {
                }
 
-               @Override
-               protected void append(LoggingEvent event) {
-                       if (events != null) {
-                               try {
-                                       String username = CurrentUser.getUsername();
-                                       events.put(new LogEvent(username, event));
-                               } catch (InterruptedException e) {
-                                       // silent
-                               }
-                       }
-               }
+//             @Override
+//             protected void append(LoggingEvent event) {
+//                     if (events != null) {
+//                             try {
+//                                     String username = CurrentUser.getUsername();
+//                                     events.put(new LogEvent(username, event));
+//                             } catch (InterruptedException e) {
+//                                     // silent
+//                             }
+//                     }
+//             }
 
        }
 
@@ -475,36 +466,36 @@ class NodeLogger implements ArgeoLogger, LogListener {
 
        private class LogEvent {
                private final String username;
-               private final LoggingEvent loggingEvent;
+//             private final LoggingEvent loggingEvent;
 
-               public LogEvent(String username, LoggingEvent loggingEvent) {
+               public LogEvent(String username) {
                        super();
                        this.username = username;
-                       this.loggingEvent = loggingEvent;
+//                     this.loggingEvent = loggingEvent;
                }
 
-               @Override
-               public int hashCode() {
-                       return loggingEvent.hashCode();
-               }
-
-               @Override
-               public boolean equals(Object obj) {
-                       return loggingEvent.equals(obj);
-               }
-
-               @Override
-               public String toString() {
-                       return username + "@ " + loggingEvent.toString();
-               }
+//             @Override
+//             public int hashCode() {
+//                     return loggingEvent.hashCode();
+//             }
+//
+//             @Override
+//             public boolean equals(Object obj) {
+//                     return loggingEvent.equals(obj);
+//             }
+//
+//             @Override
+//             public String toString() {
+//                     return username + "@ " + loggingEvent.toString();
+//             }
 
                public String getUsername() {
                        return username;
                }
 
-               public LoggingEvent getLoggingEvent() {
-                       return loggingEvent;
-               }
+//             public LoggingEvent getLoggingEvent() {
+//                     return loggingEvent;
+//             }
 
        }
 
@@ -532,7 +523,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
                                                if (log4jConfigurationPath.equals(parentDir.resolve(changed))) {
                                                        if (isInternalDebugEnabled())
                                                                debug(log4jConfigurationPath + " has changed, reloading.");
-                                                       PropertyConfigurator.configure(log4jConfigurationPath.toUri().toURL());
+//                                                     PropertyConfigurator.configure(log4jConfigurationPath.toUri().toURL());
                                                }
                                        }
                                        // reset the key
index 734c77440d65f76a6fa82e6b09e061e3fc5c3777..122d7f586ee40edd3a66294049bb14e9a0e44adf 100644 (file)
@@ -6,5 +6,6 @@ Bundle-Activator: org.argeo.init.osgi.Activator
 Import-Package: \
 org.osgi.*;version=0.0.0,\
 java.util.logging.*;resolution:=optional
+
 Private-Package: *
 Export-Package: !*
index 5b51d00bda90af1121973b3c999b5ae184bbe118..7670c2573a2c9deba0f1085b0c2d6377f56211d0 100644 (file)
@@ -13,6 +13,6 @@ class ThinJavaUtilLogging {
                logManager.reset();
                Logger rootLogger = logManager.getLogger("");
                rootLogger.addHandler(new ThinHandler());
-               rootLogger.setLevel(java.util.logging.Level.FINE);
+               rootLogger.setLevel(java.util.logging.Level.INFO);
        }
 }
index 44baa691993bd3252620a7acad1e978b3512a9e7..2c2b04d2c7952e50006e3b05c39cb0bca8bf7abf 100644 (file)
@@ -41,7 +41,7 @@ class ThinLogging {
 
                Runtime.getRuntime().addShutdownHook(new Thread(() -> close(), "Log shutdown"));
 
-               setDefaultLevel(Level.DEBUG);
+               setDefaultLevel(Level.INFO);
        }
 
        protected void close() {
@@ -106,7 +106,7 @@ class ThinLogging {
                public void log(Level level, ResourceBundle bundle, String format, Object... params) {
                        // measure timestamp first
                        Instant now = Instant.now();
-                       String msg = MessageFormat.format(format, params);
+                       String msg = params == null ? format : MessageFormat.format(format, params);
                        publisher.log(this, level, bundle, msg, null, now, findCallLocation());
                }
 
@@ -122,9 +122,12 @@ class ThinLogging {
                                        String className = stack[i].getClassName();
                                        switch (className) {
                                        case "java.lang.System$Logger":
+                                       case "java.util.logging.Logger":
                                        case "org.apache.commons.logging.Log":
                                        case "org.osgi.service.log.Logger":
                                        case "org.argeo.cms.Log":
+                                       case "org.slf4j.impl.ArgeoLogger":
+                                       case "org.eclipse.jetty.util.log.Slf4jLog":
                                                lowestLoggerInterface = i;
                                                continue stack;
                                        default:
diff --git a/org.argeo.transition/.classpath b/org.argeo.transition/.classpath
new file mode 100644 (file)
index 0000000..e801ebf
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.argeo.transition/.project b/org.argeo.transition/.project
new file mode 100644 (file)
index 0000000..1c1172e
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.transition</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/org.argeo.transition/bnd.bnd b/org.argeo.transition/bnd.bnd
new file mode 100644 (file)
index 0000000..66c0c1b
--- /dev/null
@@ -0,0 +1,2 @@
+Import-Package: \
+*;resolution:=optional
diff --git a/org.argeo.transition/build.properties b/org.argeo.transition/build.properties
new file mode 100644 (file)
index 0000000..34d2e4d
--- /dev/null
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/org.argeo.transition/pom.xml b/org.argeo.transition/pom.xml
new file mode 100644 (file)
index 0000000..eac4922
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.commons</groupId>
+               <version>2.3-SNAPSHOT</version>
+               <artifactId>argeo-commons</artifactId>
+               <relativePath>..</relativePath>
+       </parent>
+       <artifactId>org.argeo.transition</artifactId>
+       <packaging>jar</packaging>
+       <name>Legacy transition</name>
+       <dependencies>
+               <dependency>
+                       <groupId>org.argeo.commons</groupId>
+                       <artifactId>org.argeo.api</artifactId>
+                       <version>2.3-SNAPSHOT</version>
+               </dependency>
+       </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java b/org.argeo.transition/src/org/slf4j/impl/ArgeoLogger.java
new file mode 100644 (file)
index 0000000..6763037
--- /dev/null
@@ -0,0 +1,181 @@
+package org.slf4j.impl;
+
+import org.apache.commons.logging.Log;
+import org.slf4j.helpers.MarkerIgnoringBase;
+
+class ArgeoLogger extends MarkerIgnoringBase {
+       private static final long serialVersionUID = -7719157836932627307L;
+       private final Log log;
+
+       protected ArgeoLogger(String name, Log log) {
+               this.name = name;
+               this.log = log;
+       }
+
+       @Override
+       public boolean isDebugEnabled() {
+               return log.isDebugEnabled();
+       }
+
+       @Override
+       public boolean isTraceEnabled() {
+               return log.isDebugEnabled();
+       }
+
+       @Override
+       public void trace(String msg) {
+               log.trace(msg);
+
+       }
+
+       @Override
+       public void trace(String format, Object... arguments) {
+               log.trace(format, arguments);
+
+       }
+
+       @Override
+       public void trace(String msg, Throwable t) {
+               log.trace(msg, t);
+
+       }
+
+       @Override
+       public void debug(String msg) {
+               log.debug(msg);
+
+       }
+
+       @Override
+       public void debug(String format, Object... arguments) {
+               log.debug(format, arguments);
+
+       }
+
+       @Override
+       public void debug(String msg, Throwable t) {
+               log.debug(msg, t);
+
+       }
+
+       @Override
+       public boolean isInfoEnabled() {
+               return log.isInfoEnabled();
+       }
+
+       @Override
+       public void info(String msg) {
+               log.info(msg);
+
+       }
+
+       @Override
+       public void info(String format, Object... arguments) {
+               log.info(format, arguments);
+       }
+
+       @Override
+       public void info(String msg, Throwable t) {
+               log.info(msg, t);
+
+       }
+
+       @Override
+       public boolean isWarnEnabled() {
+               return log.isWarnEnabled();
+       }
+
+       @Override
+       public void warn(String msg) {
+               log.warn(msg);
+
+       }
+
+       @Override
+       public void warn(String format, Object... arguments) {
+               log.warn(format, arguments);
+
+       }
+
+       @Override
+       public void warn(String msg, Throwable t) {
+               log.warn(msg, t);
+
+       }
+
+       @Override
+       public boolean isErrorEnabled() {
+
+               return log.isErrorEnabled();
+       }
+
+       @Override
+       public void error(String msg) {
+               log.error(msg);
+
+       }
+
+       @Override
+       public void error(String format, Object... arguments) {
+               log.error(format, arguments);
+
+       }
+
+       @Override
+       public void error(String msg, Throwable t) {
+               log.error(msg, t);
+
+       }
+
+       @Override
+       public void trace(String format, Object arg) {
+               trace(format, new Object[] { arg });
+
+       }
+
+       @Override
+       public void trace(String format, Object arg1, Object arg2) {
+               trace(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void debug(String format, Object arg) {
+               debug(format, new Object[] { arg });
+       }
+
+       @Override
+       public void debug(String format, Object arg1, Object arg2) {
+               debug(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void info(String format, Object arg) {
+               info(format, new Object[] { arg });
+       }
+
+       @Override
+       public void info(String format, Object arg1, Object arg2) {
+               info(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void warn(String format, Object arg) {
+               warn(format, new Object[] { arg });
+       }
+
+       @Override
+       public void warn(String format, Object arg1, Object arg2) {
+               warn(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void error(String format, Object arg) {
+               error(format, new Object[] { arg });
+       }
+
+       @Override
+       public void error(String format, Object arg1, Object arg2) {
+               error(format, new Object[] { arg1, arg2 });
+       }
+
+}
\ No newline at end of file
diff --git a/org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java b/org.argeo.transition/src/org/slf4j/impl/StaticLoggerBinder.java
new file mode 100644 (file)
index 0000000..19943a1
--- /dev/null
@@ -0,0 +1,43 @@
+package org.slf4j.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.slf4j.ILoggerFactory;
+import org.slf4j.spi.LoggerFactoryBinder;
+
+public class StaticLoggerBinder implements LoggerFactoryBinder {
+       public static final String REQUESTED_API_VERSION = "1.7";
+
+       private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();
+
+       private final ILoggerFactory loggerFactory;
+
+       protected StaticLoggerBinder() {
+               loggerFactory = new SystemLoggerFactory();
+       }
+
+       @Override
+       public ILoggerFactory getLoggerFactory() {
+               return loggerFactory;
+       }
+
+       @Override
+       public String getLoggerFactoryClassStr() {
+               return SystemLoggerFactory.class.getName();
+       }
+
+       public static final StaticLoggerBinder getSingleton() {
+               return SINGLETON;
+       }
+
+       static class SystemLoggerFactory implements ILoggerFactory {
+
+               @Override
+               public org.slf4j.Logger getLogger(String name) {
+                       Log logger = LogFactory.getLog(name);
+                       return new ArgeoLogger(name, logger);
+               }
+
+       }
+
+}
diff --git a/pom.xml b/pom.xml
index d199b7ec18b7a50ac0219cd6ef1df4ea3dc9fd8e..bb88071775b54e2b02d3217663974a03d0eead1a 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                <module>org.argeo.init</module>
                <module>org.argeo.enterprise</module>
                <!-- <module>org.argeo.jcr</module> -->
-<!--           <module>org.argeo.core</module> -->
+               <!-- <module>org.argeo.core</module> -->
                <!-- Eclipse -->
                <module>org.argeo.swt.specific.rap</module>
                <!-- CMS -->
                <module>org.argeo.api</module>
+               <module>org.argeo.transition</module>
                <!-- <module>org.argeo.maintenance</module> -->
                <module>org.argeo.cms</module>
                <module>org.argeo.cms.swt</module>
                <module>org.argeo.cms.jcr</module>
-<!--           <module>org.argeo.cms.ui.theme</module> -->
+               <!-- <module>org.argeo.cms.ui.theme</module> -->
                <module>org.argeo.cms.ui</module>
                <module>org.argeo.cms.ui.rap</module>
                <!-- CMS E4 -->