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
# 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
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,
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,
\r
<bean id="slcAgentDescriptorDao" class="org.argeo.slc.jcr.dao.SlcAgentDescriptorDaoJcr"\r
init-method="init">\r
- <property name="session" ref="argeo.jcr.session.inMemory" />\r
+ <property name="session" ref="jcrSession" />\r
<property name="nodeMapperProvider" ref="nodeMapperProvider" />\r
</bean>\r
\r
<bean id="testRunDescriptorDao" class="org.argeo.slc.jcr.dao.TestRunDescriptorDaoJcr"\r
init-method="init">\r
- <property name="session" ref="argeo.jcr.session.inMemory" />\r
+ <property name="session" ref="jcrSession" />\r
<property name="nodeMapperProvider" ref="nodeMapperProvider" />\r
</bean>\r
\r
<bean id="slcExecutionDao" class="org.argeo.slc.jcr.dao.SlcExecutionDaoJcr"\r
init-method="init">\r
- <property name="session" ref="argeo.jcr.session.inMemory" />\r
+ <property name="session" ref="jcrSession" />\r
<property name="nodeMapperProvider" ref="nodeMapperProvider" />\r
</bean>\r
\r
\r
<bean id="testResultDao" class="org.argeo.slc.jcr.dao.TreeTestResultDaoJcr"\r
init-method="init">\r
- <property name="session" ref="argeo.jcr.session.inMemory" />\r
+ <property name="session" ref="jcrSession" />\r
<property name="nodeMapperProvider" ref="nodeMapperProvider" />\r
</bean>\r
\r
<bean id="testResultCollectionDao" class="org.argeo.slc.jcr.dao.TreeTestResultCollectionDaoJcr"\r
init-method="init">\r
- <property name="session" ref="argeo.jcr.session.inMemory" />\r
+ <property name="session" ref="jcrSession" />\r
<property name="nodeMapperProvider" ref="nodeMapperProvider" />\r
</bean>\r
\r
- <bean id="osivInterceptor" class="org.argeo.slc.jcr.mvc.OpenSessionInViewJcrInterceptor">\r
+ <bean id="osivInterceptor"\r
+ class="org.argeo.server.jcr.mvc.OpenSessionInViewJcrInterceptor">\r
+ <property name="session" ref="jcrSession" />\r
</bean>\r
\r
<!-- JCR node mappers -->\r
<bean id="treeTestResultNodeMapper" class="org.argeo.slc.jcr.dao.TreeTestResultNodeMapper">\r
<property name="classLoader" ref="bundleClassLoader" />\r
</bean>\r
+ <!--\r
\r
- <bean id="argeo.jcr.session.inMemory" factory-bean="argeo.jcr.repository.inMemory"\r
- factory-method="login" destroy-method="logout">\r
- <constructor-arg>\r
- <bean class="javax.jcr.SimpleCredentials">\r
- <constructor-arg value="demo" />\r
- <constructor-arg value="demo" />\r
- </bean>\r
- </constructor-arg>\r
+ <bean id="jcrSession" factory-bean="argeo.jcr.repository.inMemory"\r
+ factory-method="login" destroy-method="logout" scope="request">\r
+ <constructor-arg> <bean\r
+ class="org.argeo.server.jcr.security.SpringSecurityCredentials" />\r
+ </constructor-arg> </bean>\r
+ -->\r
+ <bean id="jcrSession"\r
+ class="org.argeo.jcr.ThreadBoundJcrSessionFactory">\r
+ <property name="repository" ref="jcrRepository" />\r
</bean>\r
\r
- <bean id="argeo.jcr.repository.inMemory" class="org.argeo.server.jackrabbit.JackrabbitContainer">\r
+ <bean id="jcrRepository" class="org.argeo.server.jackrabbit.JackrabbitContainer">\r
<property name="homeDirectory" value="${argeo.osgi.data.dir}/jackrabbit" />\r
<property name="configuration" value="osgibundle:/repository.xml" />\r
</bean>\r
</AccessManager>
<LoginModule
- class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">
+ class="org.springframework.security.providers.jaas.SecurityContextLoginModule">
<!--
anonymous user name ('anonymous' is the default value)
- -->
<param name="anonymousId" value="anonymous" />
- <!--
administrator user id (default value if param is missing is 'admin')
- -->
<param name="adminId" value="admin" />
+ -->
</LoginModule>
</Security>
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,
interface="org.springframework.transaction.PlatformTransactionManager"
bean-name="jmsTransactionManager" />
-->
+ <reference id="securityService" interface="org.argeo.security.ArgeoSecurityService" />
+
</beans:beans>
\ No newline at end of file
<!--
<property name="transactionManager" ref="jmsTransactionManager" />
-->
+ <property name="taskExecutor">
+ <bean class="org.argeo.security.core.SystemAuthenticatedTaskExecutor">
+ <property name="securityService" ref="securityService" />
+ </bean>
+ </property>
</bean>
<bean id="listenerAdapterCastor"
Bundle-Name: SLC Server Services
Bundle-SymbolicName: org.argeo.slc.server.services
Import-Package: org.aopalliance.aop,
+ org.argeo.security;specification-version="0.1.3.SNAPSHOT-r3430",
org.argeo.slc.core.attachment,
org.argeo.slc.dao.process,
org.argeo.slc.dao.runtime,
<service ref="testManagerService" interface="org.argeo.slc.services.TestManagerService" />
<service ref="agentService" interface="org.argeo.slc.services.AgentService" />
- <service ref="slcExecutionService"
- interface="org.argeo.slc.services.SlcExecutionService" />
- <service ref="attachmentsStorage"
- interface="org.argeo.slc.core.attachment.AttachmentsStorage" />
+ <service ref="slcExecutionService" interface="org.argeo.slc.services.SlcExecutionService" />
+ <service ref="attachmentsStorage" interface="org.argeo.slc.core.attachment.AttachmentsStorage" />
<reference interface="org.argeo.slc.dao.test.tree.TreeTestResultDao"
id="testResultDao" />
<list id="eventPublishers" interface="org.argeo.slc.msg.event.SlcEventPublisher"
cardinality="0..N" />
+ <reference id="securityService" interface="org.argeo.security.ArgeoSecurityService" />
+
</beans:beans>
\ No newline at end of file
<constructor-arg ref="slcAgentDescriptorDao" />
<constructor-arg ref="agentFactory" />
<property name="pingCycle" value="${slc.server.services.pingCycle}" />
+ <property name="securityService" ref="securityService" />
</bean>
- <bean id="slcExecutionService"
- class="org.argeo.slc.services.impl.SlcExecutionServiceImpl">
+ <bean id="slcExecutionService" class="org.argeo.slc.services.impl.SlcExecutionServiceImpl">
<constructor-arg ref="slcExecutionDao" />
</bean>
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,
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,
<import resource="classpath:/org/argeo/slc/server/spring/jmx.xml" />
-->
- <import resource="osgi.xml" />
+ <!--
+ security.xml has to be before osgi.xml, otherwise namespace parsing
+ fails
+ -->
<import resource="security.xml" />
+ <import resource="osgi.xml" />
- <!-- Hibernate instrumentation
- <bean id="osivInterceptor"
+ <!--
+ Hibernate instrumentation <bean id="osivInterceptor"
class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>-->
+ <property name="sessionFactory" ref="sessionFactory" /> </bean>
+ -->
<!-- Properties -->
class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"
lazy-init="false">
<property name="contextOverride" value="true" />
- <property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
- <!-- Web Services transactions
- <aop:config>
- <aop:pointcut id="epMethods"
- expression="execution(* org.springframework.web.servlet.mvc.Controller.handleRequest(..))" />
+ <!--
+ Web Services transactions <aop:config> <aop:pointcut id="epMethods"
+ expression="execution(*
+ org.springframework.web.servlet.mvc.Controller.handleRequest(..))" />
<aop:advisor advice-ref="epAdvice" pointcut-ref="epMethods" />
- </aop:config>
-
- <tx:advice id="epAdvice" transaction-manager="hibernateTransactionManager">
- <tx:attributes>
- <tx:method name="*" propagation="REQUIRED" />
- </tx:attributes>
- </tx:advice> -->
+ </aop:config> <tx:advice id="epAdvice"
+ transaction-manager="hibernateTransactionManager"> <tx:attributes>
+ <tx:method name="*" propagation="REQUIRED" /> </tx:attributes>
+ </tx:advice>
+ -->
</beans>
\ No newline at end of file
-->\r
<reference id="_authenticationManager"\r
interface="org.springframework.security.AuthenticationManager" />\r
+ <reference id="userDetailsService"\r
+ interface="org.springframework.security.userdetails.UserDetailsService" />\r
\r
</beans:beans>
\ No newline at end of file
</bean>
<security:http entry-point-ref="authenticationEntryPoint">
- <security:intercept-url pattern="**"
- access="ROLE_USER,ROLE_ADMIN" />
- <!-- <security:http-basic /> -->
+ <security:intercept-url pattern="/*.service"
+ access="ROLE_USER,ROLE_ADMIN,ROLE_ANONYMOUS" />
+ <security:anonymous username="anonymous"
+ granted-authority="ROLE_ANONYMOUS" />
+ <security:remember-me key="argeo" services-ref="rememberMeServices" />
</security:http>
+
+ <bean id="rememberMeServices" class="org.argeo.security.mvc.ArgeoRememberMeServices">
+ <property name="alwaysRemember" value="true" />
+ <property name="userDetailsService" ref="userDetailsService" />
+ <property name="key" value="${argeo.security.systemKey}" />
+ </bean>
+
+ <!--
+
+
+ <bean id="authenticationProcessingFilter"
+ class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
+ <security:custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
+ <property name="authenticationManager" ref="_authenticationManager" />
+ <property name="authenticationFailureUrl" value="/getCredentials.ria"
+ /> <property name="defaultTargetUrl" value="/getCredentials.ria" />
+ <property name="filterProcessesUrl" value="/login.ria" /> <property
+ name="usernameParameter" value="username" /> <property
+ name="passwordParameter" value="password" /> </bean>
+ -->
</beans>
\ No newline at end of file
<display-name>SLC Web Application</display-name>
<!-- SERVICE servlet -->
-
- <!-- refactoring with annotation
-
- <servlet>
- <servlet-name>slc-service</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextClass</param-name>
- <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
+ <!--
+ refactoring with annotation <servlet>
<servlet-name>slc-service</servlet-name>
- <url-pattern>*.service</url-pattern>
- </servlet-mapping>
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ <init-param> <param-name>contextClass</param-name>
+ <param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
+ </init-param> <load-on-startup>1</load-on-startup> </servlet>
- -->
- <servlet>
+ <servlet-mapping> <servlet-name>slc-service</servlet-name>
+ <url-pattern>*.service</url-pattern> </servlet-mapping>
+ -->
+ <servlet>
<servlet-name>slcservice</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<servlet-name>slcservice</servlet-name>
<url-pattern>*.service</url-pattern>
</servlet-mapping>
-
+
<!-- XSLT servlet -->
<servlet>
<servlet-name>xslt</servlet-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
+ <context-param>
+ <param-name>argeo.security.systemKey</param-name>
+ <param-value>argeo</param-value>
+ </context-param>
+
<!--
Log4j configContext loader config <listener>
<display-name>Log4j</display-name>
</plugins>
</build>
<dependencies>
+ <!-- Commons -->
+ <dependency>
+ <groupId>org.argeo.commons.security</groupId>
+ <artifactId>org.argeo.security.core</artifactId>
+ <version>${version.argeo-commons}</version>
+ </dependency>
+
<!-- SLC -->
<dependency>
<groupId>org.argeo.slc.runtime</groupId>
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;
private final SlcAgentDescriptorDao slcAgentDescriptorDao;
private final SlcAgentFactory agentFactory;
- private Long pingCycle = 60000l;
+ private ArgeoSecurityService securityService;
+
+ private Long pingCycle = 20000l;
private Boolean pingThreadActive = true;
}
public void register(SlcAgentDescriptor slcAgentDescriptor) {
- slcAgentDescriptorDao.create(slcAgentDescriptor);
+ if (slcAgentDescriptorDao.getAgentDescriptor(slcAgentDescriptor
+ .getUuid()) == null)
+ slcAgentDescriptorDao.create(slcAgentDescriptor);
log.info("Registered agent #" + slcAgentDescriptor.getUuid());
}
}
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 {
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
}
}
}
+
}
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.argeo.slc</groupId>
<artifactId>org.springframework.transaction</artifactId>
</dependency>
+ <!-- AOP -->
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>com.springsource.org.aspectj.weaver</artifactId>
+ </dependency>
+
<!-- JMS -->
<dependency>
<groupId>javax.jms</groupId>
\r
import javax.jcr.RepositoryException;\r
import javax.jcr.Session;\r
-import javax.jcr.Workspace;\r
-import javax.jcr.query.QueryManager;\r
+import javax.jcr.query.Query;\r
\r
+import org.argeo.ArgeoException;\r
import org.argeo.jcr.JcrUtils;\r
import org.argeo.jcr.NodeMapper;\r
import org.argeo.jcr.NodeMapperProvider;\r
-import org.argeo.slc.SlcException;\r
import org.argeo.slc.runtime.SlcAgentDescriptor;\r
import org.argeo.slc.test.TestResult;\r
import org.argeo.slc.test.TestRunDescriptor;\r
\r
private Session session;\r
\r
- protected Workspace workspace;\r
- protected QueryManager queryManager;\r
+ // protected Workspace workspace;\r
+ // protected QueryManager queryManager;\r
protected NodeMapper nodeMapper;\r
\r
// We inject the nodeMapperProvider that define a default node mapper as an\r
private NodeMapperProvider nodeMapperProvider;\r
\r
public void init() {\r
- try {\r
- workspace = getSession().getWorkspace();\r
- queryManager = workspace.getQueryManager();\r
- nodeMapper = getNodeMapperProvider().findNodeMapper(null);\r
- } catch (RepositoryException e) {\r
- throw new SlcException("Cannot initialize DAO", e);\r
- }\r
+ nodeMapper = getNodeMapperProvider().findNodeMapper(null);\r
}\r
\r
public void setSession(Session session) {\r
return this.nodeMapperProvider;\r
}\r
\r
+ protected Query createQuery(String query, String type) {\r
+ try {\r
+ return getSession().getWorkspace().getQueryManager().createQuery(\r
+ query, type);\r
+ } catch (RepositoryException e) {\r
+ throw new ArgeoException("Cannot create query " + query, e);\r
+ }\r
+ }\r
}\r
\r
import javax.jcr.Node;\r
import javax.jcr.NodeIterator;\r
+import javax.jcr.RepositoryException;\r
import javax.jcr.query.Query;\r
\r
import org.apache.commons.logging.Log;\r
nodeMapper.save(getSession(), basePath(slcAgentDescriptor),\r
slcAgentDescriptor);\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot import " + slcAgentDescriptor, e);\r
}\r
}\r
\r
public SlcAgentDescriptor getAgentDescriptor(String agentId) {\r
- try {\r
- // TODO: optimize query\r
- String queryString = "//agent[@uuid='" + agentId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
- Node node = JcrUtils.querySingleNode(query);\r
- if (node == null)\r
- return null;\r
- return (SlcAgentDescriptor) nodeMapper.load(node);\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot load Agent Descriptor" + agentId, e);\r
- }\r
+ // TODO: optimize query\r
+ String queryString = "//agent[@uuid='" + agentId + "']";\r
+ Query query = createQuery(queryString, Query.XPATH);\r
+ Node node = JcrUtils.querySingleNode(query);\r
+ if (node == null)\r
+ return null;\r
+ return (SlcAgentDescriptor) nodeMapper.load(node);\r
}\r
\r
public void delete(SlcAgentDescriptor slcAgentDescriptor) {\r
try {\r
String queryString = "//agent[@uuid='"\r
+ slcAgentDescriptor.getUuid() + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node node = JcrUtils.querySingleNode(query);\r
if (node != null) {\r
node.remove();\r
} else\r
log.warn("No node found for agent descriptor: "\r
+ slcAgentDescriptor);\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot delete " + slcAgentDescriptor, e);\r
}\r
\r
try {\r
// TODO: optimize query\r
String queryString = "//agent[@uuid='" + agentId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node node = JcrUtils.querySingleNode(query);\r
if (node != null)\r
node.remove();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot find AgentDescriptor" + agentId, e);\r
}\r
\r
public List<SlcAgentDescriptor> listSlcAgentDescriptors() {\r
try {\r
String queryString = "//agent";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
\r
List<SlcAgentDescriptor> listSad = new ArrayList<SlcAgentDescriptor>();\r
\r
import javax.jcr.Node;
import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
import javax.jcr.query.Query;
import javax.jcr.query.QueryResult;
try {
nodeMapper.save(getSession(), basePath(slcExecution), slcExecution);
getSession().save();
- } catch (Exception e) {
+ } catch (RepositoryException e) {
throw new SlcException("Cannot create slcExecution" + slcExecution,
e);
}
}
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<SlcExecution> listSlcExecutions() {
// 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()) {
res.add(slcExecution);
}
return res;
- } catch (Exception e) {
+ } catch (RepositoryException e) {
throw new SlcException("Cannot list SLC executions", e);
}
}
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);
}
}
package org.argeo.slc.jcr.dao;
import javax.jcr.Node;
+import javax.jcr.RepositoryException;
import javax.jcr.query.Query;
import org.argeo.jcr.JcrUtils;
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) {
nodeMapper.save(getSession(), basePath(testRunDescriptor),
testRunDescriptor);
getSession().save();
- } catch (Exception e) {
+ } catch (RepositoryException e) {
throw new SlcException("Cannot import " + testRunDescriptor, e);
}
}
import javax.jcr.Node;\r
import javax.jcr.NodeIterator;\r
import javax.jcr.RepositoryException;\r
-import javax.jcr.query.InvalidQueryException;\r
import javax.jcr.query.Query;\r
-import javax.jcr.query.QueryManager;\r
\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
curNode.setProperty(ttrColProp, colId);\r
}\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot create TreeTestResultCollection "\r
+ ttrCollection, e);\r
}\r
}\r
// We remove those who are not part of the collection anymore\r
String queryString = "//*[@" + ttrColProp + "='" + colId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
log.debug("Query :" + queryString);\r
NodeIterator ni = query.execute().getNodes();\r
int i = 0;\r
}\r
}\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot update TreeTestResultCollection "\r
+ ttrCollection, e);\r
}\r
Node curNode;\r
queryString = "//testresult[@uuid='" + resultUuid + "' and "\r
+ ttrColProp + "='" + ttrc.getId() + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
curNode = JcrUtils.querySingleNode(query);\r
if (curNode == null) {\r
throw new SlcException("Cannot find test result #" + resultUuid);\r
curNode.getProperty(ttrColProp).remove();\r
}\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot remove TreeTestResult of Id "\r
+ resultUuid + " from collection " + ttrc, e);\r
}\r
try {\r
if (log.isDebugEnabled())\r
log.debug("Retrieve nodes from query: " + query);\r
- Query q = queryManager.createQuery(query, Query.XPATH);\r
+ Query q = createQuery(query, Query.XPATH);\r
return q.execute().getNodes();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot load nodes from query: " + query);\r
}\r
}\r
private String property(Node node, String key) {\r
try {\r
return node.getProperty(key).getString();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
log.warn("Cannot retrieve property " + key + " of node " + node, e);\r
return null;\r
}\r
}\r
\r
private Node singleNode(String query, String queryType) {\r
- try {\r
- Query q = queryManager.createQuery(query, queryType);\r
+ Query q = createQuery(query, queryType);\r
return JcrUtils.querySingleNode(q);\r
- } catch (RepositoryException e) {\r
- throw new SlcException("Cannot retrieve single node with query "\r
- + query, e);\r
- }\r
}\r
\r
}\r
\r
import javax.jcr.Node;\r
import javax.jcr.NodeIterator;\r
+import javax.jcr.RepositoryException;\r
import javax.jcr.Session;\r
import javax.jcr.query.Query;\r
import javax.jcr.query.QueryManager;\r
}\r
\r
public TreeTestResult getTestResult(String uuid) {\r
-\r
- try {\r
- String queryString = "//testresult[@uuid='" + uuid + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
- Node node = JcrUtils.querySingleNode(query);\r
- if (node == null)\r
- return null;\r
- return (TreeTestResult) nodeMapper.load(node);\r
-\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot load TestResult with ID " + uuid, e);\r
- }\r
+ String queryString = "//testresult[@uuid='" + uuid + "']";\r
+ Query query = createQuery(queryString, Query.XPATH);\r
+ Node node = JcrUtils.querySingleNode(query);\r
+ if (node == null)\r
+ return null;\r
+ return (TreeTestResult) nodeMapper.load(node);\r
\r
}\r
\r
try {\r
// TODO: optimize query\r
String queryString = "//testresult";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
QueryResult queryResult = query.execute();\r
NodeIterator nodeIterator = queryResult.getNodes();\r
if (nodeIterator.hasNext()) {\r
} else\r
return null;\r
\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot load list of TestResult ", e);\r
}\r
}\r
try {\r
// TODO: optimize query\r
String queryString = "//testresult" + path.getAsUniqueString();\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
QueryResult queryResult = query.execute();\r
NodeIterator nodeIterator = queryResult.getNodes();\r
if (nodeIterator.hasNext()) {\r
} else\r
return null;\r
\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot load list of TestResult ", e);\r
}\r
}\r
try {\r
// TODO: optimize query\r
String queryString = "//testresult[@uuid='" + testResultId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node resNode = JcrUtils.querySingleNode(query);\r
Calendar cal = new GregorianCalendar();\r
cal.setTime(closeDate);\r
log.debug("Cannot close because a node for test result # "\r
+ testResultId + " was not found");\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot close TestResult " + testResultId, e);\r
}\r
\r
try {\r
// TODO: optimize query\r
String queryString = "//testresult[@uuid='" + testResultId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node resNode = JcrUtils.querySingleNode(query);\r
\r
Node curNode;\r
}\r
getSession().save();\r
\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot add resultPart", e);\r
}\r
}\r
\r
// Check if attachment already exists\r
String queryString = "//testresult[@uuid='" + testResultId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node resNode = JcrUtils.querySingleNode(query);\r
\r
queryString = ".//*[@uuid='" + attachment.getUuid() + "']";\r
- query = queryManager.createQuery(queryString, Query.XPATH);\r
+ query = createQuery(queryString, Query.XPATH);\r
Node atNode = JcrUtils.querySingleNode(query);\r
\r
if (atNode != null) {\r
getSession().save();\r
}\r
\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot Add Attachment to " + testResultId,\r
e);\r
}\r
return null;\r
return (TreeTestResult) nodeMapper.load(node);\r
\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException("Cannot load TestResult with ID "\r
+ testResultId + " For Session " + session, e);\r
}\r
final Map<String, String> attributes) {\r
try {\r
String queryString = "//testresult[@uuid='" + testResultId + "']";\r
- Query query = queryManager.createQuery(queryString, Query.XPATH);\r
+ Query query = createQuery(queryString, Query.XPATH);\r
Node node = JcrUtils.querySingleNode(query);\r
\r
for (String key : attributes.keySet()) {\r
node.setProperty(key, attributes.get(key));\r
}\r
getSession().save();\r
- } catch (Exception e) {\r
+ } catch (RepositoryException e) {\r
throw new SlcException(\r
"Cannot update Attributes on TestResult with ID "\r
+ testResultId, e);\r
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<TestResultPart> list = resultParts.get(key).getParts();
se.setTags(tagMap);
elements.put(tsp, se);
}
- log.debug("We added " + elements.size() + " elements");
+ //log.debug("We added " + elements.size() + " elements");
ttr.setElements(elements);