]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeLogger.java
Improve node deployment
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / NodeLogger.java
index 4f58e7525cb620d6549a6926e020f0501bd87870..e83d6c10ed9cd42c7af5da29b4ff05425b1229dc 100644 (file)
@@ -37,7 +37,7 @@ import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.log4j.spi.LoggingEvent;
-import org.argeo.ArgeoException;
+import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.CurrentUser;
 import org.argeo.node.ArgeoLogListener;
 import org.argeo.node.ArgeoLogger;
@@ -109,7 +109,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        logDispatcherThread = new LogDispatcherThread();
                        logDispatcherThread.start();
                } catch (Exception e) {
-                       throw new ArgeoException("Cannot initialize log4j");
+                       throw new CmsException("Cannot initialize log4j");
                }
        }
 
@@ -150,23 +150,31 @@ class NodeLogger implements ArgeoLogger, LogListener {
        }
 
        private String msg(LogEntry status) {
-               StringBuilder sb = new StringBuilder(status.getMessage());
+               StringBuilder sb = new StringBuilder();
+               sb.append(status.getMessage());
                ServiceReference<?> sr = status.getServiceReference();
                if (sr != null) {
                        sb.append(' ');
                        String[] objectClasses = (String[]) sr.getProperty(Constants.OBJECTCLASS);
-                       sb.append(arrayToString(objectClasses));
+                       if (isSpringApplicationContext(objectClasses)) {
+                               sb.append("{org.springframework.context.ApplicationContext}");
+                               Object symbolicName = sr.getProperty(Constants.BUNDLE_SYMBOLICNAME);
+                               if (symbolicName != null)
+                                       sb.append(" " + Constants.BUNDLE_SYMBOLICNAME + ": " + symbolicName);
+                       } else {
+                               sb.append(arrayToString(objectClasses));
+                       }
                        Object cn = sr.getProperty(NodeConstants.CN);
                        if (cn != null)
                                sb.append(" " + NodeConstants.CN + ": " + cn);
                        Object factoryPid = sr.getProperty(ConfigurationAdmin.SERVICE_FACTORYPID);
                        if (factoryPid != null)
                                sb.append(" " + ConfigurationAdmin.SERVICE_FACTORYPID + ": " + factoryPid);
-//                     else {
-//                             Object servicePid = sr.getProperty(Constants.SERVICE_PID);
-//                             if (servicePid != null)
-//                                     sb.append(" " + Constants.SERVICE_PID + ": " + servicePid);
-//                     }
+                       // else {
+                       // Object servicePid = sr.getProperty(Constants.SERVICE_PID);
+                       // if (servicePid != null)
+                       // sb.append(" " + Constants.SERVICE_PID + ": " + servicePid);
+                       // }
                        // servlets
                        Object whiteBoardPattern = sr.getProperty(KernelConstants.WHITEBOARD_PATTERN_PROP);
                        if (whiteBoardPattern != null)
@@ -176,11 +184,12 @@ class NodeLogger implements ArgeoLogger, LogListener {
                        Object contextName = sr.getProperty(KernelConstants.CONTEXT_NAME_PROP);
                        if (contextName != null)
                                sb.append(" " + KernelConstants.CONTEXT_NAME_PROP + ": " + contextName);
-                       
+
                        // user directories
                        Object baseDn = sr.getProperty(UserAdminConf.baseDn.name());
                        if (baseDn != null)
                                sb.append(" " + UserAdminConf.baseDn.name() + ": " + baseDn);
+
                }
                return sb.toString();
        }
@@ -197,6 +206,15 @@ class NodeLogger implements ArgeoLogger, LogListener {
                return sb.toString();
        }
 
+       private boolean isSpringApplicationContext(String[] objectClasses) {
+               for (String clss : objectClasses) {
+                       if (clss.equals("org.eclipse.gemini.blueprint.context.DelegatedExecutionOsgiBundleApplicationContext")) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
        //
        // ARGEO LOGGER
        //
@@ -204,7 +222,7 @@ class NodeLogger implements ArgeoLogger, LogListener {
        public synchronized void register(ArgeoLogListener listener, Integer numberOfPreviousEvents) {
                String username = CurrentUser.getUsername();
                if (username == null)
-                       throw new ArgeoException("Only authenticated users can register a log listener");
+                       throw new CmsException("Only authenticated users can register a log listener");
 
                if (!userListeners.containsKey(username)) {
                        List<ArgeoLogListener> lst = Collections.synchronizedList(new ArrayList<ArgeoLogListener>());
@@ -233,9 +251,9 @@ class NodeLogger implements ArgeoLogger, LogListener {
                if (username == null)// FIXME
                        return;
                if (!userListeners.containsKey(username))
-                       throw new ArgeoException("No user listeners " + listener + " registered for user " + username);
+                       throw new CmsException("No user listeners " + listener + " registered for user " + username);
                if (!userListeners.get(username).contains(listener))
-                       throw new ArgeoException("No user listeners " + listener + " registered for user " + username);
+                       throw new CmsException("No user listeners " + listener + " registered for user " + username);
                userListeners.get(username).remove(listener);
                if (userListeners.get(username).isEmpty())
                        userListeners.remove(username);