Stabilise OSGi logging and service factories
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 14 Jan 2022 08:15:26 +0000 (09:15 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 14 Jan 2022 08:15:26 +0000 (09:15 +0100)
org.argeo.cms.jcr/pom.xml
org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/RepositoryContextsFactory.java
org.argeo.cms/OSGI-INF/nodeUserAdmin.xml
org.argeo.cms/src/org/argeo/cms/internal/osgi/CmsOsgiLogger.java
org.argeo.cms/src/org/argeo/cms/internal/osgi/NodeUserAdmin.java
sdk/log4j.properties [deleted file]

index 9191abaf3c520b1a408fa0bb523fdf9042f33de3..58de05bb915bebd64b0d0b57b7565a62b86e0af0 100644 (file)
                        <artifactId>org.argeo.cms</artifactId>
                        <version>2.3-SNAPSHOT</version>
                </dependency>
+               <dependency>
+                       <groupId>org.argeo.commons</groupId>
+                       <artifactId>org.argeo.cms.servlet</artifactId>
+                       <version>2.3-SNAPSHOT</version>
+               </dependency>
        </dependencies>
 </project>
\ No newline at end of file
index 2ffac9c4c9478dd2e24fd0d544605598147c5035..e05a0023e74acff795c7db5ff34e9d02e49e66bd 100644 (file)
@@ -73,7 +73,7 @@ public class RepositoryContextsFactory implements ManagedServiceFactory {
                                        RepositoryContext repositoryContext = repositories.remove(otherPid);
                                        repositories.put(pid, repositoryContext);
                                        if (log.isDebugEnabled())
-                                               log.debug("Ignore update of Jackrabbit repository " + cn);
+                                               log.debug("Ignoring update of Jackrabbit repository " + cn);
                                        // FIXME perform a proper update (also of the OSGi service)
                                        return;
                                }
index 328d7bea5a7cc6424c3759597679db9f99ec0bab..eb048d9f538f318530d227b38728e4566b246c3e 100644 (file)
@@ -2,10 +2,10 @@
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="Node User Admin">
    <implementation class="org.argeo.cms.internal.osgi.NodeUserAdmin"/>
    <property name="service.pid" type="String" value="org.argeo.api.userAdmin"/>
-   <reference bind="setTransactionManager" cardinality="1..1" interface="org.argeo.osgi.transaction.WorkControl" name="WorkControl" policy="static"/>
    <service>
       <provide interface="org.osgi.service.cm.ManagedServiceFactory"/>
    </service>
+   <reference bind="setTransactionManager" cardinality="1..1" interface="org.argeo.osgi.transaction.WorkControl" name="WorkControl" policy="static"/>
    <reference bind="setUserTransaction" cardinality="1..1" interface="org.argeo.osgi.transaction.WorkTransaction" name="WorkTransaction" policy="static"/>
    <reference cardinality="1..1" interface="org.argeo.api.cms.CmsState" name="CmsState" policy="static"/>
 </scr:component>
index 91628d344e3879edb6103bf7d70a7401a93ccc20..6898c4348fe098dc9113cfb25e62d1c39c98c6d2 100644 (file)
@@ -1,10 +1,8 @@
 package org.argeo.cms.internal.osgi;
 
 import java.io.IOException;
-import java.net.URI;
 import java.nio.file.FileSystems;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.nio.file.StandardWatchEventKinds;
 import java.nio.file.WatchEvent;
 import java.nio.file.WatchKey;
@@ -30,7 +28,6 @@ import org.argeo.cms.ArgeoLogger;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.internal.runtime.KernelConstants;
-import org.argeo.cms.internal.runtime.KernelUtils;
 import org.argeo.osgi.useradmin.UserAdminConf;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
@@ -160,10 +157,13 @@ public class CmsOsgiLogger implements ArgeoLogger, LogListener {
                                return;
                        pluginLog.error(msg(status), status.getException());
                } else if (severity.equals(LogLevel.WARN) && pluginLog.isWarnEnabled()) {
-                       if (pluginLog.isTraceEnabled())
-                               pluginLog.warn(msg(status), status.getException());
-                       else
+                       if ("org.apache.felix.scr".equals(status.getBundle().getSymbolicName())
+                                       && (status.getException() != null && status.getException() instanceof InterruptedException)) {
+                               // do not print stacktraces by Felix SCR shutdown
                                pluginLog.warn(msg(status));
+                       } else {
+                               pluginLog.warn(msg(status), status.getException());
+                       }
                } else if (severity.equals(LogLevel.INFO) && pluginLog.isDebugEnabled())
                        pluginLog.debug(msg(status), status.getException());
                else if (severity.equals(LogLevel.DEBUG) && pluginLog.isTraceEnabled())
@@ -401,7 +401,7 @@ public class CmsOsgiLogger implements ArgeoLogger, LogListener {
 //                             event.getLoggerName(), event.getThreadName(), event.getMessage(), event.getThrowableStrRep());
        }
 
-       private class AppenderImpl { //extends AppenderSkeleton {
+       private class AppenderImpl { // extends AppenderSkeleton {
                public boolean requiresLayout() {
                        return false;
                }
index 3850010e99544dd94c77e641da774fa5b678ad67..626a057c08fc82b287b91648b1321634172b9856 100644 (file)
@@ -148,10 +148,18 @@ public class NodeUserAdmin extends AggregatingUserAdmin implements ManagedServic
                } else {
                        throw new IllegalArgumentException("Unsupported scheme " + u.getScheme());
                }
+               LdapName baseDn = userDirectory.getBaseDn();
+
+               // FIXME make updates more robust
+               if (pidToBaseDn.containsValue(baseDn)) {
+                       if (log.isDebugEnabled())
+                               log.debug("Ignoring user directory update of " + baseDn);
+                       return;
+               }
+
                addUserDirectory(userDirectory);
 
                // OSGi
-               LdapName baseDn = userDirectory.getBaseDn();
                Hashtable<String, Object> regProps = new Hashtable<>();
                regProps.put(Constants.SERVICE_PID, pid);
                if (isSystemRolesBaseDn(baseDn))
diff --git a/sdk/log4j.properties b/sdk/log4j.properties
deleted file mode 100644 (file)
index bf3f291..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-log4j.rootLogger=WARN, development
-
-log4j.logger.org.argeo=DEBUG
-
-## Appenders
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m %n
-
-log4j.appender.development=org.apache.log4j.ConsoleAppender
-log4j.appender.development.layout=org.apache.log4j.PatternLayout
-log4j.appender.development.layout.ConversionPattern=%d{ABSOLUTE} %m (%F:%L) [%t] %p %n