<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="output" path="target/classes"/>
-#Wed Sep 22 12:21:25 CEST 2010
+#Tue Sep 28 09:36:19 CEST 2010
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.5
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.argeo.slc.client.aspects,
- org.argeo.slc.client.core
+ org.argeo.slc.client.contentprovider
+Require-Bundle: org.springframework.orm;bundle-version="2.5.6",
+ org.eclipse.ui;resolution:=optional
Import-Package: org.apache.commons.io;version="1.4.0",
org.apache.commons.logging;version="1.1.1",
+ org.argeo.eclipse.spring,
+ org.argeo.eclipse.ui,
org.argeo.slc.dao.process,
org.argeo.slc.process,
org.aspectj.lang,
org.hibernate.classic,
org.springframework.beans.factory;version="2.5.6.SEC01",
org.springframework.transaction;version="2.5.6.SEC01"
-Require-Bundle: org.springframework.orm;bundle-version="2.5.6"
package org.argeo.slc.client.aspects;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.hibernate.LockMode;
import org.hibernate.SessionFactory;
-import org.springframework.orm.hibernate3.HibernateTransactionManager;
-import org.springframework.transaction.PlatformTransactionManager;
+
+/**
+ * Intercepts all calls to get methods of the
+ * org.argeo.slc.client.contentprovider package to insure that objects that are
+ * to be rendered in views are correctly linked to the hibernate session.
+ *
+ * @author bsinou
+ *
+ */
@Aspect
public class ContentProviderAspect {
- private final static Log log = LogFactory
- .getLog(ContentProviderAspect.class);
+ // private final static Log log = LogFactory
+ // .getLog(ContentProviderAspect.class);
private SessionFactory sessionFactory;
- private HibernateTransactionManager transactionManager;
// Advices
- @Around("execution (* org.argeo.slc.client.core.*.get*(Object, int))")
+ @Around("execution (* org.argeo.slc.client.contentprovider.*.get*(Object, int))")
public Object aroundGetVariable(ProceedingJoinPoint thisJoinPoint)
throws Throwable {
- // log.debug("***************** IN THE ASPECT. Before proceed");
- // log.debug("We have an open session : "
- // + sessionFactory.getCurrentSession().isOpen());
- // log.debug("Current transaction is active : "
- // + sessionFactory.getCurrentSession().getTransaction()
- // .isActive());
-
Object o = thisJoinPoint.getArgs()[0];
+
+ // TODO : find a mean to handle session & manager with txManager
+ // in order to not have to re-begin a transaction here.
sessionFactory.getCurrentSession().beginTransaction();
+
// reassociate a transient instance with a session (LockMode.NONE).
sessionFactory.getCurrentSession().lock(o, LockMode.NONE);
+
Object result = thisJoinPoint.proceed();
sessionFactory.getCurrentSession().getTransaction().commit();
-
- // log.debug("**************** IN THE ASPECT. After proceed");
return result;
}
- // @Before("methodeTrace()")
- // public void log(JoinPoint joinPoint) {
- // log.info("Before calling " + joinPoint.getSignature().getName());
- // log.debug("SessionFactory " + sessionFactory.toString());
- // }
-
- // @Around("methodeTrace()")
- // public void proxyCalling(JoinPoint joinPoint) {
- // log.info("*********** We Call the method "
- // + joinPoint.getSignature().getName());
- // }
- //
- // // Pointcuts
- // @Pointcut("execution(* org.argeo.slc.client.core.ProcessListTableContent.set*(..))")
- // public void methodeTrace() {
- // }
-
// IoC
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
-
- public void setTransactionManager(
- PlatformTransactionManager transactionManager) {
- if (transactionManager instanceof HibernateTransactionManager)
- this.transactionManager = (HibernateTransactionManager) transactionManager;
- }
}
--- /dev/null
+package org.argeo.slc.client.contentprovider;
+
+import java.util.List;
+
+import org.argeo.slc.process.SlcExecution;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * @author bsinou
+ *
+ * Fill ProcessList view. Deported in an external bundle so that main
+ * slc ui bundle does not depend on DB implementation.
+ */
+public class ProcessListStructuredContentProvider implements
+ IStructuredContentProvider {
+
+ public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
+ }
+
+ public void dispose() {
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object obj) {
+ if (obj instanceof List) {
+ return ((List<SlcExecution>) obj).toArray();
+ } else {
+ return new Object[0];
+ }
+ }
+
+ public String getColumnText(Object obj, int index) {
+ return null;
+ }
+
+}
--- /dev/null
+package org.argeo.slc.client.contentprovider;
+
+import org.argeo.slc.process.SlcExecution;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * @author bsinou
+ *
+ * Fill ProcessList view. Deported in an external bundle so that main
+ * slc ui bundle does not depend on DB implementation.
+ */
+public class ProcessListTableLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+ public String getColumnText(Object obj, int index) {
+ // log.debug(sessionFactory.getClass().toString());
+
+ SlcExecution se = (SlcExecution) obj;
+ switch (index) {
+
+ case 0:
+ return getText(se.getStartDate());
+ case 1:
+ return se.getHost();
+ case 2:
+ return se.getUuid();
+ case 3:
+ return se.currentStep().getType();
+ }
+ return getText(obj);
+ }
+
+ public Image getColumnImage(Object obj, int index) {
+ return null;
+ }
+
+}
+++ /dev/null
-package org.argeo.slc.client.core;
-
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.dao.process.SlcExecutionDao;
-import org.argeo.slc.process.SlcExecution;
-
-public class ProcessListTableContent implements TableContent {
- private static final Log log = LogFactory
- .getLog(ProcessListTableContent.class);
-
- // IoC
- private SlcExecutionDao slcExecutionDao;
-
- @Override
- public SlcExecution getLine(int index) {
- return slcExecutionDao.listSlcExecutions().get(index);
- // return slcExecutions.get(index);
- }
-
- @Override
- // public synchronized String getLabel(Object o, int i) {
- public String getLabel(Object o, int i) {
- SlcExecution se = (SlcExecution) o;
-
- switch (i) {
-
- case 0:
- return se.getStartDate().toString();
- // Workaround to insure that we have no Lazy Init PB
- // return
- // slcExecutionDao.getSlcExecution(se.getUuid()).getStartDate()
- // .toString();
- case 1:
- return se.getHost();
- case 2:
- return se.getUuid();
- case 3:
- return se.getStatus();
- }
- return null;
- }
-
- public synchronized List<SlcExecution> getContent() {
- return slcExecutionDao.listSlcExecutions();
- // return this.slcExecutions;
- }
-
- // IoC
- public void setSlcExecutionDao(SlcExecutionDao slcExecutionDao) {
- this.slcExecutionDao = slcExecutionDao;
- }
-}
+++ /dev/null
-package org.argeo.slc.client.core;
-
-import java.util.List;
-
-import org.argeo.slc.process.SlcExecution;
-
-public interface TableContent {
-
- public Object getLine(int index);
-
- public String getLabel(Object o, int index);
-
- public List<SlcExecution> getContent();
-}
Bundle-Name: Hibernate Interface for RCP Client
Bundle-SymbolicName: org.argeo.slc.client.hibernate
Bundle-Version: 1.0.0.qualifier
+Require-Bundle: org.eclipse.ui;resolution:=optional
Import-Package: org.aopalliance.aop;version="1.0.0",
org.argeo.slc.client.aspects,
- org.argeo.slc.client.core,
+ org.argeo.slc.client.contentprovider,
org.argeo.slc.dao.process;version="0.13.0.SNAPSHOT-r3777",
org.hibernate,
org.hibernate.classic,
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
- xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
- http://www.springframework.org/schema/beans \r
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
- <!-- References Needed -->\r
- <reference id="slcExecutionDao" interface="org.argeo.slc.dao.process.SlcExecutionDao"\r
- context-class-loader="service-provider" />\r
-\r
- <!-- Services exposed by the bundle -->\r
- <service ref="processListTableContent" interface="org.argeo.slc.client.core.TableContent" />\r
-</beans:beans>
\ No newline at end of file
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
">
- <bean id="processListTableContent" class="org.argeo.slc.client.core.ProcessListTableContent">
- <property name="slcExecutionDao" ref="slcExecutionDao" />
- </bean>
+ <bean id="processListTableLabelProvider"
+ class="org.argeo.slc.client.contentprovider.ProcessListTableLabelProvider" />
+ <bean id="processListStructuredContentProvider"
+ class="org.argeo.slc.client.contentprovider.ProcessListStructuredContentProvider" />
- <!-- Events -->
+ <!-- Aspects -->
<aop:aspectj-autoproxy />
<bean id="contentProviderAspect" class="org.argeo.slc.client.aspects.ContentProviderAspect">
<property name="sessionFactory" ref="sessionFactory" />
- <property name="transactionManager" ref="transactionManager" />
+ <!-- <property name="transactionManager" ref="transactionManager" /> -->
</bean>
</beans>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+ xsi:schemaLocation="http://www.springframework.org/schema/osgi \r
+ http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+ http://www.springframework.org/schema/beans \r
+ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+ <beans:description>\r
+ This bundle is the bridge between the slc RCP\r
+ client\r
+ and hibernate implementation of the model.\r
+\r
+ Corresponding java classes\r
+ are implemented\r
+ in the org.client.slc.client.core bundle.\r
+ </beans:description>\r
+\r
+ <!-- Services exposed by the bundle -->\r
+ <service ref="processListTableLabelProvider" interface="org.eclipse.jface.viewers.ITableLabelProvider" />\r
+ <service ref="processListStructuredContentProvider"\r
+ interface="org.eclipse.jface.viewers.IStructuredContentProvider" />\r
+\r
+\r
+ <!-- References Needed -->\r
+ <reference id="slcExecutionDao" interface="org.argeo.slc.dao.process.SlcExecutionDao"\r
+ context-class-loader="service-provider" />\r
+\r
+ <reference id="transactionManager"\r
+ interface="org.springframework.transaction.PlatformTransactionManager"\r
+ context-class-loader="service-provider" />\r
+\r
+ <reference id="sessionFactory" interface="org.hibernate.SessionFactory" />\r
+\r
+\r
+</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
- xsi:schemaLocation="http://www.springframework.org/schema/osgi
- http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
- <reference id="transactionManager"
- interface="org.springframework.transaction.PlatformTransactionManager"
- context-class-loader="service-provider" />
- <reference id="sessionFactory" interface="org.hibernate.SessionFactory" />
-</beans:beans>
\ No newline at end of file
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- AOP Configuration -->
- <aop:config>
- <aop:pointcut id="tableContentMethods"
- expression="execution(*
- org.argeo.slc.client.core.TableContent.*(..))" />
- <aop:advisor advice-ref="daoAdvice" pointcut-ref="tableContentMethods" />
- </aop:config>
- <tx:advice id="daoAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="get*" propagation="REQUIRED" read-only="true" />
- <tx:method name="*" propagation="REQUIRED" />
- </tx:attributes>
- </tx:advice>
+ <!-- <aop:config> <aop:pointcut id="tableContentMethods" expression="execution(*
+ org.argeo.slc.client.core.TableContent.*(..))" /> <aop:advisor advice-ref="daoAdvice"
+ pointcut-ref="tableContentMethods" /> </aop:config> <tx:advice id="daoAdvice"
+ transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*"
+ propagation="REQUIRED" read-only="true" /> <tx:method name="*" propagation="REQUIRED"
+ /> </tx:attributes> </tx:advice> -->
</beans>
\ No newline at end of file
org.argeo.eclipse.ui,
org.argeo.slc,
org.argeo.slc.build;version="0.13.0.SNAPSHOT-r3685",
- org.argeo.slc.client.core,
org.argeo.slc.core.attachment,
org.argeo.slc.core.runtime;version="0.13.0.SNAPSHOT-r3701",
org.argeo.slc.core.test.tree;version="0.13.0.SNAPSHOT-r3768",
+ org.argeo.slc.dao.process,
org.argeo.slc.dao.test.tree;version="0.13.0.SNAPSHOT-r3768",
org.argeo.slc.deploy;version="0.13.0.SNAPSHOT-r3724",
org.argeo.slc.execution;version="0.13.0.SNAPSHOT-r3685",
org.springframework.beans.factory,
org.springframework.context,
org.springframework.core.io.support
+
http://www.springframework.org/schema/beans \r
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
\r
+ <beans:description> Implements SLC specific rcp uis.\r
+ </beans:description>\r
+\r
+ <!-- Services exposed by the current bundle -->\r
+\r
+ <!-- Listeners used by the execution modules -->\r
+ <service ref="testManagerServiceAdapter"\r
+ interface="org.argeo.slc.core.test.tree.TreeTestResultListener" />\r
+ <service ref="slcExecutionServiceAdapter" interface="org.argeo.slc.process.SlcExecutionNotifier" />\r
+\r
+\r
+ <!-- References needed by the current bundle -->\r
+ <reference id="slcExecutionService" interface="org.argeo.slc.services.SlcExecutionService" />\r
+ <reference id="testManagerService" interface="org.argeo.slc.services.TestManagerService" />\r
+\r
<!-- DAO -->\r
<reference id="testResultCollectionDao"\r
interface="org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao"\r
context-class-loader="service-provider" />\r
+ <reference id="slcExecutionDao" interface="org.argeo.slc.dao.process.SlcExecutionDao"\r
+ context-class-loader="service-provider" />\r
\r
- <!-- Services -->\r
- <reference id="slcExecutionService" interface="org.argeo.slc.services.SlcExecutionService" />\r
- <reference id="testManagerService" interface="org.argeo.slc.services.TestManagerService" />\r
-\r
- <!-- Session (to insure transactional management) -->\r
- <!-- <reference id="sessionFactory" interface="org.hibernate.SessionFactory" \r
- /> -->\r
+ <!-- Content providers are deported in an other bundle for UI not to depend \r
+ on DB used implementation -->\r
+ <reference id="processListTableLabelProvider" interface="org.eclipse.jface.viewers.ITableLabelProvider"\r
+ bean-name="processListTableLabelProvider" />\r
+ <reference id="processListStructuredContentProvider"\r
+ interface="org.eclipse.jface.viewers.IStructuredContentProvider"\r
+ bean-name="processListStructuredContentProvider" />\r
\r
<!-- TODO : what is it for ? -->\r
<list id="slcAgents" interface="org.argeo.slc.runtime.SlcAgent" />\r
-\r
- <!-- Proxy object to try solving transaction & session problem caused by \r
- using hibernate -->\r
- <reference id="processListTableContent" interface="org.argeo.slc.client.core.TableContent" />\r
-\r
- <!-- Listeners used by the execution modules -->\r
- <service ref="testManagerServiceAdapter"\r
- interface="org.argeo.slc.core.test.tree.TreeTestResultListener" />\r
- <service ref="slcExecutionServiceAdapter" interface="org.argeo.slc.process.SlcExecutionNotifier" />\r
-\r
</beans:beans>
\ No newline at end of file
<bean id="org.argeo.slc.client.ui.processListView" class="org.argeo.slc.client.ui.views.ProcessListView"
scope="prototype">
- <property name="tableContent" ref="processListTableContent" />
- <!-- <property name="sessionFactory" ref="sessionFactory" /> -->
+ <property name="slcExecutionDao" ref="slcExecutionDao" />
+ <property name="structuredContentProvider" ref="processListStructuredContentProvider" />
+ <property name="tableLabelProvider" ref="processListTableLabelProvider" />
</bean>
<bean id="org.argeo.slc.client.ui.processBuilderView" class="org.argeo.slc.client.ui.views.ProcessBuilderView"
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import java.util.List;
-
-import org.argeo.slc.core.test.tree.ResultAttributes;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-public class ProcessListContentProvider implements IStructuredContentProvider {
-
- public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
- }
-
- public void dispose() {
- }
-
- @SuppressWarnings("unchecked")
- public Object[] getElements(Object obj) {
- if (obj instanceof List) {
- return ((List<ResultAttributes>) obj).toArray();
- } else {
- return new Object[0];
- }
- }
-
- public String getColumnText(Object obj, int index) {
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import org.argeo.slc.process.SlcExecution;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-public class ProcessListTableLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- public String getColumnText(Object obj, int index) {
- // log.debug(sessionFactory.getClass().toString());
-
- SlcExecution se = (SlcExecution) obj;
- switch (index) {
-
- case 0:
- return getText(se.getStartDate());
- case 1:
- return se.getHost();
- case 2:
- return se.getUuid();
- case 3:
- return se.currentStep().getType();
- }
- return getText(obj);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return null;
- }
-
-}
package org.argeo.slc.client.ui.views;
-import java.util.List;
-
-import org.argeo.slc.client.core.TableContent;
-import org.argeo.slc.process.SlcExecution;
+import org.argeo.slc.dao.process.SlcExecutionDao;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
private TableViewer viewer;
// IoC
- private TableContent tableContent;
+ private SlcExecutionDao slcExecutionDao;
+ private ITableLabelProvider tableLabelProvider;
+ private IStructuredContentProvider structuredContentProvider;
public void createPartControl(Composite parent) {
Table table = createTable(parent);
viewer = new TableViewer(table);
- viewer.setLabelProvider(new ViewLabelProvider());
- viewer.setContentProvider(new ViewContentProvider());
-
+ viewer.setLabelProvider(tableLabelProvider);
+ viewer.setContentProvider(structuredContentProvider);
viewer.setInput(getViewSite());
}
return table;
}
- protected static class ViewContentProvider implements
- IStructuredContentProvider {
-
- public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
- }
-
- public void dispose() {
- }
-
- @SuppressWarnings("unchecked")
- public Object[] getElements(Object obj) {
- if (obj instanceof List) {
- return ((List<SlcExecution>) obj).toArray();
- } else {
- return new Object[0];
- }
- }
- }
-
- protected class ViewLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- public String getColumnText(Object obj, int index) {
- return tableContent.getLabel(obj, index);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return null;
- }
-
- }
-
public void setFocus() {
viewer.getControl().setFocus();
}
public void retrieveResults() {
- viewer.setInput(tableContent.getContent());
+ viewer.setInput(slcExecutionDao.listSlcExecutions());
}
// IoC
- public void setTableContent(TableContent tableContent) {
- this.tableContent = tableContent;
+ public void setSlcExecutionDao(SlcExecutionDao slcExecutionDao) {
+ this.slcExecutionDao = slcExecutionDao;
+ }
+
+ public void setTableLabelProvider(ITableLabelProvider tableLabelProvider) {
+ this.tableLabelProvider = tableLabelProvider;
+ }
+
+ public void setStructuredContentProvider(
+ IStructuredContentProvider structuredContentProvider) {
+ this.structuredContentProvider = structuredContentProvider;
}
}
\ No newline at end of file