You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/23 11:09:38 UTC
[03/54] [partial] incubator-taverna-engine git commit: Revert
"temporarily empty repository"
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/AppContextSetup.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/AppContextSetup.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/AppContextSetup.java
new file mode 100644
index 0000000..62b6427
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/AppContextSetup.java
@@ -0,0 +1,31 @@
+package net.sf.taverna.t2.reference.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class AppContextSetup {
+ public static List<ApplicationContext> contextList;
+
+ public static void setup() throws Exception {
+ if (contextList == null){
+
+ contextList = new ArrayList<ApplicationContext>();
+ //Add all three contexts for storing referenced data
+ contextList = new ArrayList<ApplicationContext>();
+ ApplicationContext context = null;
+ context = new ClassPathXmlApplicationContext(
+ "vanillaHibernateAppContext.xml"); // hibernate context
+ contextList.add(context);
+ context = new ClassPathXmlApplicationContext(
+ "vanillaInMemoryAppContext.xml");
+ contextList.add(context); // in memory
+ context = new ClassPathXmlApplicationContext(
+ "vanillaHibernateTransactionalAppContext.xml");
+ contextList.add(context); // transactional hibernate context
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/DatabaseSetupTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/DatabaseSetupTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/DatabaseSetupTest.java
new file mode 100644
index 0000000..24f1ce9
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/DatabaseSetupTest.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.reference.impl;
+
+import java.util.HashSet;
+
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ListDao;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.ReferenceSetDao;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.T2ReferenceType;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * Tests initialization of the Derby database and Hibernate ORM system
+ *
+ * @author Tom Oinn
+ */
+public class DatabaseSetupTest {
+
+ @Before
+ public void setup() throws Exception {
+ AppContextSetup.setup();
+ }
+
+
+ @Test
+ public void testListStorage() {
+ ApplicationContext context = AppContextSetup.contextList.get(0); // Hibernate context
+ ListDao o = (ListDao) context.getBean("testListDao");
+ T2ReferenceImpl listReference = new T2ReferenceImpl();
+ listReference.setContainsErrors(false);
+ listReference.setDepth(1);
+ listReference.setLocalPart("list1");
+ listReference.setNamespacePart("testNamespace");
+ listReference.setReferenceType(T2ReferenceType.IdentifiedList);
+
+ T2ReferenceListImpl l = new T2ReferenceListImpl();
+
+ T2ReferenceImpl itemId1 = new T2ReferenceImpl();
+ itemId1.setNamespacePart("testNamespace");
+ itemId1.setLocalPart("item1");
+ T2ReferenceImpl itemId2 = new T2ReferenceImpl();
+ itemId2.setNamespacePart("testNamespace");
+ itemId2.setLocalPart("item2");
+
+ l.add(itemId1);
+ l.add(itemId2);
+
+ l.setTypedId(listReference);
+
+ System.out.println(l);
+
+ o.store(l);
+
+ T2ReferenceImpl listReference2 = new T2ReferenceImpl();
+ listReference2.setContainsErrors(false);
+ listReference2.setDepth(1);
+ listReference2.setLocalPart("list1");
+ listReference2.setNamespacePart("testNamespace");
+ listReference2.setReferenceType(T2ReferenceType.IdentifiedList);
+
+ System.out.println(o.get(listReference2));
+
+ }
+
+ @SuppressWarnings("serial")
+ @Test
+ public void testDatabaseReadWriteWithoutPlugins() {
+ ApplicationContext context = AppContextSetup.contextList.get(0); // Hibernate context
+ ReferenceSetDao o = (ReferenceSetDao) context
+ .getBean("testDao");
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setNamespacePart("testNamespace");
+ id.setLocalPart("testLocal");
+ ReferenceSetImpl rs = new ReferenceSetImpl(
+ new HashSet<ExternalReferenceSPI>(), id);
+ o.store(rs);
+
+
+ // Retrieve with a new instance of an anonymous subclass of
+ // ReferenceSetT2ReferenceImpl, just to check that hibernate can cope
+ // with this. It can, but this *must* be a subclass of the registered
+ // component type, which means we need to modify the component type to
+ // be the fully generic T2Reference with all fields accessed via
+ // properties.
+ T2Reference newReference = new T2ReferenceImpl() {
+
+ @Override
+ public boolean containsErrors() {
+ return false;
+ }
+
+ @Override
+ public int getDepth() {
+ return 0;
+ }
+
+ @Override
+ public String getLocalPart() {
+ return "testLocal";
+ }
+
+ @Override
+ public String getNamespacePart() {
+ return "testNamespace";
+ }
+
+ };
+
+
+ ReferenceSet returnedset = o.get(newReference);
+ Assert.assertNotNull(returnedset.getId());
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentDaoTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentDaoTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentDaoTest.java
new file mode 100644
index 0000000..d5d47af
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentDaoTest.java
@@ -0,0 +1,151 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import net.sf.taverna.t2.reference.ErrorDocumentDao;
+import net.sf.taverna.t2.reference.T2ReferenceType;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+
+public class ErrorDocumentDaoTest {
+
+ @Before
+ public void setup() throws Exception {
+ AppContextSetup.setup();
+ }
+
+ @Test
+ public void testStore() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+
+ ErrorDocumentDao dao = (ErrorDocumentDao) context.getBean("testErrorDao");
+ ErrorDocumentImpl doc = new ErrorDocumentImpl();
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setReferenceType(T2ReferenceType.ErrorDocument);
+ id.setDepth(0);
+ id.setContainsErrors(true);
+ id.setNamespacePart("testNamespace0");
+ id.setLocalPart("testLocal0");
+
+ doc.setExceptionMessage("An exception");
+
+ T2ReferenceImpl typedId = T2ReferenceImpl.getAsImpl(id);
+
+ doc.setTypedId(typedId);
+
+ dao.store(doc);
+ assertNotNull(dao.get(id));
+ }
+ }
+
+ /**
+ * Tests that .get returns null when its missing, rather than throw an exception
+ */
+ @Test
+ public void getMissingItemReturnsNull() {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ErrorDocumentDao dao = (ErrorDocumentDao) context.getBean("testErrorDao");
+ ErrorDocumentImpl doc = new ErrorDocumentImpl();
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setReferenceType(T2ReferenceType.ErrorDocument);
+ id.setDepth(0);
+ id.setContainsErrors(true);
+ id.setNamespacePart("testNamespace1");
+ id.setLocalPart("testLocal1");
+
+ doc.setExceptionMessage("An exception");
+
+ T2ReferenceImpl typedId = T2ReferenceImpl.getAsImpl(id);
+
+ doc.setTypedId(typedId);
+ assertNull(dao.get(id));
+ }
+ }
+
+ @Test
+ public void testDelete() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+
+ ErrorDocumentDao dao = (ErrorDocumentDao) context.getBean("testErrorDao");
+ ErrorDocumentImpl doc = new ErrorDocumentImpl();
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setReferenceType(T2ReferenceType.ErrorDocument);
+ id.setDepth(0);
+ id.setContainsErrors(true);
+ id.setNamespacePart("testNamespace2");
+ id.setLocalPart("testLocal2");
+
+ doc.setExceptionMessage("An exception");
+
+ T2ReferenceImpl typedId = T2ReferenceImpl.getAsImpl(id);
+
+ doc.setTypedId(typedId);
+
+ dao.store(doc);
+ assertNotNull(dao.get(id));
+
+ assertTrue(dao.delete(doc));
+ assertNull(dao.get(id));
+ }
+
+ }
+
+ @Test
+ public void testDeleteErrorDocumentsForWFRun() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+
+ ErrorDocumentDao dao = (ErrorDocumentDao) context.getBean("testErrorDao");
+
+ ErrorDocumentImpl doc1 = new ErrorDocumentImpl();
+ T2ReferenceImpl id1 = new T2ReferenceImpl();
+ id1.setReferenceType(T2ReferenceType.ErrorDocument);
+ id1.setDepth(0);
+ id1.setContainsErrors(true);
+ id1.setNamespacePart("wfRunErrorDocTest1");
+ id1.setLocalPart("testLocal1");
+ doc1.setExceptionMessage("An exception 1");
+ T2ReferenceImpl typedId1 = T2ReferenceImpl.getAsImpl(id1);
+ doc1.setTypedId(typedId1);
+ dao.store(doc1);
+ assertNotNull(dao.get(id1));
+
+ ErrorDocumentImpl doc2 = new ErrorDocumentImpl();
+ T2ReferenceImpl id2 = new T2ReferenceImpl();
+ id2.setReferenceType(T2ReferenceType.ErrorDocument);
+ id2.setDepth(0);
+ id2.setContainsErrors(true);
+ id2.setNamespacePart("wfRunErrorDocTest1");
+ id2.setLocalPart("testLocal2");
+ doc2.setExceptionMessage("An exception 2");
+ T2ReferenceImpl typedId2 = T2ReferenceImpl.getAsImpl(id2);
+ doc2.setTypedId(typedId2);
+ dao.store(doc2);
+ assertNotNull(dao.get(id2));
+
+ ErrorDocumentImpl doc3 = new ErrorDocumentImpl();
+ T2ReferenceImpl id3 = new T2ReferenceImpl();
+ id3.setReferenceType(T2ReferenceType.ErrorDocument);
+ id3.setDepth(0);
+ id3.setContainsErrors(true);
+ id3.setNamespacePart("wfRunErrorDocTest2");
+ id3.setLocalPart("testLocal3");
+ doc3.setExceptionMessage("An exception 3");
+ T2ReferenceImpl typedId3 = T2ReferenceImpl.getAsImpl(id3);
+ doc3.setTypedId(typedId3);
+ dao.store(doc3);
+ assertNotNull(dao.get(id3));
+
+ dao.deleteErrorDocumentsForWFRun("wfRunErrorDocTest1");
+
+ assertNull(dao.get(id1));
+ assertNull(dao.get(id2));
+ assertNotNull(dao.get(id3));
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentServiceTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentServiceTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentServiceTest.java
new file mode 100644
index 0000000..e035922
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ErrorDocumentServiceTest.java
@@ -0,0 +1,88 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.reference.ErrorDocument;
+import net.sf.taverna.t2.reference.ErrorDocumentDao;
+import net.sf.taverna.t2.reference.WorkflowRunIdEntity;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ErrorDocumentServiceTest {
+
+ private List<ErrorDocumentServiceImpl> serviceList = new ArrayList<ErrorDocumentServiceImpl>();
+
+ @Before
+ public void setup() throws Exception {
+
+ AppContextSetup.setup();
+
+ ErrorDocumentServiceImpl service = null;
+
+ service = new ErrorDocumentServiceImpl();
+ service.setErrorDao((ErrorDocumentDao)AppContextSetup.contextList.get(0).getBean("testErrorDao")); // hiberate
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ service = new ErrorDocumentServiceImpl();
+ service.setErrorDao((ErrorDocumentDao)AppContextSetup.contextList.get(1).getBean("testErrorDao")); // in memory
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ service = new ErrorDocumentServiceImpl();
+ service.setErrorDao((ErrorDocumentDao)AppContextSetup.contextList.get(2).getBean("testErrorDao")); // transactional hibernate
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ }
+
+ @Test
+ public void testDelete() throws Exception {
+ ReferenceContextImpl invocationContext = new ReferenceContextImpl();
+ invocationContext.addEntity(new WorkflowRunIdEntity("wfRunErrorDocTest"));
+ for (ErrorDocumentServiceImpl service : serviceList){
+ ErrorDocument doc = service.registerError("Fred", 0, invocationContext);
+ assertNotNull(service.getError(doc.getId()));
+ assertTrue(service.delete(doc.getId()));
+ assertNull(service.getError(doc.getId()));
+ assertFalse(service.delete(doc.getId()));
+ }
+ }
+
+ @Test
+ public void testDeleteErrorDocumentsForWFRun() throws Exception {
+
+ for (ErrorDocumentServiceImpl service : serviceList){
+
+ String wfRunId1 = "wfRunErrorDocTest1";
+ ReferenceContextImpl invocationContext1 = new ReferenceContextImpl();
+ invocationContext1.addEntity(new WorkflowRunIdEntity(wfRunId1));
+
+ String wfRunId2 = "wfRunErrorDocTest2";
+ ReferenceContextImpl invocationContext2 = new ReferenceContextImpl();
+ invocationContext2.addEntity(new WorkflowRunIdEntity(wfRunId2));
+
+ ErrorDocument doc1 = service.registerError("Fred1", 0, invocationContext1);
+ ErrorDocument doc2 = service.registerError("Fred2", 0, invocationContext1);
+ ErrorDocument doc3 = service.registerError("Fred3", 0, invocationContext2);
+
+ assertNotNull(service.getError(doc1.getId()));
+ assertNotNull(service.getError(doc2.getId()));
+ assertNotNull(service.getError(doc3.getId()));
+
+ service.deleteErrorDocumentsForWorkflowRun(wfRunId1);
+
+ assertNull(service.getError(doc1.getId()));
+ assertNull(service.getError(doc2.getId()));
+ assertNotNull(service.getError(doc3.getId()));
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListDaoTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListDaoTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListDaoTest.java
new file mode 100644
index 0000000..a39d353
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListDaoTest.java
@@ -0,0 +1,121 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import net.sf.taverna.t2.reference.ListDao;
+import net.sf.taverna.t2.reference.T2ReferenceType;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+
+public class ListDaoTest {
+
+ @Before
+ public void setup() throws Exception {
+ AppContextSetup.setup();
+ }
+
+ @Test
+ public void testStore() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ListDao dao = (ListDao)context.getBean("testListDao");
+ T2ReferenceImpl r = new T2ReferenceImpl();
+ r.setNamespacePart("testNamespace0");
+ r.setLocalPart("testLocal0");
+ r.setReferenceType(T2ReferenceType.IdentifiedList);
+ r.setDepth(0);
+ r.setContainsErrors(false);
+ T2ReferenceListImpl newList = new T2ReferenceListImpl();
+ newList.setTypedId(r);
+ dao.store(newList);
+ assertNotNull(dao.get(r));
+ }
+ }
+
+ /**
+ * Tests that .get returns null when its missing, rather than throw an exception
+ */
+ @Test
+ public void getMissingItemReturnsNull() {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ListDao dao = (ListDao)context.getBean("testListDao");
+ T2ReferenceImpl r = new T2ReferenceImpl();
+ r.setNamespacePart("testNamespace1");
+ r.setLocalPart("testLocal1");
+ r.setReferenceType(T2ReferenceType.IdentifiedList);
+ r.setDepth(0);
+ r.setContainsErrors(false);
+ T2ReferenceListImpl newList = new T2ReferenceListImpl();
+ newList.setTypedId(r);
+ assertNull(dao.get(r));
+ }
+ }
+
+ @Test
+ public void testDelete() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ListDao dao = (ListDao)context.getBean("testListDao");
+ T2ReferenceImpl r = new T2ReferenceImpl();
+ r.setNamespacePart("testNamespace2");
+ r.setLocalPart("testLocal2");
+ r.setReferenceType(T2ReferenceType.IdentifiedList);
+ r.setDepth(0);
+ r.setContainsErrors(false);
+ T2ReferenceListImpl newList = new T2ReferenceListImpl();
+ newList.setTypedId(r);
+ dao.store(newList);
+ assertNotNull(dao.get(r));
+ assertTrue(dao.delete(newList));
+ assertNull(dao.get(r));
+ }
+ }
+
+ @Test
+ public void testIdentifiedListsForWFRun() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ListDao dao = (ListDao)context.getBean("testListDao");
+
+ T2ReferenceImpl r1 = new T2ReferenceImpl();
+ r1.setReferenceType(T2ReferenceType.IdentifiedList);
+ r1.setDepth(0);
+ r1.setContainsErrors(true);
+ r1.setNamespacePart("wfRunListsTest1");
+ r1.setLocalPart("testLocal1");
+ T2ReferenceListImpl list1 = new T2ReferenceListImpl();
+ list1.setTypedId(r1);
+ dao.store(list1);
+ assertNotNull(dao.get(r1));
+
+ T2ReferenceImpl r2 = new T2ReferenceImpl();
+ r2.setReferenceType(T2ReferenceType.IdentifiedList);
+ r2.setDepth(1);
+ r2.setContainsErrors(true);
+ r2.setNamespacePart("wfRunListsTest1");
+ r2.setLocalPart("testLocal2");
+ T2ReferenceListImpl list2 = new T2ReferenceListImpl();
+ list2.setTypedId(r2);
+ dao.store(list2);
+ assertNotNull(dao.get(r2));
+
+ T2ReferenceImpl r3 = new T2ReferenceImpl();
+ r3.setReferenceType(T2ReferenceType.IdentifiedList);
+ r3.setDepth(0);
+ r3.setContainsErrors(true);
+ r3.setNamespacePart("wfRunListsTest2");
+ r3.setLocalPart("testLocal3");
+ T2ReferenceListImpl list3 = new T2ReferenceListImpl();
+ list3.setTypedId(r3);
+ dao.store(list3);
+ assertNotNull(dao.get(r3));
+
+ dao.deleteIdentifiedListsForWFRun("wfRunListsTest1");
+
+ assertNull(dao.get(r1));
+ assertNull(dao.get(r2));
+ assertNotNull(dao.get(r3));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListServiceTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListServiceTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListServiceTest.java
new file mode 100644
index 0000000..062337a
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ListServiceTest.java
@@ -0,0 +1,91 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.reference.IdentifiedList;
+import net.sf.taverna.t2.reference.ListDao;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.reference.WorkflowRunIdEntity;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ListServiceTest {
+
+ private List<ListServiceImpl> serviceList = new ArrayList<ListServiceImpl>();
+
+ @Before
+ public void setup() throws Exception {
+
+ AppContextSetup.setup();
+
+ ListServiceImpl service = null;
+
+ service = new ListServiceImpl();
+ service.setListDao((ListDao)AppContextSetup.contextList.get(0).getBean("testListDao")); // hibernate
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ service = new ListServiceImpl();
+ service.setListDao((ListDao)AppContextSetup.contextList.get(1).getBean("testListDao")); // in memory
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+
+ service = new ListServiceImpl();
+ service.setListDao((ListDao)AppContextSetup.contextList.get(2).getBean("testListDao")); // transactional hibernate
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ }
+
+ @Test
+ public void testDelete() throws Exception {
+ ReferenceContextImpl invocationContext = new ReferenceContextImpl();
+ invocationContext.addEntity(new WorkflowRunIdEntity("wfRunListsTest"));
+ for (ListServiceImpl service : serviceList){
+ IdentifiedList<T2Reference> list =service.registerEmptyList(1, invocationContext);
+ assertNotNull(service.getList(list.getId()));
+ assertTrue(service.delete(list.getId()));
+ assertNull(service.getList(list.getId()));
+ assertFalse(service.delete(list.getId()));
+ }
+ }
+
+ @Test
+ public void testDeleteIdentifiedListsForWFRun() throws Exception {
+
+ for (ListServiceImpl service : serviceList){
+
+ String wfRunId1 = "wfRunListsTest1";
+ ReferenceContextImpl invocationContext1 = new ReferenceContextImpl();
+ invocationContext1.addEntity(new WorkflowRunIdEntity(wfRunId1));
+
+ String wfRunId2 = "wfRunListsTest2";
+ ReferenceContextImpl invocationContext2 = new ReferenceContextImpl();
+ invocationContext2.addEntity(new WorkflowRunIdEntity(wfRunId2));
+
+ IdentifiedList<T2Reference> list1 = service.registerEmptyList(2, invocationContext1);
+ IdentifiedList<T2Reference> list2 = service.registerEmptyList(1, invocationContext1);
+ IdentifiedList<T2Reference> list3 = service.registerEmptyList(1, invocationContext2);
+
+ assertNotNull(service.getList(list1.getId()));
+ assertNotNull(service.getList(list2.getId()));
+ assertNotNull(service.getList(list3.getId()));
+
+ service.deleteIdentifiedListsForWorkflowRun(wfRunId1);
+
+ assertNull(service.getList(list1.getId()));
+ assertNull(service.getList(list2.getId()));
+ assertNotNull(service.getList(list3.getId()));
+
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceContextImpl.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceContextImpl.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceContextImpl.java
new file mode 100644
index 0000000..a898d27
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceContextImpl.java
@@ -0,0 +1,30 @@
+package net.sf.taverna.t2.reference.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.reference.ReferenceContext;
+
+class ReferenceContextImpl implements ReferenceContext{
+ private List<Object> entities;
+
+ public ReferenceContextImpl(){
+ entities = new ArrayList<Object>();
+ }
+
+ @Override
+ public <T> List<T> getEntities(Class<T> entityType) {
+ List<T> entitiesOfType = new ArrayList<T>();
+ for (Object entity : entities){
+ if (entityType.isInstance(entity)){
+ entitiesOfType.add(entityType.cast(entity));
+ }
+ }
+ return entitiesOfType;
+ }
+
+ @Override
+ public void addEntity(Object entity){
+ entities.add(entity);
+ }
+};
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetDaoTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetDaoTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetDaoTest.java
new file mode 100644
index 0000000..f453cca
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetDaoTest.java
@@ -0,0 +1,105 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.HashSet;
+
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceSetDao;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+
+public class ReferenceSetDaoTest {
+
+ @Before
+ public void setup() throws Exception {
+
+ AppContextSetup.setup();
+ }
+
+ @Test
+ public void testStore() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ReferenceSetDao dao = (ReferenceSetDao) context.getBean("testDao");
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setNamespacePart("testNamespace0");
+ id.setLocalPart("testLocal0");
+ ReferenceSetImpl rs = new ReferenceSetImpl(
+ new HashSet<ExternalReferenceSPI>(), id);
+ dao.store(rs);
+ assertNotNull(dao.get(id));
+ }
+ }
+
+ @Test
+ public void testDelete() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ReferenceSetDao dao = (ReferenceSetDao) context.getBean("testDao");
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setNamespacePart("testNamespace1");
+ id.setLocalPart("testLocal1");
+ ReferenceSetImpl rs = new ReferenceSetImpl(
+ new HashSet<ExternalReferenceSPI>(), id);
+ dao.store(rs);
+ assertNotNull(dao.get(id));
+ assertTrue(dao.delete(rs));
+ assertNull(dao.get(id));
+ }
+ }
+
+ @Test
+ public void testDeleteRerefenceSetsForWFRun() throws Exception {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ReferenceSetDao dao = (ReferenceSetDao) context.getBean("testDao");
+
+ T2ReferenceImpl id1 = new T2ReferenceImpl();
+ id1.setNamespacePart("wfRunRefSetTest1");
+ id1.setLocalPart("testLocal1");
+ ReferenceSetImpl rs1 = new ReferenceSetImpl(
+ new HashSet<ExternalReferenceSPI>(), id1);
+ dao.store(rs1);
+ assertNotNull(dao.get(id1));
+
+ T2ReferenceImpl id2 = new T2ReferenceImpl();
+ id2.setNamespacePart("wfRunRefSetTest1");
+ id2.setLocalPart("testLocal2");
+ ReferenceSetImpl rs2 = new ReferenceSetImpl(
+ new HashSet<ExternalReferenceSPI>(), id2);
+ dao.store(rs2);
+ assertNotNull(dao.get(id2));
+
+ T2ReferenceImpl id3 = new T2ReferenceImpl();
+ id3.setNamespacePart("wfRunRefSetTest2");
+ id3.setLocalPart("testLocal3");
+ ReferenceSetImpl rs3 = new ReferenceSetImpl(
+ new HashSet<ExternalReferenceSPI>(), id3);
+ dao.store(rs3);
+ assertNotNull(dao.get(id3));
+
+ dao.deleteReferenceSetsForWFRun("wfRunRefSetTest1");
+
+ assertNull(dao.get(id1));
+ assertNull(dao.get(id2));
+ assertNotNull(dao.get(id3));
+ }
+ }
+
+ /**
+ * Tests that .get returns null when its missing, rather than throw an exception
+ */
+ @Test
+ public void getMissingItemReturnsNull() {
+ for (ApplicationContext context : AppContextSetup.contextList){
+ ReferenceSetDao dao = (ReferenceSetDao) context.getBean("testDao");
+ T2ReferenceImpl id = new T2ReferenceImpl();
+ id.setNamespacePart("testNamespace2");
+ id.setLocalPart("testLocal2");
+ assertNull(dao.get(id));
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetServiceTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetServiceTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetServiceTest.java
new file mode 100644
index 0000000..fc445ae
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/ReferenceSetServiceTest.java
@@ -0,0 +1,92 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.ReferenceSetDao;
+import net.sf.taverna.t2.reference.WorkflowRunIdEntity;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class ReferenceSetServiceTest {
+
+ private List<ReferenceSetServiceImpl> serviceList = new ArrayList<ReferenceSetServiceImpl>();
+
+ @Before
+ public void setup() throws Exception {
+
+ AppContextSetup.setup();
+
+ ReferenceSetServiceImpl service = null;
+
+ service = new ReferenceSetServiceImpl();
+ service.setReferenceSetDao((ReferenceSetDao)AppContextSetup.contextList.get(0).getBean("testDao")); // hibernate
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ service = new ReferenceSetServiceImpl();
+ service.setReferenceSetDao((ReferenceSetDao)AppContextSetup.contextList.get(1).getBean("testDao")); // in memory
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ service = new ReferenceSetServiceImpl();
+ service.setReferenceSetDao((ReferenceSetDao)AppContextSetup.contextList.get(2).getBean("testDao")); // transactional hibernate
+ service.setT2ReferenceGenerator(new SimpleT2ReferenceGenerator());
+ serviceList.add(service);
+
+ }
+
+ @Test
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public void testDelete() throws Exception {
+ ReferenceContextImpl invocationContext = new ReferenceContextImpl();
+ invocationContext.addEntity(new WorkflowRunIdEntity("wfRunRefSetTest0"));
+ for (ReferenceSetServiceImpl service : serviceList){
+ ReferenceSet set = service.registerReferenceSet(new HashSet(), invocationContext);
+ assertNotNull(service.getReferenceSet(set.getId()));
+ assertTrue(service.delete(set.getId()));
+ assertNull(service.getReferenceSet(set.getId()));
+ assertFalse(service.delete(set.getId()));
+ }
+ }
+
+ @Test
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public void testDeleteReferenceSetsForWFRun() throws Exception {
+
+ for (ReferenceSetServiceImpl service : serviceList){
+
+ String wfRunId1 = "wfRunRefSetTest1";
+ ReferenceContextImpl invocationContext1 = new ReferenceContextImpl();
+ invocationContext1.addEntity(new WorkflowRunIdEntity(wfRunId1));
+
+ String wfRunId2 = "wfRunRefSetTest2";
+ ReferenceContextImpl invocationContext2 = new ReferenceContextImpl();
+ invocationContext2.addEntity(new WorkflowRunIdEntity(wfRunId2));
+
+ ReferenceSet set1 = service.registerReferenceSet(new HashSet(), invocationContext1);
+ ReferenceSet set2 = service.registerReferenceSet(new HashSet(), invocationContext1);
+ ReferenceSet set3 = service.registerReferenceSet(new HashSet(), invocationContext2);
+
+ assertNotNull(service.getReferenceSet(set1.getId()));
+ assertNotNull(service.getReferenceSet(set2.getId()));
+ assertNotNull(service.getReferenceSet(set3.getId()));
+
+ service.deleteReferenceSetsForWorkflowRun(wfRunId1);
+
+ assertNull(service.getReferenceSet(set1.getId()));
+ assertNull(service.getReferenceSet(set2.getId()));
+ assertNotNull(service.getReferenceSet(set3.getId()));
+
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/TranslationPathTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/TranslationPathTest.java b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/TranslationPathTest.java
new file mode 100644
index 0000000..35d6f64
--- /dev/null
+++ b/taverna-reference-impl/src/test/java/net/sf/taverna/t2/reference/impl/TranslationPathTest.java
@@ -0,0 +1,46 @@
+package net.sf.taverna.t2.reference.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Set;
+
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2referencetest.DummyReferenceSet;
+import net.sf.taverna.t2referencetest.GreenBuilder;
+import net.sf.taverna.t2referencetest.GreenReference;
+import net.sf.taverna.t2referencetest.GreenToRed;
+import net.sf.taverna.t2referencetest.RedReference;
+
+import org.junit.Test;
+
+public class TranslationPathTest {
+
+ protected TranslationPath path = new TranslationPath();
+
+ @Test
+ public void doTranslationWithTranslator() throws Exception {
+ ReferenceContext context = new EmptyReferenceContext();
+ ReferenceSet rs = new DummyReferenceSet(new GreenReference("green"));
+ path.getTranslators().add(new GreenToRed());
+ Set<ExternalReferenceSPI> set = path.doTranslation(rs, context);
+ assertEquals(1, set.size());
+ assertTrue(set.iterator().next() instanceof RedReference);
+ }
+
+ @Test
+ public void doTranslationByReadingStream() throws Exception {
+ ReferenceContext context = new EmptyReferenceContext();
+ path.setSourceReference(new RedReference("red"));
+ ReferenceSet rs = new DummyReferenceSet(path.getSourceReference());
+ path.setInitialBuilder(new GreenBuilder());
+ //augmentor.path.translators.add(new DummyTranslator());
+ Set<ExternalReferenceSPI> set = path.doTranslation(rs, context);
+ assertEquals(1, set.size());
+ assertTrue(set.iterator().next() instanceof GreenReference);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/resources/log4j.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/resources/log4j.xml b/taverna-reference-impl/src/test/resources/log4j.xml
new file mode 100644
index 0000000..f1f4d5e
--- /dev/null
+++ b/taverna-reference-impl/src/test/resources/log4j.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- Default Log4J configuration for integration test module -->
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern"
+ value="%p - %C{1}.%M(%L) | %m%n" />
+ </layout>
+ </appender>
+
+ <logger name="net.sf.taverna.platform.spring.orm">
+ <level value="TRACE" />
+ </logger>
+
+ <logger name="net.sf.taverna.platform.spring">
+ <level value="INFO" />
+ </logger>
+
+ <logger name="org.hibernate">
+ <level value="ERROR" />
+ </logger>
+
+ <!--
+ <logger name="org.hibernate.SQL">
+ <level value="TRACE" />
+ </logger>
+ <logger name="org.hibernate.type">
+ <level value="DEBUG" />
+ </logger>
+ -->
+
+ <logger name="org.springframework">
+ <level value="WARN" />
+ </logger>
+
+ <root>
+ <level value="ERROR" />
+ <appender-ref ref="CONSOLE" />
+ </root>
+
+</log4j:configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/resources/vanillaHibernateAppContext.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/resources/vanillaHibernateAppContext.xml b/taverna-reference-impl/src/test/resources/vanillaHibernateAppContext.xml
new file mode 100644
index 0000000..8853410
--- /dev/null
+++ b/taverna-reference-impl/src/test/resources/vanillaHibernateAppContext.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- A test context with no raven aware components used by the DatabaseSetupTest -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context-2.5.xsd
+ http://www.springframework.org/schema/tx
+ http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
+
+ <!-- Transaction manager, commented out to use the regular dao implementations -->
+ <!--
+ <tx:annotation-driven transaction-manager="txManager" />
+ <bean id="txManager"
+ class="org.springframework.orm.hibernate3.HibernateTransactionManager">
+ <property name="sessionFactory" ref="sessionFactoryBean" />
+ </bean>
+ -->
+
+
+ <!-- Apache Derby rooted at a temporary directory -->
+ <bean id="t2reference.jdbc.temporaryjdbc"
+ class="net.sf.taverna.platform.spring.jdbc.TemporaryJDBC">
+ </bean>
+ <bean id="t2reference.jdbc.url" class="java.lang.String"
+ factory-bean="t2reference.jdbc.temporaryjdbc"
+ factory-method="getTemporaryDerbyJDBC" />
+
+ <!-- At least for testing purposes we use Apache Derby -->
+ <bean id="exampleDataSource"
+ class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="driverClassName">
+ <value>org.apache.derby.jdbc.EmbeddedDriver</value>
+ </property>
+ <property name="url">
+ <ref bean="t2reference.jdbc.url" />
+ </property>
+ </bean>
+
+ <!-- Configure hibernate to use dynamic schema update -->
+ <bean id="exampleHibernateProperties"
+ class="org.springframework.beans.factory.config.PropertiesFactoryBean">
+ <property name="properties">
+ <props>
+ <prop key="hibernate.hbm2ddl.auto">create</prop>
+ <prop key="hibernate.dialect">
+ org.hibernate.dialect.DerbyDialect
+ </prop>
+ <prop key="hibernate.query.substitutions">
+ true 'T', false 'F'
+ </prop>
+ <prop key="hibernate.show_sql">false</prop>
+ <prop key="hibernate.c3p0.minPoolSize">5</prop>
+ <prop key="hibernate.c3p0.maxPoolSize">20</prop>
+ <prop key="hibernate.c3p0.timeout">600</prop>
+ <prop key="hibernate.c3p0.max_statement">50</prop>
+ <prop key="hibernate.c3p0.testConnectionOnCheckout">
+ false
+ </prop>
+ <prop key="show_sql">true</prop>
+ <prop key="format_sql">true</prop>
+ </props>
+ </property>
+ </bean>
+
+ <!-- A regular hibernate session factory -->
+ <bean id="sessionFactoryBean"
+ class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
+ <property name="dataSource">
+ <ref local="exampleDataSource" />
+ </property>
+ <property name="hibernateProperties">
+ <ref bean="exampleHibernateProperties" />
+ </property>
+ <property name="mappingResources">
+ <list>
+ <value>
+ net/sf/taverna/t2/reference/AbstractExternalReference.hbm.xml
+ </value>
+ <value>
+ net/sf/taverna/t2/reference/impl/ReferenceSetImpl.hbm.xml
+ </value>
+ <value>
+ net/sf/taverna/t2/reference/impl/T2ReferenceListImpl.hbm.xml
+ </value>
+ <value>
+ net/sf/taverna/t2/reference/impl/ErrorDocumentImpl.hbm.xml
+ </value>
+ </list>
+ </property>
+ </bean>
+
+ <!-- Test data access object -->
+ <bean id="testDao"
+ class="net.sf.taverna.t2.reference.impl.HibernateReferenceSetDao">
+ <property name="sessionFactory">
+ <ref local="sessionFactoryBean" />
+ </property>
+ </bean>
+
+ <!-- Test list data access object -->
+ <bean id="testListDao"
+ class="net.sf.taverna.t2.reference.impl.HibernateListDao">
+ <property name="sessionFactory">
+ <ref local="sessionFactoryBean" />
+ </property>
+ </bean>
+
+ <!-- Test list data access object -->
+ <bean id="testErrorDao"
+ class="net.sf.taverna.t2.reference.impl.HibernateErrorDocumentDao">
+ <property name="sessionFactory">
+ <ref local="sessionFactoryBean" />
+ </property>
+ </bean>
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/resources/vanillaHibernateTransactionalAppContext.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/resources/vanillaHibernateTransactionalAppContext.xml b/taverna-reference-impl/src/test/resources/vanillaHibernateTransactionalAppContext.xml
new file mode 100644
index 0000000..be66358
--- /dev/null
+++ b/taverna-reference-impl/src/test/resources/vanillaHibernateTransactionalAppContext.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- A test context with no raven aware components used by the DatabaseSetupTest -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context-2.5.xsd
+ http://www.springframework.org/schema/tx
+ http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
+
+ <!-- Transaction manager, commented out to use the regular dao implementations -->
+ <tx:annotation-driven transaction-manager="txManager" />
+
+ <bean id="txManager"
+ class="org.springframework.orm.hibernate3.HibernateTransactionManager">
+ <property name="sessionFactory" ref="sessionFactoryBean" />
+ </bean>
+
+ <!-- Apache Derby rooted at a temporary directory -->
+ <bean id="t2reference.jdbc.temporaryjdbc"
+ class="net.sf.taverna.platform.spring.jdbc.TemporaryJDBC">
+ </bean>
+ <bean id="t2reference.jdbc.url" class="java.lang.String"
+ factory-bean="t2reference.jdbc.temporaryjdbc"
+ factory-method="getTemporaryDerbyJDBC" />
+
+ <!-- At least for testing purposes we use Apache Derby -->
+ <bean id="exampleDataSource"
+ class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="driverClassName">
+ <value>org.apache.derby.jdbc.EmbeddedDriver</value>
+ </property>
+ <property name="url">
+ <ref bean="t2reference.jdbc.url" />
+ </property>
+ </bean>
+
+ <!-- Configure hibernate to use dynamic schema update -->
+ <bean id="exampleHibernateProperties"
+ class="org.springframework.beans.factory.config.PropertiesFactoryBean">
+ <property name="properties">
+ <props>
+ <prop key="hibernate.hbm2ddl.auto">create</prop>
+ <prop key="hibernate.dialect">
+ org.hibernate.dialect.DerbyDialect
+ </prop>
+ <prop key="hibernate.query.substitutions">
+ true 'T', false 'F'
+ </prop>
+ <prop key="hibernate.show_sql">false</prop>
+ <prop key="hibernate.c3p0.minPoolSize">5</prop>
+ <prop key="hibernate.c3p0.maxPoolSize">20</prop>
+ <prop key="hibernate.c3p0.timeout">600</prop>
+ <prop key="hibernate.c3p0.max_statement">50</prop>
+ <prop key="hibernate.c3p0.testConnectionOnCheckout">
+ false
+ </prop>
+ <prop key="show_sql">true</prop>
+ <prop key="format_sql">true</prop>
+ </props>
+ </property>
+ </bean>
+
+ <!-- A regular hibernate session factory -->
+ <bean id="sessionFactoryBean"
+ class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
+ <property name="dataSource">
+ <ref local="exampleDataSource" />
+ </property>
+ <property name="hibernateProperties">
+ <ref bean="exampleHibernateProperties" />
+ </property>
+ <property name="mappingResources">
+ <list>
+ <value>
+ net/sf/taverna/t2/reference/AbstractExternalReference.hbm.xml
+ </value>
+ <value>
+ net/sf/taverna/t2/reference/impl/ReferenceSetImpl.hbm.xml
+ </value>
+ <value>
+ net/sf/taverna/t2/reference/impl/T2ReferenceListImpl.hbm.xml
+ </value>
+ <value>
+ net/sf/taverna/t2/reference/impl/ErrorDocumentImpl.hbm.xml
+ </value>
+ </list>
+ </property>
+ </bean>
+
+ <!-- Test data access object -->
+ <bean id="testDao"
+ class="net.sf.taverna.t2.reference.impl.TransactionalHibernateReferenceSetDao">
+ <property name="sessionFactory">
+ <ref local="sessionFactoryBean" />
+ </property>
+ </bean>
+
+ <!-- Test list data access object -->
+ <bean id="testListDao"
+ class="net.sf.taverna.t2.reference.impl.TransactionalHibernateListDao">
+ <property name="sessionFactory">
+ <ref local="sessionFactoryBean" />
+ </property>
+ </bean>
+
+ <!-- Test list data access object -->
+ <bean id="testErrorDao"
+ class="net.sf.taverna.t2.reference.impl.TransactionalHibernateErrorDocumentDao">
+ <property name="sessionFactory">
+ <ref local="sessionFactoryBean" />
+ </property>
+ </bean>
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-impl/src/test/resources/vanillaInMemoryAppContext.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-impl/src/test/resources/vanillaInMemoryAppContext.xml b/taverna-reference-impl/src/test/resources/vanillaInMemoryAppContext.xml
new file mode 100644
index 0000000..6ea6565
--- /dev/null
+++ b/taverna-reference-impl/src/test/resources/vanillaInMemoryAppContext.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- A test context with no raven aware components used by the DatabaseSetupTest -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context-2.5.xsd
+ http://www.springframework.org/schema/tx
+ http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
+
+ <!-- Test data access object -->
+ <bean id="testDao"
+ class="net.sf.taverna.t2.reference.impl.InMemoryReferenceSetDao">
+ </bean>
+
+ <!-- Test list data access object -->
+ <bean id="testListDao"
+ class="net.sf.taverna.t2.reference.impl.InMemoryListDao">
+ </bean>
+
+ <!-- Test list data access object -->
+ <bean id="testErrorDao"
+ class="net.sf.taverna.t2.reference.impl.InMemoryErrorDocumentDao">
+ </bean>
+
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/pom.xml b/taverna-reference-testhelpers/pom.xml
new file mode 100644
index 0000000..0f99adf
--- /dev/null
+++ b/taverna-reference-testhelpers/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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.apache.taverna.engine</groupId>
+ <artifactId>taverna-engine</artifactId>
+ <version>3.1.0-incubating-SNAPSHOT</version>
+ </parent>
+ <artifactId>taverna-reference-testhelpers</artifactId>
+ <packaging>bundle</packaging>
+ <name>Apache Taverna Reference Test Helpers</name>
+
+ <description>
+ In order to properly test OSGi-loaded t2ference modules
+ we need a module that is entire external
+ to t2reference and to the test cases. If the test
+ implementations are included in either the api, core
+ implementation or test modules they will be loaded by the root
+ classloader of the test runner - by putting them in an
+ independent artifact we allow them to be loaded through
+ various SPI discovery mechanisms as they would be in a 'real'
+ environment.
+ </description>
+
+ <dependencies>
+ <!-- Only depend on the t2reference API package here -->
+ <dependency>
+ <groupId>${project.parent.groupId}</groupId>
+ <artifactId>taverna-reference-api</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/BlueReference.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/BlueReference.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/BlueReference.java
new file mode 100644
index 0000000..5eabe9d
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/BlueReference.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2referencetest;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.DereferenceException;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+
+/**
+ * BlueReferences carry their data as an internal String and have a resolution
+ * cost of 1.0f whatever the value of that string.
+ *
+ * @author Tom Oinn
+ *
+ */
+public class BlueReference extends AbstractExternalReference implements
+ ExternalReferenceSPI {
+
+ // Hold the 'value' of this reference, probably the simplest backing store
+ // possible for an ExternalReferenceSPI implementation :)
+ private String contents;
+
+ public BlueReference() {
+ //
+ }
+
+ public BlueReference(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Set the 'value' of this reference as a string. It's not really a
+ * reference type in any true sense of the word, but it'll do for testing
+ * the augmentation system. This method is really here so you can configure
+ * test beans from spring.
+ */
+ public void setContents(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Get the 'value' of this reference as a string, really just returns the
+ * internal string representation.
+ */
+ public String getContents() {
+ return this.contents;
+ }
+
+ /**
+ * Fakes a de-reference operation, returning a byte stream over the string
+ * data.
+ */
+ @Override
+ public InputStream openStream(ReferenceContext arg0) {
+ try {
+ return new ByteArrayInputStream(this.contents
+ .getBytes(getCharset()));
+ } catch (UnsupportedEncodingException e) {
+ throw new DereferenceException(e);
+ }
+ }
+
+ /**
+ * Default resolution cost of 1.0f whatever the contents
+ */
+ @Override
+ public float getResolutionCost() {
+ return 1.0f;
+ }
+
+ /**
+ * Data nature set to 'ReferencedDataNature.TEXT'
+ */
+ @Override
+ public ReferencedDataNature getDataNature() {
+ return ReferencedDataNature.TEXT;
+ }
+
+ /**
+ * Character encoding set to 'UTF-8'
+ */
+ @Override
+ public String getCharset() {
+ return "UTF-8";
+ }
+
+ /**
+ * String representation for testing, returns <code>blue{CONTENTS}</code>
+ */
+ @Override
+ public String toString() {
+ return "blue{" + contents + "}";
+ }
+
+ @Override
+ public Long getApproximateSizeInBytes() {
+ return new Long(contents.getBytes().length);
+ }
+
+ @Override
+ public ExternalReferenceSPI clone() throws CloneNotSupportedException {
+ return new BlueReference(this.getContents());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/DummyReferenceSet.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/DummyReferenceSet.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/DummyReferenceSet.java
new file mode 100644
index 0000000..1d51fe9
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/DummyReferenceSet.java
@@ -0,0 +1,32 @@
+package net.sf.taverna.t2referencetest;
+
+import java.util.Collections;
+import java.util.Set;
+
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceSet;
+import net.sf.taverna.t2.reference.T2Reference;
+
+public class DummyReferenceSet implements ReferenceSet {
+
+ private Set<ExternalReferenceSPI> refs;
+
+ public DummyReferenceSet(ExternalReferenceSPI ref) {
+ refs = Collections.singleton(ref);
+ }
+
+ @Override
+ public T2Reference getId() {
+ return null;
+ }
+
+ @Override
+ public Set<ExternalReferenceSPI> getExternalReferences() {
+ return refs;
+ }
+
+ @Override
+ public Long getApproximateSizeInBytes() {
+ return null;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenBuilder.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenBuilder.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenBuilder.java
new file mode 100644
index 0000000..6a11546
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenBuilder.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2referencetest;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+import net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI;
+import net.sf.taverna.t2.reference.ExternalReferenceConstructionException;
+import net.sf.taverna.t2.reference.ReferenceContext;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Trivially build a GreenReference from an InputStream, implementing the
+ * ExternalReferenceBuilderSPI interface. Used in the augmentation test cases.
+ *
+ * @author Tom Oinn
+ *
+ */
+public class GreenBuilder implements
+ ExternalReferenceBuilderSPI<GreenReference> {
+
+ private static Logger logger = Logger
+ .getLogger(GreenBuilder.class);
+
+ /**
+ * Construct a new GreenReference from the given input stream, ignoring the
+ * otherwise helpful context as we don't need any resources from it. We
+ * assume UTF-8 encoding as that's what all the test reference types use,
+ * again, with a real example this might have to be a bit smarter!
+ *
+ * @throws ExternalReferenceConstructionException
+ * if there are any issues building the new GreenReference
+ * (which there won't be)
+ */
+ @Override
+ public GreenReference createReference(InputStream is,
+ ReferenceContext context)
+ throws ExternalReferenceConstructionException {
+ GreenReference newReference = new GreenReference();
+ // Read input stream into the 'contents' property of the reference
+ BufferedReader in = new BufferedReader(new InputStreamReader(is));
+ try {
+ newReference.setContents(in.readLine());
+ } catch (IOException e) {
+ throw new ExternalReferenceConstructionException(e);
+ } finally {
+ try {
+ is.close();
+ in.close();
+ } catch (IOException e) {
+ logger.error("Unable to close streams", e);
+ }
+ }
+ return newReference;
+ }
+
+ /**
+ * Construction cost fixed at 1.5f
+ *
+ * @return <code>1.5f</code>
+ */
+ @Override
+ public float getConstructionCost() {
+ return 1.5f;
+ }
+
+ /**
+ * @return <code>{@link net.sf.taverna.t2referencetest.GreenReference GreenReference}.class</code>
+ */
+ @Override
+ public Class<GreenReference> getReferenceType() {
+ return GreenReference.class;
+ }
+
+ /**
+ * Doesn't use any context resources so is always enabled
+ *
+ * @return <code>true</code>
+ */
+ @Override
+ public boolean isEnabled(ReferenceContext arg0) {
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenReference.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenReference.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenReference.java
new file mode 100644
index 0000000..e01f604
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenReference.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2referencetest;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.DereferenceException;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+
+/**
+ * GreenReferences carry their data as an internal String and have a resolution
+ * cost of 1.1f whatever the value of that string.
+ *
+ * @author Tom Oinn
+ *
+ */
+public class GreenReference extends AbstractExternalReference implements
+ ExternalReferenceSPI {
+
+ // Hold the 'value' of this reference, probably the simplest backing store
+ // possible for an ExternalReferenceSPI implementation :)
+ private String contents;
+
+ public GreenReference() {
+ //
+ }
+
+ public GreenReference(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Set the 'value' of this reference as a string. It's not really a
+ * reference type in any true sense of the word, but it'll do for testing
+ * the augmentation system. This method is really here so you can configure
+ * test beans from spring.
+ */
+ public void setContents(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Get the 'value' of this reference as a string, really just returns the
+ * internal string representation.
+ */
+ public String getContents() {
+ return this.contents;
+ }
+
+ /**
+ * Fakes a de-reference operation, returning a byte stream over the string
+ * data.
+ */
+ @Override
+ public InputStream openStream(ReferenceContext arg0) {
+ try {
+ return new ByteArrayInputStream(this.contents
+ .getBytes(getCharset()));
+ } catch (UnsupportedEncodingException e) {
+ throw new DereferenceException(e);
+ }
+ }
+
+ /**
+ * Default resolution cost of 1.0f whatever the contents
+ */
+ @Override
+ public float getResolutionCost() {
+ return 1.1f;
+ }
+
+ /**
+ * Data nature set to 'ReferencedDataNature.TEXT'
+ */
+ @Override
+ public ReferencedDataNature getDataNature() {
+ return ReferencedDataNature.TEXT;
+ }
+
+ /**
+ * Character encoding set to 'UTF-8'
+ */
+ @Override
+ public String getCharset() {
+ return "UTF-8";
+ }
+
+ /**
+ * String representation for testing, returns <code>green{CONTENTS}</code>
+ */
+ @Override
+ public String toString() {
+ return "green{" + contents + "}";
+ }
+
+ @Override
+ public Long getApproximateSizeInBytes() {
+ return new Long(contents.getBytes().length);
+ }
+
+ @Override
+ public ExternalReferenceSPI clone() throws CloneNotSupportedException {
+ return new GreenReference(this.getContents());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenToRed.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenToRed.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenToRed.java
new file mode 100644
index 0000000..8c673d6
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/GreenToRed.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2referencetest;
+
+import net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+
+public class GreenToRed implements
+ ExternalReferenceTranslatorSPI<GreenReference, RedReference> {
+
+ @Override
+ public RedReference createReference(GreenReference ref,
+ ReferenceContext context) {
+ RedReference newReference = new RedReference();
+ newReference.setContents(ref.getContents());
+ // Insert a two second pause to simulate reference translation and to
+ // test the behaviour of multiple concurrent translations
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException ie) {
+ System.out
+ .println("Translation thread was interrupted, probably something wrong.");
+ }
+ return newReference;
+ }
+
+ @Override
+ public Class<GreenReference> getSourceReferenceType() {
+ return GreenReference.class;
+ }
+
+ @Override
+ public Class<RedReference> getTargetReferenceType() {
+ return RedReference.class;
+ }
+
+ @Override
+ public float getTranslationCost() {
+ return 0.4f;
+ }
+
+ @Override
+ public boolean isEnabled(ReferenceContext arg0) {
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/RedReference.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/RedReference.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/RedReference.java
new file mode 100644
index 0000000..0c21c72
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/RedReference.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2referencetest;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.DereferenceException;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+
+/**
+ * RedReferences carry their data as an internal String and have a resolution
+ * cost of 0.9f whatever the value of that string.
+ *
+ * @author Tom Oinn
+ *
+ */
+public class RedReference extends AbstractExternalReference implements
+ ExternalReferenceSPI {
+
+ // Hold the 'value' of this reference, probably the simplest backing store
+ // possible for an ExternalReferenceSPI implementation :)
+ private String contents;
+
+ public RedReference() {
+ //
+ }
+
+ public RedReference(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Set the 'value' of this reference as a string. It's not really a
+ * reference type in any true sense of the word, but it'll do for testing
+ * the augmentation system. This method is really here so you can configure
+ * test beans from spring.
+ */
+ public void setContents(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Get the 'value' of this reference as a string, really just returns the
+ * internal string representation.
+ */
+ public String getContents() {
+ return this.contents;
+ }
+
+ /**
+ * Fakes a de-reference operation, returning a byte stream over the string
+ * data.
+ */
+ @Override
+ public InputStream openStream(ReferenceContext arg0) {
+ try {
+ return new ByteArrayInputStream(this.contents
+ .getBytes(getCharset()));
+ } catch (UnsupportedEncodingException e) {
+ throw new DereferenceException(e);
+ }
+ }
+
+ /**
+ * Default resolution cost of 1.0f whatever the contents
+ */
+ @Override
+ public float getResolutionCost() {
+ return 0.9f;
+ }
+
+ /**
+ * Data nature set to 'ReferencedDataNature.TEXT'
+ */
+ @Override
+ public ReferencedDataNature getDataNature() {
+ return ReferencedDataNature.TEXT;
+ }
+
+ /**
+ * Character encoding set to 'UTF-8'
+ */
+ @Override
+ public String getCharset() {
+ return "UTF-8";
+ }
+
+ /**
+ * String representation for testing, returns <code>red{CONTENTS}</code>
+ */
+ @Override
+ public String toString() {
+ return "red{" + contents + "}";
+ }
+
+ @Override
+ public Long getApproximateSizeInBytes() {
+ return new Long(contents.getBytes().length);
+ }
+
+ @Override
+ public ExternalReferenceSPI clone() throws CloneNotSupportedException {
+ return new RedReference(this.getContents());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/YellowReference.java
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/YellowReference.java b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/YellowReference.java
new file mode 100644
index 0000000..b276f58
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/java/net/sf/taverna/t2referencetest/YellowReference.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2referencetest;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.DereferenceException;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ReferencedDataNature;
+
+
+/**
+ * YellowReferences carry their data as an internal String and have a resolution
+ * cost of 1.0f whatever the value of that string.
+ *
+ * @author Tom Oinn
+ *
+ */
+public class YellowReference extends AbstractExternalReference implements
+ ExternalReferenceSPI {
+
+ // Hold the 'value' of this reference, probably the simplest backing store
+ // possible for an ExternalReferenceSPI implementation :)
+ private String contents;
+
+ public YellowReference() {
+ //
+ }
+
+ public YellowReference(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Set the 'value' of this reference as a string. It's not really a
+ * reference type in any true sense of the word, but it'll do for testing
+ * the augmentation system. This method is really here so you can configure
+ * test beans from spring.
+ */
+ public void setContents(String contents) {
+ this.contents = contents;
+ }
+
+ /**
+ * Get the 'value' of this reference as a string, really just returns the
+ * internal string representation.
+ */
+ public String getContents() {
+ return this.contents;
+ }
+
+ /**
+ * Fakes a de-reference operation, returning a byte stream over the string
+ * data.
+ */
+ @Override
+ public InputStream openStream(ReferenceContext arg0) {
+ try {
+ return new ByteArrayInputStream(this.contents
+ .getBytes(getCharset()));
+ } catch (UnsupportedEncodingException e) {
+ throw new DereferenceException(e);
+ }
+ }
+
+ /**
+ * Default resolution cost of 1.0f whatever the contents
+ */
+ @Override
+ public float getResolutionCost() {
+ return 1.0f;
+ }
+
+ /**
+ * Data nature set to 'ReferencedDataNature.TEXT'
+ */
+ @Override
+ public ReferencedDataNature getDataNature() {
+ return ReferencedDataNature.TEXT;
+ }
+
+ /**
+ * Character encoding set to 'UTF-8'
+ */
+ @Override
+ public String getCharset() {
+ return "UTF-8";
+ }
+
+ /**
+ * String representation for testing, returns <code>yellow{CONTENTS}</code>
+ */
+ @Override
+ public String toString() {
+ return "yellow{" + contents + "}";
+ }
+
+ @Override
+ public Long getApproximateSizeInBytes() {
+ return new Long(contents.getBytes().length);
+ }
+
+ @Override
+ public ExternalReferenceSPI clone() throws CloneNotSupportedException {
+ return new YellowReference(this.getContents());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI b/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI
new file mode 100644
index 0000000..3f1a123
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI
@@ -0,0 +1,2 @@
+# Implementation classes of ExternalReferenceBuilderSPI go here, one per line
+net.sf.taverna.t2referencetest.GreenBuilder
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI b/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
new file mode 100644
index 0000000..20a63d6
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
@@ -0,0 +1,5 @@
+# Implementation classes of ExternalReferenceSPI go here, one per line
+net.sf.taverna.t2referencetest.GreenReference
+net.sf.taverna.t2referencetest.BlueReference
+net.sf.taverna.t2referencetest.RedReference
+net.sf.taverna.t2referencetest.YellowReference
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI b/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI
new file mode 100644
index 0000000..7fff1a3
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI
@@ -0,0 +1,2 @@
+# Implementation classes of ExternalReferenceTranslatorSPI go here, one per line
+net.sf.taverna.t2referencetest.GreenToRed
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context-osgi.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context-osgi.xml b/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context-osgi.xml
new file mode 100644
index 0000000..dc6c0a4
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context-osgi.xml
@@ -0,0 +1,18 @@
+<?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/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/osgi
+ http://www.springframework.org/schema/osgi/spring-osgi.xsd" >
+
+ <service ref="greenBuilder" interface="net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI" />
+
+ <service ref="greenReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="blueReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="redReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="yellowReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+
+ <service ref="greenToRedTranslator" interface="net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI" />
+
+</beans:beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context.xml b/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context.xml
new file mode 100644
index 0000000..8838328
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/META-INF/spring/reference-testhelpers-context.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="greenBuilder" class="net.sf.taverna.t2referencetest.GreenBuilder" />
+
+ <bean id="greenReference" class="net.sf.taverna.t2referencetest.GreenReference" />
+ <bean id="blueReference" class="net.sf.taverna.t2referencetest.BlueReference" />
+ <bean id="redReference" class="net.sf.taverna.t2referencetest.RedReference" />
+ <bean id="yellowReference" class="net.sf.taverna.t2referencetest.YellowReference" />
+
+ <bean id="greenToRedTranslator" class="net.sf.taverna.t2referencetest.GreenToRed" />
+
+</beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/BlueReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/BlueReference.hbm.xml b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/BlueReference.hbm.xml
new file mode 100644
index 0000000..9483784
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/BlueReference.hbm.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<!-- Hibernate mapping for blue reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2referencetest.BlueReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- Dummy reference specific props -->
+ <property name="contents" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/GreenReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/GreenReference.hbm.xml b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/GreenReference.hbm.xml
new file mode 100644
index 0000000..dc65151
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/GreenReference.hbm.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<!-- Hibernate mapping for green reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2referencetest.GreenReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- Dummy reference specific props -->
+ <property name="contents" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/RedReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/RedReference.hbm.xml b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/RedReference.hbm.xml
new file mode 100644
index 0000000..176f60d
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/RedReference.hbm.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<!-- Hibernate mapping for red reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2referencetest.RedReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- Dummy reference specific props -->
+ <property name="contents" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/246a16e2/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/YellowReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/YellowReference.hbm.xml b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/YellowReference.hbm.xml
new file mode 100644
index 0000000..6f357f8
--- /dev/null
+++ b/taverna-reference-testhelpers/src/main/resources/net/sf/taverna/t2referencetest/YellowReference.hbm.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+<!-- Hibernate mapping for yellow reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2referencetest.YellowReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- Dummy reference specific props -->
+ <property name="contents" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+