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 <[email protected]>
Authored: Sun Jul 10 13:00:21 2016 +0100
Committer: edikaradumi <[email protected]>
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


Reply via email to