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 2016/08/12 13:12:50 UTC

[02/46] incubator-taverna-plugin-gis git commit: added current source code

added current source code


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/commit/7e06e81f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/tree/7e06e81f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/diff/7e06e81f

Branch: refs/heads/taverna2
Commit: 7e06e81f774bcff23caf3c73b08e6740c28ae6e5
Parents: 
Author: edikaradumi <ed...@gmail.com>
Authored: Sun Jul 10 13:00:21 2016 +0100
Committer: edikaradumi <ed...@gmail.com>
Committed: Sun Jul 10 13:00:21 2016 +0100

----------------------------------------------------------------------
 .project                                        |  17 ++
 .settings/org.eclipse.core.resources.prefs      |   2 +
 .settings/org.eclipse.m2e.core.prefs            |   4 +
 .../.classpath                                  |  31 +++
 apache-taverna-plugin-gis-activity-ui/.project  |  23 ++
 .../.settings/org.eclipse.core.resources.prefs  |   5 +
 .../.settings/org.eclipse.jdt.core.prefs        |   5 +
 .../.settings/org.eclipse.m2e.core.prefs        |   4 +
 apache-taverna-plugin-gis-activity-ui/pom.xml   | 133 ++++++++++
 .../gis/ui/config/GisConfigurationPanel.java    | 118 +++++++++
 .../gis/ui/config/GisConfigureAction.java       |  40 +++
 .../gis/ui/menu/GisConfigureMenuAction.java     |  27 ++
 .../gis/ui/serviceprovider/GisServiceDesc.java  | 121 +++++++++
 .../gis/ui/serviceprovider/GisServiceIcon.java  |  32 +++
 .../ui/serviceprovider/GisServiceProvider.java  | 162 ++++++++++++
 .../GisServiceProviderConfig.java               |  31 +++
 .../ui/view/GisActivityContextViewFactory.java  |  22 ++
 .../taverna/gis/ui/view/GisContextualView.java  |  68 +++++
 ...rvicedescriptions.ServiceDescriptionProvider |   1 +
 .../net.sf.taverna.t2.ui.menu.MenuComponent     |   1 +
 ...a.t2.workbench.activityicons.ActivityIconSPI |   1 +
 ...ntextualviews.activity.ContextualViewFactory |   1 +
 .../src/main/resources/exampleIcon.png          | Bin 0 -> 3654 bytes
 .../ui/TavernaWorkbenchWithExamplePlugin.java   |  21 ++
 .../target/classes/META-INF/MANIFEST.MF         |   5 +
 .../pom.properties                              |   7 +
 .../pom.xml                                     | 133 ++++++++++
 ...rvicedescriptions.ServiceDescriptionProvider |   1 +
 .../net.sf.taverna.t2.ui.menu.MenuComponent     |   1 +
 ...a.t2.workbench.activityicons.ActivityIconSPI |   1 +
 ...ntextualviews.activity.ContextualViewFactory |   1 +
 .../target/classes/exampleIcon.png              | Bin 0 -> 3654 bytes
 .../gis/ui/config/GisConfigurationPanel.class   | Bin 0 -> 3360 bytes
 .../gis/ui/config/GisConfigureAction.class      | Bin 0 -> 2449 bytes
 .../gis/ui/menu/GisConfigureMenuAction.class    | Bin 0 -> 1330 bytes
 .../gis/ui/serviceprovider/GisServiceDesc.class | Bin 0 -> 3967 bytes
 .../gis/ui/serviceprovider/GisServiceIcon.class | Bin 0 -> 1538 bytes
 .../ui/serviceprovider/GisServiceProvider.class | Bin 0 -> 7063 bytes
 .../GisServiceProviderConfig.class              | Bin 0 -> 1294 bytes
 .../ui/view/GisActivityContextViewFactory.class | Bin 0 -> 1501 bytes
 .../taverna/gis/ui/view/GisContextualView.class | Bin 0 -> 2207 bytes
 .../ui/TavernaWorkbenchWithExamplePlugin.class  | Bin 0 -> 616 bytes
 apache-taverna-plugin-gis-activity/.classpath   |  31 +++
 apache-taverna-plugin-gis-activity/.project     |  23 ++
 .../.settings/org.eclipse.core.resources.prefs  |   5 +
 .../.settings/org.eclipse.jdt.core.prefs        |   5 +
 .../.settings/org.eclipse.m2e.core.prefs        |   4 +
 apache-taverna-plugin-gis-activity/pom.xml      |  45 ++++
 .../org/apache/taverna/gis/GisActivity.java     | 248 +++++++++++++++++++
 .../gis/GisActivityConfigurationBean.java       |  52 ++++
 .../taverna/gis/GisActivityHealthChecker.java   |  61 +++++
 ...averna.t2.workflowmodel.health.HealthChecker |   1 +
 .../org/apache/taverna/gis/GisActivityTest.java | 118 +++++++++
 .../target/classes/META-INF/MANIFEST.MF         |   5 +
 .../pom.properties                              |   7 +
 .../apache-taverna-plugin-gis-activity/pom.xml  |  45 ++++
 ...averna.t2.workflowmodel.health.HealthChecker |   1 +
 .../org/apache/taverna/gis/GisActivity$1.class  | Bin 0 -> 6765 bytes
 .../org/apache/taverna/gis/GisActivity.class    | Bin 0 -> 4153 bytes
 .../gis/GisActivityConfigurationBean.class      | Bin 0 -> 1006 bytes
 .../taverna/gis/GisActivityHealthChecker.class  | Bin 0 -> 2896 bytes
 .../apache/taverna/gis/GisActivityTest.class    | Bin 0 -> 5180 bytes
 .../wps_config.xml                              | 212 ++++++++++++++++
 apache-taverna-plugin-gis-plugin/.project       |  17 ++
 .../.settings/org.eclipse.core.resources.prefs  |   2 +
 .../.settings/org.eclipse.m2e.core.prefs        |   4 +
 apache-taverna-plugin-gis-plugin/pom.xml        |  41 +++
 pom.xml                                         | 144 +++++++++++
 68 files changed, 2090 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/.project
