From: Mathieu Baudier Date: Sun, 25 Apr 2010 20:11:08 +0000 (+0000) Subject: Improve Security X-Git-Tag: argeo-slc-2.1.7~1348 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=7efacbb6a17cd98979833f3c427ddeb940869d5c;p=gpl%2Fargeo-slc.git Improve Security Integrate Jackrabbit and Spring Security git-svn-id: https://svn.argeo.org/slc/trunk@3497 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/demo/site/org.argeo.slc.demo.log4j/log4j.properties b/demo/site/org.argeo.slc.demo.log4j/log4j.properties index 5c44cdd99..702b59035 100644 --- a/demo/site/org.argeo.slc.demo.log4j/log4j.properties +++ b/demo/site/org.argeo.slc.demo.log4j/log4j.properties @@ -5,6 +5,8 @@ log4j.logger.org.argeo=DEBUG log4j.logger.org.argeo.slc.execution.ExecutionParameterPostProcessor=TRACE log4j.logger.org.argeo.slc.execution.ExecutionContext=DEBUG log4j.logger.org.argeo.slc.execution.SimpleExecutionSpec=DEBUG +log4j.logger.org.argeo.security.mvc.ArgeoRememberMeServices=WARN +#log4j.logger.org.argeo.server.jcr.mvc.OpenSessionInViewJcrInterceptor=TRACE #log4j.logger.org.argeo.slc.web.mvc=TRACE #log4j.logger.org.argeo.slc.jms=TRACE @@ -41,4 +43,4 @@ log4j.appender.console=org.apache.log4j.ConsoleAppender # console uses PatternLayout. log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n +log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c - [%t]%n diff --git a/modules/server/org.argeo.slc.server.jcr/META-INF/MANIFEST.MF b/modules/server/org.argeo.slc.server.jcr/META-INF/MANIFEST.MF index 602a3b83f..4202e84ad 100644 --- a/modules/server/org.argeo.slc.server.jcr/META-INF/MANIFEST.MF +++ b/modules/server/org.argeo.slc.server.jcr/META-INF/MANIFEST.MF @@ -5,6 +5,8 @@ Bundle-Name: Server JCR Import-Package: javax.jcr, org.argeo.jcr, org.argeo.server.jackrabbit, + org.argeo.server.jcr;specification-version="0.1.3.SNAPSHOT-r3478", + org.argeo.server.jcr.mvc;specification-version="0.1.3.SNAPSHOT-r3478", org.argeo.slc.core.attachment, org.argeo.slc.core.execution, org.argeo.slc.core.structure, @@ -17,7 +19,6 @@ Import-Package: javax.jcr, org.argeo.slc.dao.test.tree, org.argeo.slc.execution, org.argeo.slc.jcr.dao, - org.argeo.slc.jcr.mvc, org.argeo.slc.process, org.argeo.slc.runtime;specification-version="0.12.2.SNAPSHOT-r3445", org.argeo.slc.test, diff --git a/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr.xml b/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr.xml index ccc14fccf..4960138de 100644 --- a/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr.xml +++ b/modules/server/org.argeo.slc.server.jcr/META-INF/spring/jcr.xml @@ -11,19 +11,19 @@ - + - + - + @@ -35,17 +35,19 @@ - + - + - + + @@ -64,18 +66,20 @@ + + + - + diff --git a/modules/server/org.argeo.slc.server.jcr/repository.xml b/modules/server/org.argeo.slc.server.jcr/repository.xml index d980f8bd1..fad0835b0 100644 --- a/modules/server/org.argeo.slc.server.jcr/repository.xml +++ b/modules/server/org.argeo.slc.server.jcr/repository.xml @@ -58,15 +58,13 @@ + class="org.springframework.security.providers.jaas.SecurityContextLoginModule"> - + --> diff --git a/modules/server/org.argeo.slc.server.jms/META-INF/MANIFEST.MF b/modules/server/org.argeo.slc.server.jms/META-INF/MANIFEST.MF index 07f6bdfe6..69693adef 100644 --- a/modules/server/org.argeo.slc.server.jms/META-INF/MANIFEST.MF +++ b/modules/server/org.argeo.slc.server.jms/META-INF/MANIFEST.MF @@ -6,6 +6,8 @@ Import-Package: javax.jms, org.apache.activemq, org.apache.activemq.command, org.apache.commons.logging, + org.argeo.security;specification-version="0.1.3.SNAPSHOT-r3430", + org.argeo.security.core;specification-version="0.1.3.SNAPSHOT-r3430", org.argeo.slc.activemq, org.argeo.slc.core.attachment, org.argeo.slc.jms, diff --git a/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms-osgi.xml b/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms-osgi.xml index 2bcb5b11c..0d716087b 100644 --- a/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms-osgi.xml +++ b/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms-osgi.xml @@ -25,4 +25,6 @@ interface="org.springframework.transaction.PlatformTransactionManager" bean-name="jmsTransactionManager" /> --> + + \ No newline at end of file diff --git a/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms.xml b/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms.xml index d50dfda60..bd412575e 100644 --- a/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms.xml +++ b/modules/server/org.argeo.slc.server.jms/META-INF/spring/jms.xml @@ -90,6 +90,11 @@ + + + + + - - + + @@ -35,4 +33,6 @@ + + \ No newline at end of file diff --git a/modules/server/org.argeo.slc.server.services/META-INF/spring/services.xml b/modules/server/org.argeo.slc.server.services/META-INF/spring/services.xml index e9f1745ee..591e6a6d0 100644 --- a/modules/server/org.argeo.slc.server.services/META-INF/spring/services.xml +++ b/modules/server/org.argeo.slc.server.services/META-INF/spring/services.xml @@ -39,10 +39,10 @@ + - + diff --git a/modules/server/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF b/modules/server/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF index f981fd366..721d073f5 100644 --- a/modules/server/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF +++ b/modules/server/org.argeo.slc.webapp.war/META-INF/MANIFEST.MF @@ -8,6 +8,7 @@ Import-Package: net.sf.cglib.core, net.sf.cglib.proxy, net.sf.cglib.reflect, org.aopalliance.aop, + org.argeo.security.mvc;specification-version="0.1.3.SNAPSHOT-r3402", org.argeo.server, org.argeo.server.mvc, org.argeo.slc.build, @@ -39,10 +40,12 @@ Import-Package: net.sf.cglib.core, org.springframework.osgi.web.context.support, org.springframework.oxm, org.springframework.security, + org.springframework.security.config;specification-version="2.0.4.A", org.springframework.security.context, org.springframework.security.providers, org.springframework.security.ui, org.springframework.security.ui.webapp, + org.springframework.security.userdetails;specification-version="2.0.4.A", org.springframework.security.userdetails.memory, org.springframework.transaction, org.springframework.web.context, diff --git a/modules/server/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml b/modules/server/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml index c6c1e5534..7a450578f 100644 --- a/modules/server/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml +++ b/modules/server/org.argeo.slc.webapp.war/WEB-INF/applicationContext.xml @@ -11,14 +11,18 @@ --> - + + - + + --> @@ -26,20 +30,17 @@ class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer" lazy-init="false"> - - + + + + --> \ No newline at end of file diff --git a/modules/server/org.argeo.slc.webapp.war/WEB-INF/osgi.xml b/modules/server/org.argeo.slc.webapp.war/WEB-INF/osgi.xml index 5772d67be..ff56fc272 100644 --- a/modules/server/org.argeo.slc.webapp.war/WEB-INF/osgi.xml +++ b/modules/server/org.argeo.slc.webapp.war/WEB-INF/osgi.xml @@ -63,5 +63,7 @@ --> + \ No newline at end of file diff --git a/modules/server/org.argeo.slc.webapp.war/WEB-INF/security.xml b/modules/server/org.argeo.slc.webapp.war/WEB-INF/security.xml index 245cd0908..9ae3de4a8 100644 --- a/modules/server/org.argeo.slc.webapp.war/WEB-INF/security.xml +++ b/modules/server/org.argeo.slc.webapp.war/WEB-INF/security.xml @@ -14,8 +14,30 @@ - - + + + + + + + + + + + \ No newline at end of file diff --git a/modules/server/org.argeo.slc.webapp.war/WEB-INF/web.xml b/modules/server/org.argeo.slc.webapp.war/WEB-INF/web.xml index 483e3a2a1..ff217d5a5 100644 --- a/modules/server/org.argeo.slc.webapp.war/WEB-INF/web.xml +++ b/modules/server/org.argeo.slc.webapp.war/WEB-INF/web.xml @@ -6,26 +6,19 @@ SLC Web Application - - - + slc-service + *.service + --> + slcservice org.springframework.web.servlet.DispatcherServlet @@ -38,7 +31,7 @@ slcservice *.service - + xslt @@ -114,6 +107,11 @@ /* + + argeo.security.systemKey + argeo + + + + org.argeo.commons.security + org.argeo.security.core + ${version.argeo-commons} + + org.argeo.slc.runtime diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/AgentServiceImpl.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/AgentServiceImpl.java index a27772b26..03676bf1f 100644 --- a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/AgentServiceImpl.java +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/AgentServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.security.ArgeoSecurityService; import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao; import org.argeo.slc.runtime.SlcAgent; import org.argeo.slc.runtime.SlcAgentDescriptor; @@ -20,7 +21,9 @@ public class AgentServiceImpl implements AgentService, InitializingBean, private final SlcAgentDescriptorDao slcAgentDescriptorDao; private final SlcAgentFactory agentFactory; - private Long pingCycle = 60000l; + private ArgeoSecurityService securityService; + + private Long pingCycle = 20000l; private Boolean pingThreadActive = true; @@ -31,7 +34,9 @@ public class AgentServiceImpl implements AgentService, InitializingBean, } public void register(SlcAgentDescriptor slcAgentDescriptor) { - slcAgentDescriptorDao.create(slcAgentDescriptor); + if (slcAgentDescriptorDao.getAgentDescriptor(slcAgentDescriptor + .getUuid()) == null) + slcAgentDescriptorDao.create(slcAgentDescriptor); log.info("Registered agent #" + slcAgentDescriptor.getUuid()); } @@ -41,8 +46,15 @@ public class AgentServiceImpl implements AgentService, InitializingBean, } public void afterPropertiesSet() throws Exception { - if (pingCycle > 0) - new PingThread().start(); + // if (pingCycle > 0) + // new PingThread().start(); + if (pingCycle > 0) { + Thread authenticatedThread = new Thread(securityService + .wrapWithSystemAuthentication(new AgentsPing()), + "SLC Agents Ping"); + authenticatedThread.start(); + + } } public synchronized void destroy() throws Exception { @@ -54,13 +66,17 @@ public class AgentServiceImpl implements AgentService, InitializingBean, this.pingCycle = pingCycle; } - protected class PingThread extends Thread { + public void setSecurityService(ArgeoSecurityService securityService) { + this.securityService = securityService; + } + + protected class AgentsPing implements Runnable { public void run() { // FIXME: temporary hack so that the ping starts after the server // has been properly started. try { - Thread.sleep(5 * 1000); + Thread.sleep(10 * 1000); } catch (InterruptedException e1) { // silent } @@ -102,4 +118,5 @@ public class AgentServiceImpl implements AgentService, InitializingBean, } } + } diff --git a/runtime/org.argeo.slc.support.activemq/pom.xml b/runtime/org.argeo.slc.support.activemq/pom.xml index a71a0611f..aa4d56f81 100644 --- a/runtime/org.argeo.slc.support.activemq/pom.xml +++ b/runtime/org.argeo.slc.support.activemq/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 org.argeo.slc @@ -46,6 +47,12 @@ org.springframework.transaction + + + org.aspectj + com.springsource.org.aspectj.weaver + + javax.jms diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/AbstractSlcJcrDao.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/AbstractSlcJcrDao.java index bb752a8c1..368ef9e3c 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/AbstractSlcJcrDao.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/AbstractSlcJcrDao.java @@ -6,13 +6,12 @@ import java.util.GregorianCalendar; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.jcr.Workspace; -import javax.jcr.query.QueryManager; +import javax.jcr.query.Query; +import org.argeo.ArgeoException; import org.argeo.jcr.JcrUtils; import org.argeo.jcr.NodeMapper; import org.argeo.jcr.NodeMapperProvider; -import org.argeo.slc.SlcException; import org.argeo.slc.runtime.SlcAgentDescriptor; import org.argeo.slc.test.TestResult; import org.argeo.slc.test.TestRunDescriptor; @@ -21,8 +20,8 @@ public abstract class AbstractSlcJcrDao { private Session session; - protected Workspace workspace; - protected QueryManager queryManager; + // protected Workspace workspace; + // protected QueryManager queryManager; protected NodeMapper nodeMapper; // We inject the nodeMapperProvider that define a default node mapper as an @@ -30,13 +29,7 @@ public abstract class AbstractSlcJcrDao { private NodeMapperProvider nodeMapperProvider; public void init() { - try { - workspace = getSession().getWorkspace(); - queryManager = workspace.getQueryManager(); - nodeMapper = getNodeMapperProvider().findNodeMapper(null); - } catch (RepositoryException e) { - throw new SlcException("Cannot initialize DAO", e); - } + nodeMapper = getNodeMapperProvider().findNodeMapper(null); } public void setSession(Session session) { @@ -73,4 +66,12 @@ public abstract class AbstractSlcJcrDao { return this.nodeMapperProvider; } + protected Query createQuery(String query, String type) { + try { + return getSession().getWorkspace().getQueryManager().createQuery( + query, type); + } catch (RepositoryException e) { + throw new ArgeoException("Cannot create query " + query, e); + } + } } diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcAgentDescriptorDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcAgentDescriptorDaoJcr.java index 14c838aa7..b592f4e35 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcAgentDescriptorDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcAgentDescriptorDaoJcr.java @@ -5,6 +5,7 @@ import java.util.List; import javax.jcr.Node; import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; import javax.jcr.query.Query; import org.apache.commons.logging.Log; @@ -24,30 +25,26 @@ public class SlcAgentDescriptorDaoJcr extends AbstractSlcJcrDao implements nodeMapper.save(getSession(), basePath(slcAgentDescriptor), slcAgentDescriptor); getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot import " + slcAgentDescriptor, e); } } public SlcAgentDescriptor getAgentDescriptor(String agentId) { - try { - // TODO: optimize query - String queryString = "//agent[@uuid='" + agentId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); - Node node = JcrUtils.querySingleNode(query); - if (node == null) - return null; - return (SlcAgentDescriptor) nodeMapper.load(node); - } catch (Exception e) { - throw new SlcException("Cannot load Agent Descriptor" + agentId, e); - } + // TODO: optimize query + String queryString = "//agent[@uuid='" + agentId + "']"; + Query query = createQuery(queryString, Query.XPATH); + Node node = JcrUtils.querySingleNode(query); + if (node == null) + return null; + return (SlcAgentDescriptor) nodeMapper.load(node); } public void delete(SlcAgentDescriptor slcAgentDescriptor) { try { String queryString = "//agent[@uuid='" + slcAgentDescriptor.getUuid() + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node node = JcrUtils.querySingleNode(query); if (node != null) { node.remove(); @@ -55,7 +52,7 @@ public class SlcAgentDescriptorDaoJcr extends AbstractSlcJcrDao implements } else log.warn("No node found for agent descriptor: " + slcAgentDescriptor); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot delete " + slcAgentDescriptor, e); } @@ -65,11 +62,11 @@ public class SlcAgentDescriptorDaoJcr extends AbstractSlcJcrDao implements try { // TODO: optimize query String queryString = "//agent[@uuid='" + agentId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node node = JcrUtils.querySingleNode(query); if (node != null) node.remove(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot find AgentDescriptor" + agentId, e); } @@ -78,7 +75,7 @@ public class SlcAgentDescriptorDaoJcr extends AbstractSlcJcrDao implements public List listSlcAgentDescriptors() { try { String queryString = "//agent"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); List listSad = new ArrayList(); diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java index 135f10760..ab9a1ea97 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/SlcExecutionDaoJcr.java @@ -8,6 +8,7 @@ import java.util.List; import javax.jcr.Node; import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; import javax.jcr.query.Query; import javax.jcr.query.QueryResult; @@ -35,7 +36,7 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements try { nodeMapper.save(getSession(), basePath(slcExecution), slcExecution); getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot create slcExecution" + slcExecution, e); } @@ -53,17 +54,13 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements } public SlcExecution getSlcExecution(String uuid) { - try { - // TODO: optimize query - String queryString = "//process[@uuid='" + uuid + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); - Node node = JcrUtils.querySingleNode(query); - if (node == null) - return null; - return (SlcExecution) nodeMapper.load(node); - } catch (Exception e) { - throw new SlcException("Cannot load SLC execution " + uuid, e); - } + // TODO: optimize query + String queryString = "//process[@uuid='" + uuid + "']"; + Query query = createQuery(queryString, Query.XPATH); + Node node = JcrUtils.querySingleNode(query); + if (node == null) + return null; + return (SlcExecution) nodeMapper.load(node); } public List listSlcExecutions() { @@ -71,7 +68,7 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements // TODO: optimize query String queryString = "//process"; try { - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); QueryResult qr = query.execute(); NodeIterator iterator = qr.getNodes(); while (iterator.hasNext()) { @@ -81,7 +78,7 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements res.add(slcExecution); } return res; - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot list SLC executions", e); } } @@ -95,11 +92,11 @@ public class SlcExecutionDaoJcr extends AbstractSlcJcrDao implements String queryString = "//process[@uuid='" + slcExecution.getUuid() + "']"; try { - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node node = JcrUtils.querySingleNode(query); nodeMapper.update(node, slcExecution); getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot update " + slcExecution, e); } } diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TestRunDescriptorDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TestRunDescriptorDaoJcr.java index 44db33def..295f2536e 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TestRunDescriptorDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TestRunDescriptorDaoJcr.java @@ -1,6 +1,7 @@ package org.argeo.slc.jcr.dao; import javax.jcr.Node; +import javax.jcr.RepositoryException; import javax.jcr.query.Query; import org.argeo.jcr.JcrUtils; @@ -12,17 +13,13 @@ public class TestRunDescriptorDaoJcr extends AbstractSlcJcrDao implements TestRunDescriptorDao { public TestRunDescriptor getTestRunDescriptor(String id) { - try { - // TODO: optimize query - String queryString = "//testrun[@testRunUuid='" + id + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); - Node node = JcrUtils.querySingleNode(query); - if (node == null) - return null; - return (TestRunDescriptor) nodeMapper.load(node); - } catch (Exception e) { - throw new SlcException("Cannot load test run descriptor" + id, e); - } + // TODO: optimize query + String queryString = "//testrun[@testRunUuid='" + id + "']"; + Query query = createQuery(queryString, Query.XPATH); + Node node = JcrUtils.querySingleNode(query); + if (node == null) + return null; + return (TestRunDescriptor) nodeMapper.load(node); } public void saveOrUpdate(TestRunDescriptor testRunDescriptor) { @@ -30,7 +27,7 @@ public class TestRunDescriptorDaoJcr extends AbstractSlcJcrDao implements nodeMapper.save(getSession(), basePath(testRunDescriptor), testRunDescriptor); getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot import " + testRunDescriptor, e); } } diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java index 6daf16641..d7166cc03 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultCollectionDaoJcr.java @@ -10,9 +10,7 @@ import java.util.TreeSet; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; -import javax.jcr.query.InvalidQueryException; import javax.jcr.query.Query; -import javax.jcr.query.QueryManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -43,7 +41,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements curNode.setProperty(ttrColProp, colId); } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot create TreeTestResultCollection " + ttrCollection, e); } @@ -91,7 +89,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements } // We remove those who are not part of the collection anymore String queryString = "//*[@" + ttrColProp + "='" + colId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); log.debug("Query :" + queryString); NodeIterator ni = query.execute().getNodes(); int i = 0; @@ -113,7 +111,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements } } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot update TreeTestResultCollection " + ttrCollection, e); } @@ -180,7 +178,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements Node curNode; queryString = "//testresult[@uuid='" + resultUuid + "' and " + ttrColProp + "='" + ttrc.getId() + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); curNode = JcrUtils.querySingleNode(query); if (curNode == null) { throw new SlcException("Cannot find test result #" + resultUuid); @@ -188,7 +186,7 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements curNode.getProperty(ttrColProp).remove(); } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot remove TreeTestResult of Id " + resultUuid + " from collection " + ttrc, e); } @@ -288,9 +286,9 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements try { if (log.isDebugEnabled()) log.debug("Retrieve nodes from query: " + query); - Query q = queryManager.createQuery(query, Query.XPATH); + Query q = createQuery(query, Query.XPATH); return q.execute().getNodes(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot load nodes from query: " + query); } } @@ -298,20 +296,15 @@ public class TreeTestResultCollectionDaoJcr extends AbstractSlcJcrDao implements private String property(Node node, String key) { try { return node.getProperty(key).getString(); - } catch (Exception e) { + } catch (RepositoryException e) { log.warn("Cannot retrieve property " + key + " of node " + node, e); return null; } } private Node singleNode(String query, String queryType) { - try { - Query q = queryManager.createQuery(query, queryType); + Query q = createQuery(query, queryType); return JcrUtils.querySingleNode(q); - } catch (RepositoryException e) { - throw new SlcException("Cannot retrieve single node with query " - + query, e); - } } } diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultDaoJcr.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultDaoJcr.java index 71bdf529a..675091a5b 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultDaoJcr.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultDaoJcr.java @@ -9,6 +9,7 @@ import java.util.Map; import javax.jcr.Node; import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.query.Query; import javax.jcr.query.QueryManager; @@ -57,18 +58,12 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements } public TreeTestResult getTestResult(String uuid) { - - try { - String queryString = "//testresult[@uuid='" + uuid + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); - Node node = JcrUtils.querySingleNode(query); - if (node == null) - return null; - return (TreeTestResult) nodeMapper.load(node); - - } catch (Exception e) { - throw new SlcException("Cannot load TestResult with ID " + uuid, e); - } + String queryString = "//testresult[@uuid='" + uuid + "']"; + Query query = createQuery(queryString, Query.XPATH); + Node node = JcrUtils.querySingleNode(query); + if (node == null) + return null; + return (TreeTestResult) nodeMapper.load(node); } @@ -76,7 +71,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements try { // TODO: optimize query String queryString = "//testresult"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); QueryResult queryResult = query.execute(); NodeIterator nodeIterator = queryResult.getNodes(); if (nodeIterator.hasNext()) { @@ -94,7 +89,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements } else return null; - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot load list of TestResult ", e); } } @@ -103,7 +98,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements try { // TODO: optimize query String queryString = "//testresult" + path.getAsUniqueString(); - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); QueryResult queryResult = query.execute(); NodeIterator nodeIterator = queryResult.getNodes(); if (nodeIterator.hasNext()) { @@ -116,7 +111,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements } else return null; - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot load list of TestResult ", e); } } @@ -126,7 +121,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements try { // TODO: optimize query String queryString = "//testresult[@uuid='" + testResultId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node resNode = JcrUtils.querySingleNode(query); Calendar cal = new GregorianCalendar(); cal.setTime(closeDate); @@ -136,7 +131,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements log.debug("Cannot close because a node for test result # " + testResultId + " was not found"); getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot close TestResult " + testResultId, e); } @@ -158,7 +153,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements try { // TODO: optimize query String queryString = "//testresult[@uuid='" + testResultId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node resNode = JcrUtils.querySingleNode(query); Node curNode; @@ -251,7 +246,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot add resultPart", e); } } @@ -267,11 +262,11 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements // Check if attachment already exists String queryString = "//testresult[@uuid='" + testResultId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node resNode = JcrUtils.querySingleNode(query); queryString = ".//*[@uuid='" + attachment.getUuid() + "']"; - query = queryManager.createQuery(queryString, Query.XPATH); + query = createQuery(queryString, Query.XPATH); Node atNode = JcrUtils.querySingleNode(query); if (atNode != null) { @@ -291,7 +286,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements getSession().save(); } - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot Add Attachment to " + testResultId, e); } @@ -308,7 +303,7 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements return null; return (TreeTestResult) nodeMapper.load(node); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException("Cannot load TestResult with ID " + testResultId + " For Session " + session, e); } @@ -318,14 +313,14 @@ public class TreeTestResultDaoJcr extends AbstractSlcJcrDao implements final Map attributes) { try { String queryString = "//testresult[@uuid='" + testResultId + "']"; - Query query = queryManager.createQuery(queryString, Query.XPATH); + Query query = createQuery(queryString, Query.XPATH); Node node = JcrUtils.querySingleNode(query); for (String key : attributes.keySet()) { node.setProperty(key, attributes.get(key)); } getSession().save(); - } catch (Exception e) { + } catch (RepositoryException e) { throw new SlcException( "Cannot update Attributes on TestResult with ID " + testResultId, e); diff --git a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java index 162e5d2f7..0599731c9 100644 --- a/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java +++ b/runtime/org.argeo.slc.support.jcr/src/main/java/org/argeo/slc/jcr/dao/TreeTestResultNodeMapper.java @@ -144,10 +144,10 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper { tmpNode = tmpNode.addNode(pathes[i]); } childNode = tmpNode; - log.debug("Node created " + childNode.getPath()); + //log.debug("Node created " + childNode.getPath()); } else { childNode = node.getNode(relPath); - log.debug("Node already existing " + childNode.getPath()); + //log.debug("Node already existing " + childNode.getPath()); } List list = resultParts.get(key).getParts(); @@ -314,7 +314,7 @@ public class TreeTestResultNodeMapper extends BeanNodeMapper { se.setTags(tagMap); elements.put(tsp, se); } - log.debug("We added " + elements.size() + " elements"); + //log.debug("We added " + elements.size() + " elements"); ttr.setElements(elements);