]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java
Fix special characters in JCR logging
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.jcr / src / main / java / org / argeo / slc / jcr / execution / JcrExecutionModulesListener.java
index 8543689294323ff8e0c3f24c59b7fea830b6b0d3..1f2a2bb3c79d49cf94b996019c1ab09b1c5b9e16 100644 (file)
@@ -7,6 +7,7 @@ import java.util.List;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.Property;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.nodetype.NodeType;
@@ -35,7 +36,7 @@ import org.argeo.slc.jcr.SlcTypes;
  */
 public class JcrExecutionModulesListener implements ExecutionModulesListener,
                SlcNames {
-       private final static String SLC_EXECUTION_MODRULES_PROPERTY = "slc.executionModules";
+       private final static String SLC_EXECUTION_MODULES_PROPERTY = "slc.executionModules";
 
        private final static Log log = LogFactory
                        .getLog(JcrExecutionModulesListener.class);
@@ -43,6 +44,7 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
 
        private ExecutionModulesManager modulesManager;
 
+       private Repository repository;
        /**
         * We don't use a thread bound session because many different threads will
         * call this critical component and we don't want to login each time. We
@@ -54,14 +56,15 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
         * LIFECYCLE
         */
        public void init() {
-               clearAgent();
-               if (modulesManager != null) {
-                       List<ModuleDescriptor> moduleDescriptors = modulesManager
-                                       .listModules();
-                       String executionModules = System
-                                       .getProperty(SLC_EXECUTION_MODRULES_PROPERTY);
-                       if (executionModules != null)
-                               try {
+               try {
+                       session = repository.login();
+                       clearAgent();
+                       if (modulesManager != null) {
+                               List<ModuleDescriptor> moduleDescriptors = modulesManager
+                                               .listModules();
+                               String executionModules = System
+                                               .getProperty(SLC_EXECUTION_MODULES_PROPERTY);
+                               if (executionModules != null) {
                                        Node agentNode = session.getNode(agent.getNodePath());
                                        for (String executionModule : executionModules.split(",")) {
                                                for (ModuleDescriptor moduleDescriptor : moduleDescriptors) {
@@ -89,16 +92,18 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
                                                }
                                        }
                                        session.save();
-                               } catch (RepositoryException e) {
-                                       JcrUtils.discardQuietly(session);
-                                       throw new SlcException("Cannot initialize modules", e);
                                }
+                       }
+               } catch (RepositoryException e) {
+                       JcrUtils.discardQuietly(session);
+                       JcrUtils.logoutQuietly(session);
+                       throw new SlcException("Cannot initialize modules", e);
                }
        }
 
-       public void dispose() {
+       public void destroy() {
                clearAgent();
-               session.logout();
+               JcrUtils.logoutQuietly(session);
        }
 
        protected synchronized void clearAgent() {
@@ -212,10 +217,14 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
                // name, description
                flowNode.setProperty(SLC_NAME, efd.getName());
                String[] tokens = relativePath.split("/");
-               flowNode.setProperty(Property.JCR_TITLE, tokens[tokens.length - 1]);
+               String endName = tokens[tokens.length - 1];
+               flowNode.setProperty(Property.JCR_TITLE, endName);
                if (efd.getDescription() != null
-                               && efd.getDescription().trim().equals(""))
+                               && !efd.getDescription().trim().equals("")) {
                        flowNode.setProperty(Property.JCR_DESCRIPTION, efd.getDescription());
+               } else {
+                       flowNode.setProperty(Property.JCR_DESCRIPTION, endName);
+               }
 
                // execution spec
                ExecutionSpec executionSpec = efd.getExecutionSpec();
@@ -242,8 +251,6 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
 
                // values
                for (String attr : efd.getValues().keySet()) {
-                       if (log.isDebugEnabled())
-                               log.debug(attr + "=" + efd.getValues().get(attr));
                        ExecutionSpecAttribute esa = executionSpec.getAttributes()
                                        .get(attr);
                        if (esa instanceof PrimitiveSpecAttribute) {
@@ -340,9 +347,8 @@ public class JcrExecutionModulesListener implements ExecutionModulesListener,
                this.agent = agent;
        }
 
-       /** Expects a non-shared session with admin authorization */
-       public void setSession(Session session) {
-               this.session = session;
+       public void setRepository(Repository repository) {
+               this.repository = repository;
        }
 
        public void setModulesManager(ExecutionModulesManager modulesManager) {