----------------------------------------------------------------------
diff --git a/.project b/.project
new file mode 100644
index 0000000..5049237
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>apache-taverna-plugin-gis</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/.settings/org.eclipse.core.resources.prefs
----------------------------------------------------------------------
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/.settings/org.eclipse.m2e.core.prefs
----------------------------------------------------------------------
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/.classpath
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/.classpath b/apache-taverna-plugin-gis-activity-ui/.classpath
new file mode 100644
index 0000000..698778f
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/.classpath
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/.project
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/.project b/apache-taverna-plugin-gis-activity-ui/.project
new file mode 100644
index 0000000..f53dd10
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>apache-taverna-plugin-gis-activity-ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.core.resources.prefs
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.core.resources.prefs b/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..839d647
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.jdt.core.prefs b/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ec4300d
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.m2e.core.prefs
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.m2e.core.prefs b/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/pom.xml
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/pom.xml b/apache-taverna-plugin-gis-activity-ui/pom.xml
new file mode 100644
index 0000000..0d82976
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/pom.xml
@@ -0,0 +1,133 @@
+<?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.gis</groupId>
+		<artifactId>apache-taverna-plugin-gis</artifactId>
+		<version>0.0.1-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>apache-taverna-plugin-gis-activity-ui</artifactId>
+	<name>Gis Taverna activity UI bindings</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>apache-taverna-plugin-gis-activity</artifactId>
+			<version>0.0.1-incubating-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-api</groupId>
+			<artifactId>activity-palette-api</artifactId>
+			<version>${t2.ui.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-api</groupId>
+			<artifactId>menu-api</artifactId>
+			<version>${t2.ui.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-api</groupId>
+			<artifactId>contextual-views-api</artifactId>
+			<version>${t2.ui.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-impl</groupId>
+			<artifactId>activity-tools</artifactId>
+			<version>${t2.ui.impl.version}</version>
+		</dependency>
+
+		<!-- Workbench runtime for testing from IDE, remove if not using TavernaWorkbenchWithExamplePlugin.main() -->
+		<dependency>
+			<groupId>net.sf.taverna.t2.taverna-workbench</groupId>
+			<artifactId>workbench-dev</artifactId>
+			<version>${t2.workbench.version}</version>
+			<scope>test</scope>
+
+			<exclusions>
+
+				<!-- Disable various activities that are not relevant to testing our 
+					example activity. If you want to re-enable for instance WSDL activity, remember 
+					to comment out the exclusion for both wsdl-activity-ui and wsdl-activity 
+					further down. -->
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>apiconsumer-activity-ui</artifactId>
+				</exclusion>
+
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>biomoby-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>biomart-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>soaplab-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>ncbi-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>rshell-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>spreadsheet-import-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>wsdl-activity-ui</artifactId>
+				</exclusion>
+
+				<!-- .. and the t2.activities counterparts -->
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>apiconsumer-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>biomoby-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>biomart-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>soaplab-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>ncbi-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>rshell-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>spreadsheet-import-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>wsdl-activity</artifactId>
+				</exclusion>
+				<!-- Perspectives pulling in too many dependencies -->
+				<exclusion>
+				 	<!--  fails due to direct dependency to WSDL -->
+				 	<groupId>net.sf.taverna.t2.ui-exts</groupId>
+				 	<artifactId>perspective-biocatalogue</artifactId>
+				</exclusion>
+				<exclusion>
+				 	<groupId>net.sf.taverna.t2.ui-exts</groupId>
+				 	<artifactId>perspective-myexperiment</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+	</dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigurationPanel.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigurationPanel.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigurationPanel.java
new file mode 100644
index 0000000..2980ffd
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigurationPanel.java
@@ -0,0 +1,118 @@
+package org.apache.taverna.gis.ui.config;
+
+import java.awt.GridLayout;
+import java.net.URI;
+
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+
+import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;
+
+import org.apache.taverna.gis.GisActivity;
+import org.apache.taverna.gis.GisActivityConfigurationBean;
+
+
+@SuppressWarnings("serial")
+public class GisConfigurationPanel
+		extends
+		ActivityConfigurationPanel<GisActivity, 
+        GisActivityConfigurationBean> {
+
+	private GisActivity activity;
+	private GisActivityConfigurationBean configBean;
+	
+	private JTextField fieldString;
+	private JTextField fieldURI;
+
+	public GisConfigurationPanel(GisActivity activity) {
+		this.activity = activity;
+		initGui();
+	}
+
+	protected void initGui() {
+		removeAll();
+		setLayout(new GridLayout(0, 2));
+
+		// FIXME: Create GUI depending on activity configuration bean
+		JLabel labelString = new JLabel("Example string:");
+		add(labelString);
+		fieldString = new JTextField(20);
+		add(fieldString);
+		labelString.setLabelFor(fieldString);
+
+		JLabel labelURI = new JLabel("Example URI:");
+		add(labelURI);
+		fieldURI = new JTextField(25);
+		add(fieldURI);
+		labelURI.setLabelFor(fieldURI);
+
+		// Populate fields from activity configuration bean
+		refreshConfiguration();
+	}
+
+	/**
+	 * Check that user values in UI are valid
+	 */
+	@Override
+	public boolean checkValues() {
+		try {
+			URI.create(fieldURI.getText());
+		} catch (IllegalArgumentException ex) {
+			JOptionPane.showMessageDialog(this, ex.getCause().getMessage(),
+					"Invalid URI", JOptionPane.ERROR_MESSAGE);
+			// Not valid, return false
+			return false;
+		}
+		// All valid, return true
+		return true;
+	}
+
+	/**
+	 * Return configuration bean generated from user interface last time
+	 * noteConfiguration() was called.
+	 */
+	@Override
+	public GisActivityConfigurationBean getConfiguration() {
+		// Should already have been made by noteConfiguration()
+		return configBean;
+	}
+
+	/**
+	 * Check if the user has changed the configuration from the original
+	 */
+	@Override
+	public boolean isConfigurationChanged() {
+		String originalString = configBean.getProcessIdentifier();
+		String originalUri = configBean.getOgcServiceUri().toASCIIString();
+		// true (changed) unless all fields match the originals
+		return ! (originalString.equals(fieldString.getText())
+				&& originalUri.equals(fieldURI.getText()));
+	}
+
+	/**
+	 * Prepare a new configuration bean from the UI, to be returned with
+	 * getConfiguration()
+	 */
+	@Override
+	public void noteConfiguration() {
+		configBean = new GisActivityConfigurationBean();
+		
+		// FIXME: Update bean fields from your UI elements
+		configBean.setProcessIdentifier(fieldString.getText());
+		configBean.setOgcServiceUri(URI.create(fieldURI.getText()));
+	}
+
+	/**
+	 * Update GUI from a changed configuration bean (perhaps by undo/redo).
+	 * 
+	 */
+	@Override
+	public void refreshConfiguration() {
+		configBean = activity.getConfiguration();
+		
+		// FIXME: Update UI elements from your bean fields
+		fieldString.setText(configBean.getProcessIdentifier());
+		fieldURI.setText(configBean.getOgcServiceUri().toASCIIString());
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigureAction.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigureAction.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigureAction.java
new file mode 100644
index 0000000..cc900ba
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/config/GisConfigureAction.java
@@ -0,0 +1,40 @@
+package org.apache.taverna.gis.ui.config;
+
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+
+import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
+import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;
+
+import org.apache.taverna.gis.GisActivity;
+import org.apache.taverna.gis.GisActivityConfigurationBean;
+
+@SuppressWarnings("serial")
+public class GisConfigureAction
+		extends
+		ActivityConfigurationAction<GisActivity,
+        GisActivityConfigurationBean> {
+
+	public GisConfigureAction(GisActivity activity, Frame owner) {
+		super(activity);
+	}
+
+	@SuppressWarnings("unchecked")
+	public void actionPerformed(ActionEvent e) {
+		ActivityConfigurationDialog<GisActivity, GisActivityConfigurationBean> currentDialog = ActivityConfigurationAction
+				.getDialog(getActivity());
+		if (currentDialog != null) {
+			currentDialog.toFront();
+			return;
+		}
+		GisConfigurationPanel panel = new GisConfigurationPanel(
+				getActivity());
+		ActivityConfigurationDialog<GisActivity,
+        GisActivityConfigurationBean> dialog = new ActivityConfigurationDialog<GisActivity, GisActivityConfigurationBean>(
+				getActivity(), panel);
+
+		ActivityConfigurationAction.setDialog(getActivity(), dialog);
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.java
new file mode 100644
index 0000000..5bc372d
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.java
@@ -0,0 +1,27 @@
+package org.apache.taverna.gis.ui.menu;
+
+import javax.swing.Action;
+
+import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
+import org.apache.taverna.gis.GisActivity;
+import org.apache.taverna.gis.ui.config.GisConfigureAction;
+
+public class GisConfigureMenuAction extends
+		AbstractConfigureActivityMenuAction<GisActivity> {
+
+	public GisConfigureMenuAction() {
+		super(GisActivity.class);
+	}
+
+	@Override
+	protected Action createAction() {
+		GisActivity a = findActivity();
+		Action result = null;
+		result = new GisConfigureAction(findActivity(),
+				getParentFrame());
+		result.putValue(Action.NAME, "Configure example service");
+		addMenuDots(result);
+		return result;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.java
new file mode 100644
index 0000000..fdae85b
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.java
@@ -0,0 +1,121 @@
+package org.apache.taverna.gis.ui.serviceprovider;
+
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+
+import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean;
+
+import org.apache.taverna.gis.GisActivity;
+import org.apache.taverna.gis.GisActivityConfigurationBean;
+
+public class GisServiceDesc extends ServiceDescription<GisActivityConfigurationBean> {
+
+	/**
+	 * The subclass of Activity which should be instantiated when adding a service
+	 * for this description 
+	 */
+	@Override
+	public Class<? extends Activity<GisActivityConfigurationBean>> getActivityClass() {
+		return GisActivity.class;
+	}
+
+	/**
+	 * The configuration bean which is to be used for configuring the instantiated activity.
+	 * Making this bean will typically require some of the fields set on this service
+	 * description, like an endpoint URL or method name. 
+	 * 
+	 */
+	@Override
+	public GisActivityConfigurationBean getActivityConfiguration() {
+		GisActivityConfigurationBean bean = new GisActivityConfigurationBean();
+		bean.setOgcServiceUri(ogcServiceUri);
+		bean.setProcessIdentifier(processIdentifier);
+		
+		bean.setInputPortDefinitions(inputPortDefinitions);
+		bean.setOutputPortDefinitions(outputPortDefinitions);
+		
+		return bean;
+	}
+
+	/**
+	 * An icon to represent this service description in the service palette.
+	 */
+	@Override
+	public Icon getIcon() {
+		return GisServiceIcon.getIcon();
+	}
+
+	/**
+	 * The display name that will be shown in service palette and will
+	 * be used as a template for processor name when added to workflow.
+	 */
+	@Override
+	public String getName() {
+		return processIdentifier;
+	}
+
+	/**
+	 * The path to this service description in the service palette. Folders
+	 * will be created for each element of the returned path.
+	 */
+	@Override
+	public List<String> getPath() {
+		// For deeper paths you may return several strings
+		return Arrays.asList("GIS", "WPS " + getOgcServiceUri());
+	}
+
+	/**
+	 * Return a list of data values uniquely identifying this service
+	 * description (to avoid duplicates). Include only primary key like fields,
+	 * ie. ignore descriptions, icons, etc.
+	 */
+	@Override
+	protected List<? extends Object> getIdentifyingData() {
+		// FIXME: Use your fields instead of example fields
+		return Arrays.<Object>asList(ogcServiceUri, processIdentifier);
+	}
+
+	
+	// FIXME: Replace example fields and getters/setters with any required
+	// and optional fields. (All fields are searchable in the Service palette,
+	// for instance try a search for exampleString:3)
+	private URI ogcServiceUri;
+	private String processIdentifier;
+	private List<ActivityInputPortDefinitionBean> inputPortDefinitions;
+	private List<ActivityOutputPortDefinitionBean> outputPortDefinitions;
+	
+	public URI getOgcServiceUri() {
+		return ogcServiceUri;
+	}
+	public void setOgcServiceUri(URI ogcServiceUri) {
+		this.ogcServiceUri = ogcServiceUri;
+	}
+	public String getProcessIdentifier() {
+		return processIdentifier;
+	}
+	public void setProcessIdentifier(String processIdentifier) {
+		this.processIdentifier = processIdentifier;
+	}
+
+	public List<ActivityInputPortDefinitionBean> getInputPortDefinitions() {
+		return inputPortDefinitions;
+	}
+
+	public void setInputPortDefinitions(List<ActivityInputPortDefinitionBean> inputPortDefinitions) {
+		this.inputPortDefinitions = inputPortDefinitions;
+	}
+
+	public List<ActivityOutputPortDefinitionBean> getOutputPortDefinitions() {
+		return outputPortDefinitions;
+	}
+
+	public void setOutputPortDefinitions(List<ActivityOutputPortDefinitionBean> outputPortDefinitions) {
+		this.outputPortDefinitions = outputPortDefinitions;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.java
new file mode 100644
index 0000000..2c3a1b0
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.java
@@ -0,0 +1,32 @@
+package org.apache.taverna.gis.ui.serviceprovider;
+
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+
+import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import org.apache.taverna.gis.GisActivity;
+
+public class GisServiceIcon implements ActivityIconSPI {
+
+	private static Icon icon;
+
+	public int canProvideIconScore(Activity<?> activity) {
+		if (activity instanceof GisActivity) {
+			return DEFAULT_ICON;
+		}
+		return NO_ICON;
+	}
+
+	public Icon getIcon(Activity<?> activity) {
+		return getIcon();
+	}
+	
+	public static Icon getIcon() {
+		if (icon == null) {
+			icon = new ImageIcon(GisServiceIcon.class.getResource("/exampleIcon.png"));
+		}
+		return icon;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
new file mode 100644
index 0000000..d252201
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
@@ -0,0 +1,162 @@
+package org.apache.taverna.gis.ui.serviceprovider;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.Icon;
+
+import org.n52.wps.client.WPSClientSession;
+
+import net.opengis.wps.x100.InputDescriptionType;
+import net.opengis.wps.x100.OutputDescriptionType;
+import net.opengis.wps.x100.ProcessDescriptionType;
+import net.sf.taverna.t2.servicedescriptions.AbstractConfigurableServiceProvider;
+import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;
+import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
+import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean;
+
+public class GisServiceProvider extends AbstractConfigurableServiceProvider<GisServiceProviderConfig>
+		implements ConfigurableServiceProvider<GisServiceProviderConfig> {
+
+	public GisServiceProvider() {
+		super(new GisServiceProviderConfig());
+	}
+
+	private static final URI providerId = URI
+			.create("http://cs.man.ac.uk/2016/service-provider/apache-taverna-plugin-gis");
+
+	/**
+	 * Do the actual search for services. Return using the callBack parameter.
+	 */
+	@SuppressWarnings("unchecked")
+	public void findServiceDescriptionsAsync(FindServiceDescriptionsCallBack callBack) {
+		// Use callback.status() for long-running searches
+		callBack.status("Resolving GIS services");
+
+		List<ServiceDescription> results = new ArrayList<ServiceDescription>();
+
+		// FIXME: Implement the actual service search/lookup instead
+		// of dummy for-loop
+
+		GisServiceDesc service = new GisServiceDesc();
+		// Populate the service description bean
+		service.setOgcServiceUri(getConfiguration().getOgcServiceUri());
+		service.setProcessIdentifier(getConfiguration().getProcessIdentifier());
+
+		// TODO: Optional: set description (Set a better description
+		service.setDescription(getConfiguration().getProcessIdentifier());
+
+		// TODO: Exctract in separate method 
+		// Get input ports
+		
+		WPSClientSession wpsClient = WPSClientSession.getInstance();
+
+        ProcessDescriptionType processDescription;
+		try {
+			processDescription = wpsClient
+			        .getProcessDescription(getConfiguration().getOgcServiceUri().toString(), getConfiguration().getProcessIdentifier());
+		
+			InputDescriptionType[] inputList = processDescription.getDataInputs()
+	                .getInputArray();
+
+	        List<ActivityInputPortDefinitionBean> inputPortDefinitions = new ArrayList<ActivityInputPortDefinitionBean>();
+
+	        for (InputDescriptionType input : inputList) {
+	    		ActivityInputPortDefinitionBean newInputPort = new ActivityInputPortDefinitionBean();
+	    		newInputPort.setName(input.getIdentifier().getStringValue());
+	    		newInputPort.setDepth(0);
+	    		newInputPort.setAllowsLiteralValues(true);
+	    		newInputPort.setHandledReferenceSchemes(null);
+	    		newInputPort.setTranslatedElementType(String.class);
+	    		
+	    		inputPortDefinitions.add(newInputPort);
+	    		
+	        }
+	        
+	        service.setInputPortDefinitions(inputPortDefinitions);
+			
+	        
+	        // Get output ports
+	        
+	        OutputDescriptionType[] outputList = processDescription.getProcessOutputs().getOutputArray();
+	        List<ActivityOutputPortDefinitionBean> outputPortDefinitions = new ArrayList<ActivityOutputPortDefinitionBean>();
+	        
+	        for( OutputDescriptionType output : outputList )
+	        {
+	        	ActivityOutputPortDefinitionBean newOutputPort = new ActivityOutputPortDefinitionBean();
+	        	newOutputPort.setName(output.getIdentifier().getStringValue());
+	        	newOutputPort.setDepth(0);
+	        	
+	        	outputPortDefinitions.add(newOutputPort);
+	        	
+	        }
+		
+	        service.setOutputPortDefinitions(outputPortDefinitions);
+	        
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+        
+		results.add(service);
+
+		// partialResults() can also be called several times from inside
+		// for-loop if the full search takes a long time
+		callBack.partialResults(results);
+
+		
+		
+		
+		// No more results will be coming
+		callBack.finished();
+	}
+	
+	/**
+	 * Icon for service provider
+	 */
+	public Icon getIcon() {
+		return GisServiceIcon.getIcon();
+	}
+
+	/**
+	 * Name of service provider, appears in right click for 'Remove service
+	 * provider'
+	 */
+	public String getName() {
+		return "Geospatial Web Services";
+	}
+
+	@Override
+	public String toString() {
+		return "Geospatial Web Services " + getConfiguration().getProcessIdentifier();
+	}
+
+	public String getId() {
+		return providerId.toASCIIString();
+	}
+
+	@Override
+	protected List<? extends Object> getIdentifyingData() {
+		return Arrays.asList(getConfiguration().getOgcServiceUri(), getConfiguration().getProcessIdentifier());
+	}
+
+
+	@Override
+	public List<GisServiceProviderConfig> getDefaultConfigurations(){
+		
+		GisServiceProviderConfig myConfig = new GisServiceProviderConfig();
+		
+		myConfig.setOgcServiceUri(URI.create("http://localhost:8080/geoserver/ows"));
+		myConfig.setProcessIdentifier("gs:StringConcatWPS");
+		
+		return Arrays.asList(myConfig);
+		
+		
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.java
new file mode 100644
index 0000000..7b58a15
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.java
@@ -0,0 +1,31 @@
+package org.apache.taverna.gis.ui.serviceprovider;
+
+import java.net.URI;
+
+import net.sf.taverna.t2.lang.beans.PropertyAnnotation;
+
+public class GisServiceProviderConfig {
+	private URI ogcServiceUri = URI.create("http://localhost:8080/geoserver/ows");
+	private String processIdentifier = "gs:StringConcatWPS";
+	
+	// TODO: Display name not working, hide getClass
+	
+	@PropertyAnnotation(displayName="OGC Web Service URI", preferred=true)
+	public URI getOgcServiceUri() {
+		return ogcServiceUri;
+	}
+	public void setOgcServiceUri(URI ogcServiceUri) {
+		this.ogcServiceUri = ogcServiceUri;
+	}
+	
+	// TODO: Display name not working
+	
+	@PropertyAnnotation(displayName="Process Identifier")
+	public String getProcessIdentifier() {
+		return processIdentifier;
+	}
+	public void setProcessIdentifier(String processIdentifier) {
+		this.processIdentifier = processIdentifier;
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.java
new file mode 100644
index 0000000..f2c7f4e
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.java
@@ -0,0 +1,22 @@
+package org.apache.taverna.gis.ui.view;
+
+import java.util.Arrays;
+import java.util.List;
+
+import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
+import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
+
+import org.apache.taverna.gis.GisActivity;
+
+public class GisActivityContextViewFactory implements
+		ContextualViewFactory<GisActivity> {
+
+	public boolean canHandle(Object selection) {
+		return selection instanceof GisActivity;
+	}
+
+	public List<ContextualView> getViews(GisActivity selection) {
+		return Arrays.<ContextualView>asList(new GisContextualView(selection));
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisContextualView.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisContextualView.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisContextualView.java
new file mode 100644
index 0000000..78df434
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/view/GisContextualView.java
@@ -0,0 +1,68 @@
+package org.apache.taverna.gis.ui.view;
+
+import java.awt.Frame;
+
+import javax.swing.Action;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
+
+import org.apache.taverna.gis.GisActivity;
+import org.apache.taverna.gis.GisActivityConfigurationBean;
+import org.apache.taverna.gis.ui.config.GisConfigureAction;
+
+@SuppressWarnings("serial")
+public class GisContextualView extends ContextualView {
+	private final GisActivity activity;
+	private JLabel description = new JLabel("ads");
+
+	public GisContextualView(GisActivity activity) {
+		this.activity = activity;
+		initView();
+	}
+
+	@Override
+	public JComponent getMainFrame() {
+		JPanel jPanel = new JPanel();
+		jPanel.add(description);
+		refreshView();
+		return jPanel;
+	}
+
+	@Override
+	public String getViewTitle() {
+		GisActivityConfigurationBean configuration = activity
+				.getConfiguration();
+		return "Gis service " + configuration.getProcessIdentifier();
+	}
+
+	/**
+	 * Typically called when the activity configuration has changed.
+	 */
+	@Override
+	public void refreshView() {
+		GisActivityConfigurationBean configuration = activity
+				.getConfiguration();
+		description.setText("Gis service " + configuration.getOgcServiceUri()
+				+ " - " + configuration.getProcessIdentifier());
+		// TODO: Might also show extra service information looked
+		// up dynamically from endpoint/registry
+	}
+
+	/**
+	 * View position hint
+	 */
+	@Override
+	public int getPreferredPosition() {
+		// We want to be on top
+		return 100;
+	}
+	
+	@Override
+	public Action getConfigureAction(final Frame owner) {
+		return new GisConfigureAction(activity, owner);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
new file mode 100644
index 0000000..82952f3
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
@@ -0,0 +1 @@
+org.apache.taverna.gis.ui.serviceprovider.GisServiceProvider
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
new file mode 100644
index 0000000..ae4e8cb
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
@@ -0,0 +1 @@
+org.apache.taverna.gis.ui.menu.GisConfigureMenuAction

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
new file mode 100644
index 0000000..3865625
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
@@ -0,0 +1 @@
+org.apache.taverna.gis.ui.serviceprovider.GisServiceIcon

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
new file mode 100644
index 0000000..4a0f6e3
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
@@ -0,0 +1 @@
+ org.apache.taverna.gis.ui.view.GisActivityContextViewFactory

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/main/resources/exampleIcon.png
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/resources/exampleIcon.png b/apache-taverna-plugin-gis-activity-ui/src/main/resources/exampleIcon.png
new file mode 100644
index 0000000..3ef7be4
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/src/main/resources/exampleIcon.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/src/test/java/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/test/java/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.java b/apache-taverna-plugin-gis-activity-ui/src/test/java/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.java
new file mode 100644
index 0000000..ced2f43
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/src/test/java/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.java
@@ -0,0 +1,21 @@
+package org.apache.taverna.gis.ui;
+
+import net.sf.taverna.t2.workbench.dev.DeveloperWorkbench;
+
+/**
+ * Run with parameters:
+ * 
+ * -Xmx300m -XX:MaxPermSize=140m 
+ * -Dsun.swing.enableImprovedDragGesture
+ * -Dtaverna.startup=.
+ * 
+ * NOTE: Do not save any workflows made using this test mode, as the plugin
+ * information will be missing from the workflow file, and it will not open
+ * in a Taverna run normally.
+ * 
+ */
+public class TavernaWorkbenchWithExamplePlugin {
+	public static void main(String[] args) throws Exception {
+		DeveloperWorkbench.main(args);
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/MANIFEST.MF b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3d9fc4f
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Built-By: edi
+Build-Jdk: 1.8.0_92
+Created-By: Maven Integration for Eclipse
+

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.properties
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.properties b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.properties
new file mode 100644
index 0000000..51aaad8
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.properties
@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Sun Jul 10 12:53:50 BST 2016
+version=0.0.1-incubating-SNAPSHOT
+groupId=org.apache.taverna.gis
+m2e.projectName=apache-taverna-plugin-gis-activity-ui
+m2e.projectLocation=D\:\\UniManchester\\MScDissertation\\ApacheTavernaPluginGIS\\apache-taverna-plugin-gis\\apache-taverna-plugin-gis-activity-ui
+artifactId=apache-taverna-plugin-gis-activity-ui

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.xml
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.xml b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.xml
new file mode 100644
index 0000000..0d82976
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/maven/org.apache.taverna.gis/apache-taverna-plugin-gis-activity-ui/pom.xml
@@ -0,0 +1,133 @@
+<?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.gis</groupId>
+		<artifactId>apache-taverna-plugin-gis</artifactId>
+		<version>0.0.1-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>apache-taverna-plugin-gis-activity-ui</artifactId>
+	<name>Gis Taverna activity UI bindings</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>apache-taverna-plugin-gis-activity</artifactId>
+			<version>0.0.1-incubating-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-api</groupId>
+			<artifactId>activity-palette-api</artifactId>
+			<version>${t2.ui.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-api</groupId>
+			<artifactId>menu-api</artifactId>
+			<version>${t2.ui.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-api</groupId>
+			<artifactId>contextual-views-api</artifactId>
+			<version>${t2.ui.api.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.ui-impl</groupId>
+			<artifactId>activity-tools</artifactId>
+			<version>${t2.ui.impl.version}</version>
+		</dependency>
+
+		<!-- Workbench runtime for testing from IDE, remove if not using TavernaWorkbenchWithExamplePlugin.main() -->
+		<dependency>
+			<groupId>net.sf.taverna.t2.taverna-workbench</groupId>
+			<artifactId>workbench-dev</artifactId>
+			<version>${t2.workbench.version}</version>
+			<scope>test</scope>
+
+			<exclusions>
+
+				<!-- Disable various activities that are not relevant to testing our 
+					example activity. If you want to re-enable for instance WSDL activity, remember 
+					to comment out the exclusion for both wsdl-activity-ui and wsdl-activity 
+					further down. -->
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>apiconsumer-activity-ui</artifactId>
+				</exclusion>
+
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>biomoby-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>biomart-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>soaplab-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>ncbi-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>rshell-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>spreadsheet-import-activity-ui</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.ui-activities</groupId>
+					<artifactId>wsdl-activity-ui</artifactId>
+				</exclusion>
+
+				<!-- .. and the t2.activities counterparts -->
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>apiconsumer-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>biomoby-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>biomart-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>soaplab-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>ncbi-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>rshell-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>spreadsheet-import-activity</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>net.sf.taverna.t2.activities</groupId>
+					<artifactId>wsdl-activity</artifactId>
+				</exclusion>
+				<!-- Perspectives pulling in too many dependencies -->
+				<exclusion>
+				 	<!--  fails due to direct dependency to WSDL -->
+				 	<groupId>net.sf.taverna.t2.ui-exts</groupId>
+				 	<artifactId>perspective-biocatalogue</artifactId>
+				</exclusion>
+				<exclusion>
+				 	<groupId>net.sf.taverna.t2.ui-exts</groupId>
+				 	<artifactId>perspective-myexperiment</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+	</dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
new file mode 100644
index 0000000..82952f3
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
@@ -0,0 +1 @@
+org.apache.taverna.gis.ui.serviceprovider.GisServiceProvider
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
new file mode 100644
index 0000000..ae4e8cb
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
@@ -0,0 +1 @@
+org.apache.taverna.gis.ui.menu.GisConfigureMenuAction

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
new file mode 100644
index 0000000..3865625
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
@@ -0,0 +1 @@
+org.apache.taverna.gis.ui.serviceprovider.GisServiceIcon

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
new file mode 100644
index 0000000..4a0f6e3
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity-ui/target/classes/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
@@ -0,0 +1 @@
+ org.apache.taverna.gis.ui.view.GisActivityContextViewFactory

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/exampleIcon.png
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/exampleIcon.png b/apache-taverna-plugin-gis-activity-ui/target/classes/exampleIcon.png
new file mode 100644
index 0000000..3ef7be4
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/exampleIcon.png differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigurationPanel.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigurationPanel.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigurationPanel.class
new file mode 100644
index 0000000..4590625
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigurationPanel.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigureAction.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigureAction.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigureAction.class
new file mode 100644
index 0000000..72da81a
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/config/GisConfigureAction.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.class
new file mode 100644
index 0000000..5d294c4
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/menu/GisConfigureMenuAction.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.class
new file mode 100644
index 0000000..3794861
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceDesc.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.class
new file mode 100644
index 0000000..b27147a
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceIcon.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.class
new file mode 100644
index 0000000..8b23394
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.class
new file mode 100644
index 0000000..06b88e8
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/serviceprovider/GisServiceProviderConfig.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.class
new file mode 100644
index 0000000..5e6e7d3
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisActivityContextViewFactory.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisContextualView.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisContextualView.class b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisContextualView.class
new file mode 100644
index 0000000..033ba91
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/classes/org/apache/taverna/gis/ui/view/GisContextualView.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity-ui/target/test-classes/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.class
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/target/test-classes/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.class b/apache-taverna-plugin-gis-activity-ui/target/test-classes/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.class
new file mode 100644
index 0000000..3a8bf16
Binary files /dev/null and b/apache-taverna-plugin-gis-activity-ui/target/test-classes/org/apache/taverna/gis/ui/TavernaWorkbenchWithExamplePlugin.class differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/.classpath
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/.classpath b/apache-taverna-plugin-gis-activity/.classpath
new file mode 100644
index 0000000..698778f
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/.classpath
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/.project
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/.project b/apache-taverna-plugin-gis-activity/.project
new file mode 100644
index 0000000..3681ef8
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>apache-taverna-plugin-gis-activity</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/.settings/org.eclipse.core.resources.prefs
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/.settings/org.eclipse.core.resources.prefs b/apache-taverna-plugin-gis-activity/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..839d647
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding/<project>=UTF-8

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/.settings/org.eclipse.jdt.core.prefs
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/.settings/org.eclipse.jdt.core.prefs b/apache-taverna-plugin-gis-activity/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ec4300d
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/.settings/org.eclipse.m2e.core.prefs
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/.settings/org.eclipse.m2e.core.prefs b/apache-taverna-plugin-gis-activity/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/pom.xml
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/pom.xml b/apache-taverna-plugin-gis-activity/pom.xml
new file mode 100644
index 0000000..bae1259
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/pom.xml
@@ -0,0 +1,45 @@
+<?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.gis</groupId>
+		<artifactId>apache-taverna-plugin-gis</artifactId>
+		<version>0.0.1-incubating-SNAPSHOT</version>
+	</parent>
+	<artifactId>apache-taverna-plugin-gis-activity</artifactId>
+	<name>Gis Taverna activity</name>
+
+	<repositories>
+		<repository>
+			<id>n52-releases</id>
+			<name>52n Releases</name>
+			<url>http://52north.org/maven/repo/releases</url>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+		</repository>
+	</repositories>
+
+	<dependencies>
+		<dependency>
+			<groupId>net.sf.taverna.t2.core</groupId>
+			<artifactId>workflowmodel-api</artifactId>
+			<version>${t2.core.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.taverna.t2.activities</groupId>
+			<artifactId>activity-test-utils</artifactId>
+			<version>${t2.activities.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.n52.wps</groupId>
+			<artifactId>52n-wps-client-lib</artifactId>
+			<version>3.3.1</version>
+		</dependency>
+	</dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
new file mode 100644
index 0000000..fc69c28
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
@@ -0,0 +1,248 @@
+package org.apache.taverna.gis;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.geotools.ows.ServiceException;
+import org.n52.wps.client.ExecuteRequestBuilder;
+import org.n52.wps.client.ExecuteResponseAnalyser;
+import org.n52.wps.client.WPSClientException;
+import org.n52.wps.client.WPSClientSession;
+import org.n52.wps.io.data.IData;
+import org.n52.wps.io.data.binding.complex.GTVectorDataBinding;
+
+import net.opengis.wps.x100.DataType;
+import net.opengis.wps.x100.ExecuteDocument;
+import net.opengis.wps.x100.ExecuteResponseDocument;
+import net.opengis.wps.x100.OutputDataType;
+import net.opengis.wps.x100.ProcessDescriptionType;
+import net.sf.taverna.t2.invocation.InvocationContext;
+import net.sf.taverna.t2.reference.ReferenceService;
+import net.sf.taverna.t2.reference.T2Reference;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AbstractAsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.AsynchronousActivityCallback;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean;
+
+public class GisActivity extends AbstractAsynchronousActivity<GisActivityConfigurationBean>
+		implements AsynchronousActivity<GisActivityConfigurationBean> {
+
+	/*
+	 * Best practice: Keep port names as constants to avoid misspelling. This
+	 * would not apply if port names are looked up dynamically from the service
+	 * operation, like done for WSDL services.
+	 */
+	
+	private GisActivityConfigurationBean configBean;
+
+	@Override
+	public void configure(GisActivityConfigurationBean configBean) throws ActivityConfigurationException {
+
+		// TODO: Should I call HealthChecker here??
+		// Any pre-config sanity checks
+		if (configBean.getOgcServiceUri().equals("")) {
+			throw new ActivityConfigurationException("Geospatial web service URI can't be empty");
+		}
+		// Store for getConfiguration(), but you could also make
+		// getConfiguration() return a new bean from other sources
+		this.configBean = configBean;
+
+		// OPTIONAL:
+		// Do any server-side lookups and configuration, like resolving WSDLs
+
+		// myClient = new MyClient(configBean.getExampleUri());
+		// this.service = myClient.getService(configBean.getExampleString());
+
+		// REQUIRED: (Re)create input/output ports depending on configuration
+		configurePorts();
+	}
+
+	protected void configurePorts() {
+		// In case we are being reconfigured - remove existing ports first
+		// to avoid duplicates
+		removeInputs();
+		removeOutputs();
+
+		// FIXME: Replace with your input and output port definitions
+
+		for(ActivityInputPortDefinitionBean inputPort : configBean.getInputPortDefinitions())
+		{
+			addInput(inputPort.getName(),inputPort.getDepth(),inputPort.getAllowsLiteralValues(),inputPort.getHandledReferenceSchemes(), inputPort.getTranslatedElementType());
+		}
+		
+//		// Hard coded input port, expecting a single String
+//		addInput(IN_FIRSTNAME, 0, true, null, String.class);
+
+		//
+		// // Optional ports depending on configuration
+		// if (configBean.getExampleString().equals("specialCase")) {
+		// // depth 1, ie. list of binary byte[] arrays
+		// addInput(IN_EXTRA_DATA, 1, true, null, byte[].class);
+		// addOutput(OUT_REPORT, 0);
+		// }
+
+		for(ActivityOutputPortDefinitionBean outputPort : configBean.getOutputPortDefinitions())
+		{
+			addOutput(outputPort.getName(),outputPort.getDepth());
+		}
+		
+//		// Single value output port (depth 0)
+//		addOutput(OUT_FULLNAME, 0);
+//		// // Output port with list of values (depth 1)
+//		// addOutput(OUT_MORE_OUTPUTS, 1);
+
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public void executeAsynch(final Map<String, T2Reference> inputs, final AsynchronousActivityCallback callback) {
+		// Don't execute service directly now, request to be run ask to be run
+		// from thread pool and return asynchronously
+		callback.requestRun(new Runnable() {
+
+			public void run() {
+				InvocationContext context = callback.getContext();
+				ReferenceService referenceService = context.getReferenceService();
+//				// Resolve inputs
+//				String firstNameInput = (String) referenceService.renderIdentifier(inputs.get(IN_FIRSTNAME), String.class, context);
+//				String lastNameInput = (String) referenceService.renderIdentifier(inputs.get(IN_LASTNAME), String.class, context);
+
+				// // Support our configuration-dependendent input
+				// boolean optionalPorts =
+				// configBean.getExampleString().equals("specialCase");
+				//
+				// List<byte[]> special = null;
+				// // We'll also allow IN_EXTRA_DATA to be optionally not
+				// provided
+				// if (optionalPorts && inputs.containsKey(IN_EXTRA_DATA)) {
+				// // Resolve as a list of byte[]
+				// special = (List<byte[]>) referenceService.renderIdentifier(
+				// inputs.get(IN_EXTRA_DATA), byte[].class, context);
+				// }
+
+				// TODO: Do the actual service invocation
+				// try {
+				// results = this.service.invoke(firstInput, special)
+				// } catch (ServiceException ex) {
+				// callback.fail("Could not invoke Gis service " +
+				// configBean.getExampleUri(),
+				// ex);
+				// // Make sure we don't call callback.receiveResult later
+				// return;
+				// }
+
+//				String wpsURL = "http://localhost:8080/geoserver/ows";
+//
+//				String processID = "gs:StringConcatWPS";
+
+				// Register outputs
+				Map<String, T2Reference> outputs = null;
+				
+				try {
+
+					WPSClientSession wpsClient = WPSClientSession.getInstance();
+
+					ProcessDescriptionType processDescription = wpsClient.getProcessDescription(configBean.getOgcServiceUri().toString(), configBean.getProcessIdentifier());
+					// configBean.getWpsUri().toString(),
+					// configBean.getProcessBrief().getIdentifier().getStringValue());
+
+					ExecuteRequestBuilder executeBuilder = new ExecuteRequestBuilder(processDescription);
+
+					for (ActivityInputPortDefinitionBean activityInputPort : configBean.getInputPortDefinitions()) {
+						String portValue = (String) referenceService.renderIdentifier(inputs.get(activityInputPort.getName()), String.class, context);
+						executeBuilder.addLiteralData(activityInputPort.getName(), portValue);
+					}
+					
+//					executeBuilder.addLiteralData(IN_FIRSTNAME, (String) firstNameInput);
+//					executeBuilder.addLiteralData(IN_LASTNAME, (String) lastNameInput);
+
+					// execute request
+					ExecuteDocument execute = executeBuilder.getExecute();
+					// wpsClient.retrieveExecuteResponseViaPOST(configBean.getWpsUri().toString(),
+					// execute, false);
+					execute.getExecute().setService("WPS");
+					Object responseObject = null;
+					try {
+						responseObject = wpsClient.execute(configBean.getOgcServiceUri().toString(), execute);
+					} catch (WPSClientException e) {
+						// if the an error return from service
+						callback.fail(e.getServerException().xmlText());
+					}
+
+					// Register outputs
+					outputs = new HashMap<String, T2Reference>();
+					T2Reference simpleRef = null;
+					
+					if (responseObject instanceof ExecuteResponseDocument) {
+			            ExecuteResponseDocument response = (ExecuteResponseDocument) responseObject;
+			            ExecuteResponseAnalyser analyser = new ExecuteResponseAnalyser(
+			                    execute, response, processDescription);
+			            
+			            for(OutputDataType output : response.getExecuteResponse().getProcessOutputs().getOutputArray())
+						{
+			            	
+			            	DataType data = output.getData();
+			            	
+			            	if (data.isSetLiteralData())
+							{
+			            		simpleRef = referenceService.register(data.getLiteralData().getStringValue(), 0, true, context);
+
+								outputs.put(output.getIdentifier().getStringValue(), simpleRef);
+							}
+			            	
+						}
+			            
+			        }
+					
+					
+				} catch (WPSClientException e) {
+					callback.fail(e.getMessage());
+//				} catch (ServiceException e) {
+//					callback.fail(e.getMessage());
+				} catch (IOException e) {
+					callback.fail(e.getMessage());
+				}
+
+//				// Register outputs
+//				Map<String, T2Reference> outputs = new HashMap<String, T2Reference>();
+//				String simpleValue = "simple";
+//				T2Reference simpleRef = referenceService.register(simpleValue, 0, true, context);
+//				outputs.put(OUT_SIMPLE_OUTPUT, simpleRef);
+
+				// // For list outputs, only need to register the top level list
+				// List<String> moreValues = new ArrayList<String>();
+				// moreValues.add("Value 1");
+				// moreValues.add("Value 2");
+				// T2Reference moreRef = referenceService.register(moreValues,
+				// 1, true, context);
+				// outputs.put(OUT_MORE_OUTPUTS, moreRef);
+				//
+				// if (optionalPorts) {
+				// // Populate our optional output port
+				// // NOTE: Need to return output values for all defined output
+				// ports
+				// String report = "Everything OK";
+				// outputs.put(OUT_REPORT, referenceService.register(report,
+				// 0, true, context));
+				// }
+
+				// return map of output data, with empty index array as this is
+				// the only and final result (this index parameter is used if
+				// pipelining output)
+				callback.receiveResult(outputs, new int[0]);
+			}
+		});
+	}
+
+	@Override
+	public GisActivityConfigurationBean getConfiguration() {
+		return this.configBean;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityConfigurationBean.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityConfigurationBean.java b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityConfigurationBean.java
new file mode 100644
index 0000000..24e3001
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityConfigurationBean.java
@@ -0,0 +1,52 @@
+package org.apache.taverna.gis;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.List;
+
+import net.opengis.wps.x100.InputDescriptionType;
+import net.opengis.wps.x100.OutputDescriptionType;
+import net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityPortsDefinitionBean;
+
+/**
+ * Gis activity configuration bean.
+ * 
+ */
+public class GisActivityConfigurationBean extends ActivityPortsDefinitionBean implements Serializable {
+
+	/*
+	 * TODO: Remove this comment.
+	 * 
+	 * The configuration specifies the variable options and configurations for
+	 * an activity that has been added to a workflow. For instance for a WSDL
+	 * activity, the configuration contains the URL for the WSDL together with
+	 * the method name. String constant configurations contain the string that
+	 * is to be returned, while Beanshell script configurations contain both the
+	 * scripts and the input/output ports (by subclassing
+	 * ActivityPortsDefinitionBean).
+	 * 
+	 * Configuration beans are serialised as XML (currently by using XMLBeans)
+	 * when Taverna is saving the workflow definitions. Therefore the
+	 * configuration beans need to follow the JavaBeans style and only have
+	 * fields of 'simple' types such as Strings, integers, etc. Other beans can
+	 * be referenced as well, as long as they are part of the same plugin.
+	 */
+	
+	// TODO: Remove the example fields and getters/setters and add your own	
+	private URI ogcServiceUri;
+	private String processIdentifier;
+	
+	public URI getOgcServiceUri() {	
+		return ogcServiceUri;
+	}
+	public void setOgcServiceUri(URI ogcServiceUri) {
+		this.ogcServiceUri = ogcServiceUri;
+	}
+	public String getProcessIdentifier() {
+		return processIdentifier;
+	}
+	public void setProcessIdentifier(String processIdentifier) {
+		this.processIdentifier = processIdentifier;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityHealthChecker.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityHealthChecker.java b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityHealthChecker.java
new file mode 100644
index 0000000..86e78f8
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivityHealthChecker.java
@@ -0,0 +1,61 @@
+package org.apache.taverna.gis;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.taverna.t2.visit.VisitReport;
+import net.sf.taverna.t2.visit.VisitReport.Status;
+import net.sf.taverna.t2.workflowmodel.health.HealthCheck;
+import net.sf.taverna.t2.workflowmodel.health.HealthChecker;
+
+/**
+ * Gis health checker
+ * 
+ */
+public class GisActivityHealthChecker implements
+		HealthChecker<GisActivity> {
+
+	public boolean canVisit(Object o) {
+		// Return True if we can visit the object. We could do
+		// deeper (but not time consuming) checks here, for instance
+		// if the health checker only deals with GisActivity where
+		// a certain configuration option is enabled.
+		return o instanceof GisActivity;
+	}
+
+	public boolean isTimeConsuming() {
+		// Return true if the health checker does a network lookup
+		// or similar time consuming checks, in which case
+		// it would only be performed when using File->Validate workflow
+		// or File->Run.
+		return false;
+	}
+
+	public VisitReport visit(GisActivity activity, List<Object> ancestry) {
+		GisActivityConfigurationBean config = activity.getConfiguration();
+
+		// We'll build a list of subreports
+		List<VisitReport> subReports = new ArrayList<VisitReport>();
+
+		if (!config.getOgcServiceUri().isAbsolute()) {
+			// Report Severe problems we know won't work
+			VisitReport report = new VisitReport(HealthCheck.getInstance(),
+					activity, "Example URI must be absolute", HealthCheck.INVALID_URL,
+					Status.SEVERE);
+			subReports.add(report);
+		}
+
+		if (config.getProcessIdentifier().equals("")) {
+			// Warning on possible problems
+			subReports.add(new VisitReport(HealthCheck.getInstance(), activity,
+					"Example string empty", HealthCheck.NO_CONFIGURATION,
+					Status.WARNING));
+		}
+
+		// The default explanation here will be used if the subreports list is
+		// empty
+		return new VisitReport(HealthCheck.getInstance(), activity,
+				"Gis service OK", HealthCheck.NO_PROBLEM, subReports);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/7e06e81f/apache-taverna-plugin-gis-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker b/apache-taverna-plugin-gis-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
new file mode 100644
index 0000000..158ab09
--- /dev/null
+++ b/apache-taverna-plugin-gis-activity/src/main/resources/META-INF/services/net.sf.taverna.t2.workflowmodel.health.HealthChecker
@@ -0,0 +1 @@
+org.apache.taverna.gis.GisActivityHealthChecker