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/17 12:32:19 UTC
[13/50] [abbrv] incubator-taverna-engine git commit:
taverna-reference-types
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/StringToStringReference.java
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/StringToStringReference.java b/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/StringToStringReference.java
new file mode 100644
index 0000000..55b0573
--- /dev/null
+++ b/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/StringToStringReference.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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.external.object;
+
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+import net.sf.taverna.t2.reference.ValueToReferenceConversionException;
+import net.sf.taverna.t2.reference.ValueToReferenceConverterSPI;
+
+/**
+ * Convert a String to a StringReference
+ *
+ * @author Tom Oinn
+ */
+public class StringToStringReference implements ValueToReferenceConverterSPI {
+ /**
+ * Can convert if the object is an instance of java.lang.String
+ */
+ @Override
+ public boolean canConvert(Object o, ReferenceContext context) {
+ return o instanceof String;
+ }
+
+ /**
+ * Return a new InlineStringReference wrapping the supplied String
+ */
+ @Override
+ public ExternalReferenceSPI convert(Object o, ReferenceContext context)
+ throws ValueToReferenceConversionException {
+ InlineStringReference result = new InlineStringReference();
+ result.setContents((String) o);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.java
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.java b/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.java
new file mode 100644
index 0000000..18b66f2
--- /dev/null
+++ b/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * 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.external.object;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import net.sf.taverna.t2.reference.AbstractExternalReference;
+import net.sf.taverna.t2.reference.ExternalReferenceSPI;
+import net.sf.taverna.t2.reference.ReferenceContext;
+
+/**
+ * Implementation of ExternalReferenceSPI used to refer to objects in the local
+ * virtual machine.
+ *
+ * @author Stian Soiland-Reyes
+ * @author Alex Nenadic
+ */
+public class VMObjectReference extends AbstractExternalReference implements
+ ExternalReferenceSPI, Serializable {
+ private static final long serialVersionUID = 6708284419760319684L;
+ private static final Charset UTF8 = Charset.forName("UTF-8");
+
+ /**
+ * Mapping from objects to their UUIDs.
+ */
+ private static Map<Object, UUID> objectToUUID = new HashMap<>();
+ /**
+ * Mapping from UUIDs to objects.
+ */
+ private static Map<UUID, Object> uuidToObject = new HashMap<>();
+
+ /**
+ * Unique reference to the object.
+ */
+ private String uuid;
+
+ @Override
+ public InputStream openStream(ReferenceContext context) {
+ return new ByteArrayInputStream(getObject().toString().getBytes(UTF8));
+ }
+
+ /**
+ * Getter used by hibernate to retrieve the object uuid property.
+ */
+ public String getUuid() {
+ return uuid;
+ }
+
+ /**
+ * Setter used by hibernate to set the object uuid property.
+ */
+ public void setUuid(String id) {
+ if (uuid != null)
+ throw new IllegalStateException("Can't set UUID of an object twice");
+ this.uuid = id;
+ }
+
+ public void setObject(Object object) {
+ if (uuid != null)
+ throw new IllegalStateException("Can't set UUID an object twice");
+ UUID knownUUID = objectToUUID.get(object);
+ if (knownUUID == null) {
+ // register object
+ knownUUID = UUID.randomUUID();
+ objectToUUID.put(object, knownUUID);
+ uuidToObject.put(knownUUID, object);
+ }
+ setUuid(knownUUID.toString());
+ }
+
+ public Object getObject() {
+ return uuidToObject.get(UUID.fromString(uuid));
+ }
+
+ @Override
+ public Long getApproximateSizeInBytes() {
+ // We do not know the object size
+ return new Long(-1);
+ }
+
+ @Override
+ public VMObjectReference clone() {
+ VMObjectReference result = new VMObjectReference();
+ result.setUuid(this.getUuid());
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/package.html
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/package.html b/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/package.html
new file mode 100644
index 0000000..b5b3b72
--- /dev/null
+++ b/taverna-reference-types/src/main/java/net/sf/taverna/t2/reference/impl/external/object/package.html
@@ -0,0 +1,4 @@
+<body>
+Support for representation of inlined objects as references. Replaces
+the old Literal support
+</body>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI
new file mode 100644
index 0000000..b90bb55
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI
@@ -0,0 +1,3 @@
+# Implementation classes of ExternalReferenceBuilderSPI go here, one per line
+net.sf.taverna.t2.reference.impl.external.object.InlineStringReferenceBuilder
+net.sf.taverna.t2.reference.impl.external.object.InlineByteArrayReferenceBuilder
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
new file mode 100644
index 0000000..d4ad547
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceSPI
@@ -0,0 +1,6 @@
+# Implementation classes of ExternalReferenceSPI go here, one per line
+net.sf.taverna.t2.reference.impl.external.file.FileReference
+net.sf.taverna.t2.reference.impl.external.http.HttpReference
+net.sf.taverna.t2.reference.impl.external.object.InlineStringReference
+net.sf.taverna.t2.reference.impl.external.object.InlineByteArrayReference
+net.sf.taverna.t2.reference.impl.external.object.VMObjectReference
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI
new file mode 100644
index 0000000..a5547db
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ExternalReferenceTranslatorSPI
@@ -0,0 +1,3 @@
+# Implementation classes of ExternalReferenceTranslatorSPI go here, one per line
+net.sf.taverna.t2.reference.impl.external.object.InlineByteToInlineStringTranslator
+net.sf.taverna.t2.reference.impl.external.object.InlineStringToInlineByteTranslator
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.StreamToValueConverterSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.StreamToValueConverterSPI b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.StreamToValueConverterSPI
new file mode 100644
index 0000000..a433461
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.StreamToValueConverterSPI
@@ -0,0 +1,7 @@
+# Implementation classes of StreamToValueConverterSPI go here, one per line
+net.sf.taverna.t2.reference.impl.external.object.StreamToStringConverter
+net.sf.taverna.t2.reference.impl.external.object.StreamToByteArrayConverter
+net.sf.taverna.t2.reference.impl.external.object.StreamToVMObjectReferenceConverter
+net.sf.taverna.t2.reference.impl.external.object.StreamToDoubleConverter
+net.sf.taverna.t2.reference.impl.external.object.StreamToBooleanConverter
+net.sf.taverna.t2.reference.impl.external.object.StreamToIntegerConverter
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI
new file mode 100644
index 0000000..e1c3593
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/services/net.sf.taverna.t2.reference.ValueToReferenceConverterSPI
@@ -0,0 +1,8 @@
+# Implementation classes of ValueToReferenceConverterSPI go here, one per line
+net.sf.taverna.t2.reference.impl.external.file.FileToFileReference
+net.sf.taverna.t2.reference.impl.external.http.UrlToHttpReference
+net.sf.taverna.t2.reference.impl.external.object.StringToStringReference
+net.sf.taverna.t2.reference.impl.external.object.ByteArrayToByteArrayReference
+net.sf.taverna.t2.reference.impl.external.object.NumberToStringReference
+net.sf.taverna.t2.reference.impl.external.object.CharacterToStringReference
+net.sf.taverna.t2.reference.impl.external.object.BooleanToStringReference
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context-osgi.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context-osgi.xml b/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context-osgi.xml
new file mode 100644
index 0000000..aeed47f
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context-osgi.xml
@@ -0,0 +1,33 @@
+<?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="inlineStringReferenceBuilder" interface="net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI" />
+ <service ref="inlineByteArrayReferenceBuilder" interface="net.sf.taverna.t2.reference.ExternalReferenceBuilderSPI" />
+
+ <service ref="fileReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="httpReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="inlineStringReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="inlineByteArrayReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+ <service ref="vmObjectReference" interface="net.sf.taverna.t2.reference.ExternalReferenceSPI" />
+
+ <service ref="streamToStringConverter" interface="net.sf.taverna.t2.reference.StreamToValueConverterSPI" />
+ <service ref="streamToByteArrayConverter" interface="net.sf.taverna.t2.reference.StreamToValueConverterSPI" />
+ <service ref="streamToVMObjectReferenceConverter" interface="net.sf.taverna.t2.reference.StreamToValueConverterSPI" />
+ <service ref="streamToDoubleConverter" interface="net.sf.taverna.t2.reference.StreamToValueConverterSPI" />
+ <service ref="streamToBooleanConverter" interface="net.sf.taverna.t2.reference.StreamToValueConverterSPI" />
+ <service ref="streamToIntegerConverter" interface="net.sf.taverna.t2.reference.StreamToValueConverterSPI" />
+
+ <service ref="fileToFileReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+ <service ref="urlToHttpReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+ <service ref="stringToStringReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+ <service ref="byteArrayToByteArrayReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+ <service ref="numberToStringReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+ <service ref="characterToStringReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+ <service ref="booleanToStringReference" interface="net.sf.taverna.t2.reference.ValueToReferenceConverterSPI" />
+
+</beans:beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context.xml b/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context.xml
new file mode 100644
index 0000000..6b7a4cb
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/META-INF/spring/reference-core-extensions-context.xml
@@ -0,0 +1,31 @@
+<?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="inlineStringReferenceBuilder" class="net.sf.taverna.t2.reference.impl.external.object.InlineStringReferenceBuilder" />
+ <bean id="inlineByteArrayReferenceBuilder" class="net.sf.taverna.t2.reference.impl.external.object.InlineByteArrayReferenceBuilder" />
+
+ <bean id="fileReference" class="net.sf.taverna.t2.reference.impl.external.file.FileReference" />
+ <bean id="httpReference" class="net.sf.taverna.t2.reference.impl.external.http.HttpReference" />
+ <bean id="inlineStringReference" class="net.sf.taverna.t2.reference.impl.external.object.InlineStringReference" />
+ <bean id="inlineByteArrayReference" class="net.sf.taverna.t2.reference.impl.external.object.InlineByteArrayReference" />
+ <bean id="vmObjectReference" class="net.sf.taverna.t2.reference.impl.external.object.VMObjectReference" />
+
+ <bean id="streamToStringConverter" class="net.sf.taverna.t2.reference.impl.external.object.StreamToStringConverter" />
+ <bean id="streamToByteArrayConverter" class="net.sf.taverna.t2.reference.impl.external.object.StreamToByteArrayConverter" />
+ <bean id="streamToVMObjectReferenceConverter" class="net.sf.taverna.t2.reference.impl.external.object.StreamToVMObjectReferenceConverter" />
+ <bean id="streamToDoubleConverter" class="net.sf.taverna.t2.reference.impl.external.object.StreamToDoubleConverter" />
+ <bean id="streamToBooleanConverter" class="net.sf.taverna.t2.reference.impl.external.object.StreamToBooleanConverter" />
+ <bean id="streamToIntegerConverter" class="net.sf.taverna.t2.reference.impl.external.object.StreamToIntegerConverter" />
+
+ <bean id="fileToFileReference" class="net.sf.taverna.t2.reference.impl.external.file.FileToFileReference" />
+ <bean id="urlToHttpReference" class="net.sf.taverna.t2.reference.impl.external.http.UrlToHttpReference" />
+ <bean id="stringToStringReference" class="net.sf.taverna.t2.reference.impl.external.object.StringToStringReference" />
+ <bean id="byteArrayToByteArrayReference" class="net.sf.taverna.t2.reference.impl.external.object.ByteArrayToByteArrayReference" />
+ <bean id="numberToStringReference" class="net.sf.taverna.t2.reference.impl.external.object.NumberToStringReference" />
+ <bean id="characterToStringReference" class="net.sf.taverna.t2.reference.impl.external.object.CharacterToStringReference" />
+ <bean id="booleanToStringReference" class="net.sf.taverna.t2.reference.impl.external.object.BooleanToStringReference" />
+
+</beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/file/FileReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/file/FileReference.hbm.xml b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/file/FileReference.hbm.xml
new file mode 100644
index 0000000..9a8fc05
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/file/FileReference.hbm.xml
@@ -0,0 +1,18 @@
+<?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 file reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2.reference.impl.external.file.FileReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- FileReference specific properties below here -->
+ <property name="filePath" type="string" />
+ <property name="dataNatureName" type="string"/>
+ <property name="charset" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/http/HttpReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/http/HttpReference.hbm.xml b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/http/HttpReference.hbm.xml
new file mode 100644
index 0000000..99af97c
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/http/HttpReference.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 http and https reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2.reference.impl.external.http.HttpReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- HttpReference specific properties below here -->
+ <property name="httpUrlString" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineByteArrayReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineByteArrayReference.hbm.xml b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineByteArrayReference.hbm.xml
new file mode 100644
index 0000000..8f9ff44
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineByteArrayReference.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 inline byte array reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2.reference.impl.external.object.InlineByteArrayReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- Reference specific props -->
+ <property name="contents" type="text" length="1000000000" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineStringReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineStringReference.hbm.xml b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineStringReference.hbm.xml
new file mode 100644
index 0000000..d81b227
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/InlineStringReference.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 inline string reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2.reference.impl.external.object.InlineStringReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- Reference specific props -->
+ <property name="contents" type="text" length="1000000000"/>
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.hbm.xml
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.hbm.xml b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.hbm.xml
new file mode 100644
index 0000000..74c47a7
--- /dev/null
+++ b/taverna-reference-types/src/main/resources/net/sf/taverna/t2/reference/impl/external/object/VMObjectReference.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 VM object reference bean -->
+<hibernate-mapping>
+ <joined-subclass
+ name="net.sf.taverna.t2.reference.impl.external.object.VMObjectReference"
+ extends="net.sf.taverna.t2.reference.AbstractExternalReference">
+ <!-- Link to primary key from abstract superclass -->
+ <key column="bean_id" />
+ <!-- VMObjectReference specific properties below here -->
+ <property name="uuid" type="string" />
+ </joined-subclass>
+</hibernate-mapping>
+
http://git-wip-us.apache.org/repos/asf/incubator-taverna-engine/blob/cb77125a/taverna-reference-types/src/test/java/net/sf/taverna/t2/reference/impl/external/object/ByteArrayToStringTest.java
----------------------------------------------------------------------
diff --git a/taverna-reference-types/src/test/java/net/sf/taverna/t2/reference/impl/external/object/ByteArrayToStringTest.java b/taverna-reference-types/src/test/java/net/sf/taverna/t2/reference/impl/external/object/ByteArrayToStringTest.java
new file mode 100644
index 0000000..5afa878
--- /dev/null
+++ b/taverna-reference-types/src/test/java/net/sf/taverna/t2/reference/impl/external/object/ByteArrayToStringTest.java
@@ -0,0 +1,91 @@
+package net.sf.taverna.t2.reference.impl.external.object;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.nio.charset.Charset;
+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.t2.reference.impl.EmptyReferenceContext;
+import net.sf.taverna.t2.reference.impl.TranslationPath;
+import net.sf.taverna.t2referencetest.DummyReferenceSet;
+
+import org.junit.Test;
+
+public class ByteArrayToStringTest {
+
+ protected TranslationPath path = new TranslationPath();
+ private final Charset UTF8 = Charset.forName("UTF-8");
+ // cleverly including the supplementary character U+10400
+ // which in UTF8 should be \xf0\x90\x90\x80
+ private final String string = "Ferronni\u00e8re \ud801\udc00";
+
+
+ @Test
+ public void translateStringToByteTranslator() throws Exception {
+ ReferenceContext context = new EmptyReferenceContext();
+ InlineStringReference inlineString = new InlineStringReference();
+ inlineString.setContents(string);
+ path.setSourceReference(inlineString);
+ ReferenceSet rs = new DummyReferenceSet(inlineString);
+ path.getTranslators().add(new InlineStringToInlineByteTranslator());
+
+ Set<ExternalReferenceSPI> set = path.doTranslation(rs, context);
+ assertEquals(1, set.size());
+ InlineByteArrayReference byteRef = (InlineByteArrayReference) set.iterator().next();
+
+ assertEquals(string, new String(byteRef.getValue(), UTF8));
+ }
+
+ @Test
+ public void translateByteToStringTranslator() throws Exception {
+ ReferenceContext context = new EmptyReferenceContext();
+ InlineByteArrayReference inlineByte = new InlineByteArrayReference();
+ inlineByte.setValue(string.getBytes(UTF8));
+ path.setSourceReference(inlineByte);
+ ReferenceSet rs = new DummyReferenceSet(inlineByte);
+ path.getTranslators().add(new InlineByteToInlineStringTranslator());
+
+ Set<ExternalReferenceSPI> set = path.doTranslation(rs, context);
+ assertEquals(1, set.size());
+ InlineStringReference inlineString = (InlineStringReference) set.iterator().next();
+ assertEquals(string, inlineString.getContents());
+ }
+
+
+ @Test
+ public void translateStringToByteArrayBuilder() throws Exception {
+ ReferenceContext context = new EmptyReferenceContext();
+ InlineStringReference inlineString = new InlineStringReference();
+ inlineString.setContents(string);
+ path.setSourceReference(inlineString);
+ ReferenceSet rs = new DummyReferenceSet(inlineString);
+ path.setInitialBuilder(new InlineByteArrayReferenceBuilder());
+ Set<ExternalReferenceSPI> set = path.doTranslation(rs, context);
+ assertEquals(1, set.size());
+ InlineByteArrayReference byteRef = (InlineByteArrayReference) set.iterator().next();
+
+ assertEquals(string, new String(byteRef.getValue(), UTF8));
+ }
+
+ @Test
+ public void translateByteArrayToStringBuilder() throws Exception {
+ ReferenceContext context = new EmptyReferenceContext();
+ InlineByteArrayReference inlineByte = new InlineByteArrayReference();
+ inlineByte.setValue(string.getBytes(UTF8));
+ path.setSourceReference(inlineByte);
+ ReferenceSet rs = new DummyReferenceSet(inlineByte);
+ path.setInitialBuilder(new InlineStringReferenceBuilder());
+ Set<ExternalReferenceSPI> set = path.doTranslation(rs, context);
+ assertEquals(1, set.size());
+ assertTrue(set.iterator().next() instanceof InlineStringReference);
+ InlineStringReference inlineString = (InlineStringReference) set.iterator().next();
+ assertEquals(string, inlineString.getContents());
+ //System.out.println(string);
+ }
+
+
+}