Fix SLC
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 8 Nov 2011 15:05:25 +0000 (15:05 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 8 Nov 2011 15:05:25 +0000 (15:05 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@4904 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

demo/slc_demo_remote.properties [new file with mode: 0644]
modules/agent/org.argeo.slc.agent.jcr/META-INF/spring/jcr.xml
runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/runtime/DefaultAgent.java
runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java
runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrAgent.java
runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/execution/JcrExecutionModulesListener.java
runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/BuildInMock.java
runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/lib/linux/rpmfactory/RpmBuildEnvironment.java

diff --git a/demo/slc_demo_remote.properties b/demo/slc_demo_remote.properties
new file mode 100644 (file)
index 0000000..bf6d879
--- /dev/null
@@ -0,0 +1,22 @@
+argeo.osgi.start=\
+org.springframework.osgi.extender,\
+org.argeo.node.repofactory.jackrabbit,\
+org.argeo.node.repo.jackrabbit,\
+org.argeo.security.dao.jackrabbit,\
+org.argeo.slc.node.jackrabbit,\
+org.argeo.slc.agent,\
+org.argeo.slc.agent.jcr,\
+org.argeo.slc.demo.ant,\
+org.argeo.slc.demo.basic,\
+org.argeo.slc.demo.minimal,\
+org.argeo.elgis.rpmfactory,\
+
+eclipse.application=org.argeo.slc.client.rcp.application
+org.argeo.security.ui.initialPerspective=org.argeo.slc.client.ui.slcExecutionPerspective
+
+log4j.configuration=file:../../log4j.properties
+
+argeo.node.repo.home=data/noderepo
+argeo.node.repo.dburl=jdbc:h2:data/h2/noderepo_db
+
+argeo.node.repo.uri=http://localrepo:7070/org.argeo.jcr.webapp/remoting/node
index e886f2e26144777f023d96f7313c4f8047c0f74c..eb662a0a08b965b2d1c49617af6fbade925c4a2e 100644 (file)
@@ -4,20 +4,24 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
        <bean id="agent" class="org.argeo.slc.jcr.execution.JcrAgent"\r
-               init-method="init" destroy-method="dispose">\r
-               <property name="session" ref="session" />\r
+               init-method="init" destroy-method="destroy">\r
+               <property name="repository" ref="repository" />\r
                <property name="modulesManager" ref="modulesManager" />\r
        </bean>\r
 \r
        <bean id="executionModulesListener" class="org.argeo.slc.jcr.execution.JcrExecutionModulesListener"\r
-               init-method="init" destroy-method="dispose">\r
+               init-method="init" destroy-method="destroy">\r
                <property name="agent" ref="agent" />\r
-               <property name="session">\r
-                       <bean factory-bean="repository" factory-method="login" />\r
-               </property>\r
+               <property name="repository" ref="repository" />\r
                <property name="modulesManager" ref="modulesManager" />\r
        </bean>\r
 \r
+       <!-- Thread-bound session is used when multiple threads with various authentication \r
+               will call the component -->\r
+       <bean id="session" class="org.argeo.security.jcr.SecureThreadBoundSession">\r
+               <property name="repository" ref="repository" />\r
+       </bean>\r
+\r
        <bean id="resultListener" class="org.argeo.slc.jcr.execution.JcrResultListener">\r
                <property name="session" ref="session" />\r
        </bean>\r
        </bean>\r
 \r
 \r
-       <bean id="session" class="org.argeo.security.jcr.SecureThreadBoundSession">\r
-               <property name="repository" ref="repository" />\r
-       </bean>\r
-\r
        <bean\r
                class="org.argeo.security.core.AuthenticatedApplicationContextInitialization">\r
                <property name="authenticationManager" ref="authenticationManager" />\r
index 932a6ad4b8aedbde2e2d2ea2f945ce0b1be5da9f..73f5cfd342a5d2394fbb063b37c8b076574993fb 100644 (file)
@@ -48,6 +48,7 @@ public class DefaultAgent implements SlcAgent, ExecutionProcessNotifier {
        /*
         * LIFECYCLE
         */
+       /** Initialization */
        public void init() {
                try {
                        agentDescriptor = new SlcAgentDescriptor();
@@ -62,7 +63,8 @@ public class DefaultAgent implements SlcAgent, ExecutionProcessNotifier {
                                new HashMap<String, String>());
        }
 
-       public void dispose() {
+       /** Clean up (needs to be called by overriding method) */
+       public void destroy() {
                modulesManager.unregisterProcessNotifier(this,
                                new HashMap<String, String>());
        }
index 11ead0308354851232225a636573206b20ae37e9..9bc3f9e233eacdea683c5c96795f2627abf8eab6 100644 (file)
@@ -67,7 +67,8 @@ public class JmsAgent extends DefaultAgent implements MessageListener {
                }
        }
 
-       public void dispose() {
+       @Override
+       public void destroy() {
                try {
                        jmsTemplate.convertAndSend(agentUnregister, getAgentDescriptor());
                        log.info("Agent #" + getAgentUuid() + " unregistered from "
@@ -78,7 +79,7 @@ public class JmsAgent extends DefaultAgent implements MessageListener {
                        if (log.isTraceEnabled())
                                log.debug("Original error.", e);
                }
-               super.dispose();
+               super.destroy();
        }
 
        public void setAgentRegister(Destination agentRegister) {
index a096e5d5eebd6aa84b93a8ff94a5c1b926846f10..6be4bc86a374c79286b6672ab8320a0659250a9e 100644 (file)
@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.UUID;
 
 import javax.jcr.Node;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
@@ -21,7 +22,7 @@ import org.argeo.slc.runtime.SlcAgentFactory;
 
 /** SLC VM agent synchronizing with a JCR repository. */
 public class JcrAgent extends DefaultAgent implements SlcAgentFactory, SlcNames {
-       private Session session;
+       private Repository repository;
 
        /** only one agent per VM is currently supported */
        private final String agentNodeName = "default";
@@ -30,7 +31,9 @@ public class JcrAgent extends DefaultAgent implements SlcAgentFactory, SlcNames
         * LIFECYCLE
         */
        protected String initAgentUuid() {
+               Session session = null;
                try {
+                       session = repository.login();
                        Node vmAgentFactoryNode = JcrUtils.mkdirsSafe(session,
                                        SlcJcrConstants.VM_AGENT_FACTORY_PATH,
                                        SlcTypes.SLC_AGENT_FACTORY);
@@ -46,11 +49,14 @@ public class JcrAgent extends DefaultAgent implements SlcAgentFactory, SlcNames
                } catch (RepositoryException e) {
                        JcrUtils.discardQuietly(session);
                        throw new SlcException("Cannot find JCR agent UUID", e);
+               } finally {
+                       JcrUtils.logoutQuietly(session);
                }
        }
 
-       public void dispose() {
-
+       @Override
+       public void destroy() {
+               super.destroy();
        }
 
        /*
@@ -88,12 +94,12 @@ public class JcrAgent extends DefaultAgent implements SlcAgentFactory, SlcNames
        /*
         * BEAN
         */
-       public void setSession(Session session) {
-               this.session = session;
-       }
-
        public String getAgentNodeName() {
                return agentNodeName;
        }
 
+       public void setRepository(Repository repository) {
+               this.repository = repository;
+       }
+
 }
index 88d3ae17e9ad1e4f801eadce054ed987ab8f96d8..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;
@@ -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_MODULES_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() {
@@ -342,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) {
index c71507581157e7afacebd8aecf55140636f4b8ab..364d54df8946897b88216450dacd4888d38acaec 100644 (file)
@@ -71,8 +71,10 @@ public class BuildInMock implements Runnable {
                mock.setExecutor(executor);
                mock.run();
 
+               // File repoDir = new File(buildEnvironment.getStagingBase() + "/"
+               // + repository + "/" + level + "/" + release);
                File repoDir = new File(buildEnvironment.getStagingBase() + "/"
-                               + repository + "/" + level + "/" + release);
+                               + repository + "-staging" + "/" + release);
                File srpmDir = new File(repoDir, "SRPMS");
                if (mkdirs)
                        srpmDir.mkdirs();
index 5c2ba1ed2e67f04f88bff83350112a64525de6bc..ca4383bd3a9cc413af05c20392902450e70efbbd 100644 (file)
@@ -7,7 +7,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.exec.Executor;
 import org.apache.commons.io.FileUtils;
 import org.argeo.slc.SlcException;
 
@@ -22,8 +21,7 @@ public class RpmBuildEnvironment {
 
        private List<String> archs = new ArrayList<String>();
 
-       private String stagingBase = System.getProperty("user.home")
-                       + "/dev/staging";
+       private String stagingBase = "/srv/rpmfactory";
 
        /** Write (topdir)/rpmmacros and (topdir)/rpmrc */
        public void writeRpmbuildConfigFiles(File topdir) {