You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by re...@apache.org on 2015/03/26 19:52:38 UTC
[49/51] [partial] incubator-taverna-workbench git commit: all
packages are moved to org.apache.taverna.*
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/PartialServiceDescriptionsNotification.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/PartialServiceDescriptionsNotification.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/PartialServiceDescriptionsNotification.java
new file mode 100644
index 0000000..763b32a
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/PartialServiceDescriptionsNotification.java
@@ -0,0 +1,41 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import java.util.Collection;
+
+import org.apache.taverna.servicedescriptions.ServiceDescription;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class PartialServiceDescriptionsNotification extends
+ AbstractProviderNotification {
+ private final Collection<? extends ServiceDescription> serviceDescriptions;
+
+ public PartialServiceDescriptionsNotification(
+ ServiceDescriptionProvider provider,
+ Collection<? extends ServiceDescription> serviceDescriptions) {
+ super(provider, "Found " + serviceDescriptions.size() + " services");
+ this.serviceDescriptions = serviceDescriptions;
+ }
+
+ public Collection<? extends ServiceDescription> getServiceDescriptions() {
+ return serviceDescriptions;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderErrorNotification.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderErrorNotification.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderErrorNotification.java
new file mode 100644
index 0000000..ed786f5
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderErrorNotification.java
@@ -0,0 +1,38 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class ProviderErrorNotification extends AbstractProviderNotification {
+
+ private final Throwable cause;
+
+ public ProviderErrorNotification(ServiceDescriptionProvider provider,
+ String message, Throwable cause) {
+ super(provider, message);
+ this.cause = cause;
+ }
+
+ public Throwable getCause() {
+ return cause;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderStatusNotification.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderStatusNotification.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderStatusNotification.java
new file mode 100644
index 0000000..384631e
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderStatusNotification.java
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class ProviderStatusNotification extends AbstractProviderNotification {
+
+ public ProviderStatusNotification(ServiceDescriptionProvider provider,
+ String message) {
+ super(provider, message);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderUpdatingNotification.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderUpdatingNotification.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderUpdatingNotification.java
new file mode 100644
index 0000000..3e35c5d
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderUpdatingNotification.java
@@ -0,0 +1,30 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class ProviderUpdatingNotification extends AbstractProviderNotification {
+
+ public ProviderUpdatingNotification(ServiceDescriptionProvider provider) {
+ super(provider, "Updating");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderWarningNotification.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderWarningNotification.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderWarningNotification.java
new file mode 100644
index 0000000..3348504
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ProviderWarningNotification.java
@@ -0,0 +1,31 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class ProviderWarningNotification extends AbstractProviderNotification {
+
+ public ProviderWarningNotification(ServiceDescriptionProvider provider,
+ String message) {
+ super(provider, message);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/RemovedProviderEvent.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/RemovedProviderEvent.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/RemovedProviderEvent.java
new file mode 100644
index 0000000..b2b0494
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/RemovedProviderEvent.java
@@ -0,0 +1,29 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class RemovedProviderEvent extends AbstractProviderEvent {
+
+ public RemovedProviderEvent(ServiceDescriptionProvider provider) {
+ super(provider);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionProvidedEvent.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionProvidedEvent.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionProvidedEvent.java
new file mode 100644
index 0000000..520906c
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionProvidedEvent.java
@@ -0,0 +1,39 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+import java.util.Set;
+
+import org.apache.taverna.servicedescriptions.ServiceDescription;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+
+public class ServiceDescriptionProvidedEvent extends AbstractProviderEvent {
+ private final Set<ServiceDescription> serviceDescriptions;
+
+ public ServiceDescriptionProvidedEvent(ServiceDescriptionProvider provider,
+ Set<ServiceDescription> serviceDescriptions) {
+ super(provider);
+ this.serviceDescriptions = serviceDescriptions;
+ }
+
+ public Set<ServiceDescription> getServiceDescriptions() {
+ return serviceDescriptions;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionRegistryEvent.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionRegistryEvent.java b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionRegistryEvent.java
new file mode 100644
index 0000000..68c98b2
--- /dev/null
+++ b/taverna-activity-palette-api/src/main/java/org/apache/taverna/servicedescriptions/events/ServiceDescriptionRegistryEvent.java
@@ -0,0 +1,23 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+package org.apache.taverna.servicedescriptions.events;
+
+public abstract class ServiceDescriptionRegistryEvent {
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionConstants.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionConstants.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionConstants.java
deleted file mode 100644
index c5221be..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionConstants.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.sf.taverna.t2.servicedescriptions.impl;
-
-public interface ServiceDescriptionConstants {
- String SERVICE_PANEL_CONFIGURATION = "servicePanelConfiguration";
- String PROVIDERS = "providers";
- String IGNORED = "ignored";
- String PROVIDER_ID = "providerID";
- String CONFIGURATION = "configuration";
- String TYPE = "type";
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionDeserializer.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionDeserializer.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionDeserializer.java
deleted file mode 100644
index 379888a..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionDeserializer.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package net.sf.taverna.t2.servicedescriptions.impl;
-
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.CONFIGURATION;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.IGNORED;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.PROVIDERS;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.PROVIDER_ID;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.TYPE;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.taverna.scufl2.api.configurations.Configuration;
-import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-class ServiceDescriptionDeserializer {
- private List<ServiceDescriptionProvider> serviceDescriptionProviders;
-
- ServiceDescriptionDeserializer(
- List<ServiceDescriptionProvider> serviceDescriptionProviders) {
- this.serviceDescriptionProviders = serviceDescriptionProviders;
- }
-
- public void deserialize(ServiceDescriptionRegistry registry,
- File serviceDescriptionsFile) throws DeserializationException {
- try (FileInputStream serviceDescriptionFileStream = new FileInputStream(
- serviceDescriptionsFile)) {
- deserialize(registry, serviceDescriptionFileStream);
- } catch (FileNotFoundException ex) {
- throw new DeserializationException("Could not locate file "
- + serviceDescriptionsFile.getAbsolutePath()
- + " containing service descriptions.");
- } catch (IOException ex) {
- throw new DeserializationException(
- "Could not read stream containing service descriptions from "
- + serviceDescriptionsFile.getAbsolutePath(), ex);
- }
- }
-
- public void deserialize(ServiceDescriptionRegistry registry,
- URL serviceDescriptionsURL) throws DeserializationException {
- try (InputStream serviceDescriptionInputStream = serviceDescriptionsURL
- .openStream()) {
- deserialize(registry, serviceDescriptionInputStream);
- } catch (FileNotFoundException ex) {
- throw new DeserializationException("Could not open URL "
- + serviceDescriptionsURL
- + " containing service descriptions.");
- } catch (IOException ex) {
- throw new DeserializationException(
- "Could not read stream containing service descriptions from "
- + serviceDescriptionsURL, ex);
- }
- }
-
- private static final JsonFactory factory = new JsonFactory();
-
- private void deserialize(ServiceDescriptionRegistry registry,
- InputStream serviceDescriptionsInputStream) throws IOException,
- DeserializationException {
- ObjectNode node = (ObjectNode) new ObjectMapper(factory)
- .readTree(serviceDescriptionsInputStream);
- List<ServiceDescriptionProvider> providers = deserializeProviders(node,
- true);
- for (ServiceDescriptionProvider provider : providers)
- registry.addServiceDescriptionProvider(provider);
- }
-
- public Collection<? extends ServiceDescriptionProvider> deserializeDefaults(
- ServiceDescriptionRegistry registry,
- File defaultConfigurableServiceProvidersFile)
- throws DeserializationException {
- ObjectNode node;
- try (FileInputStream serviceDescriptionStream = new FileInputStream(
- defaultConfigurableServiceProvidersFile)) {
- node = (ObjectNode) new ObjectMapper(factory)
- .readTree(serviceDescriptionStream);
- } catch (IOException e) {
- throw new DeserializationException("Can't read "
- + defaultConfigurableServiceProvidersFile);
- }
- return deserializeProviders(node, false);
- }
-
- private List<ServiceDescriptionProvider> deserializeProviders(
- ObjectNode rootNode, boolean obeyIgnored)
- throws DeserializationException {
- List<ServiceDescriptionProvider> providers = new ArrayList<>();
-
- ArrayNode providersNode = (ArrayNode) rootNode.get(PROVIDERS);
- if (providersNode != null)
- for (JsonNode provider : providersNode)
- providers.add(deserializeProvider((ObjectNode) provider));
-
- if (obeyIgnored) {
- ArrayNode ignoredNode = (ArrayNode) rootNode.get(IGNORED);
- if (ignoredNode != null)
- for (JsonNode provider : ignoredNode)
- providers
- .remove(deserializeProvider((ObjectNode) provider));
- }
-
- return providers;
- }
-
- private ServiceDescriptionProvider deserializeProvider(
- ObjectNode providerNode) throws DeserializationException {
- String providerId = providerNode.get(PROVIDER_ID).asText().trim();
- ServiceDescriptionProvider provider = null;
- for (ServiceDescriptionProvider serviceProvider : serviceDescriptionProviders)
- if (serviceProvider.getId().equals(providerId)) {
- provider = serviceProvider;
- break;
- }
- if (provider == null)
- throw new DeserializationException(
- "Could not find provider with id " + providerId);
-
- /*
- * So we know the service provider now, but we need a separate instance
- * of that provider for each providerElem. E.g. we can have 2 or more
- * WSDL provider elements and need to return a separate provider
- * instance for each as they will have different configurations.
- */
- ServiceDescriptionProvider instance = provider.newInstance();
-
- if (instance instanceof ConfigurableServiceProvider)
- try {
- Configuration config = new Configuration();
- config.setType(URI.create(providerNode.get(TYPE).textValue()));
- config.setJson(providerNode.get(CONFIGURATION));
- if (config != null)
- ((ConfigurableServiceProvider) instance).configure(config);
- } catch (Exception e) {
- throw new DeserializationException(
- "Could not configure provider " + providerId
- + " using bean " + providerNode, e);
- }
- return instance;
- }
-
- @SuppressWarnings("serial")
- static class DeserializationException extends Exception {
- public DeserializationException(String string) {
- super(string);
- }
-
- public DeserializationException(String string, Exception ex) {
- super(string, ex);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionRegistryImpl.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionRegistryImpl.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionRegistryImpl.java
deleted file mode 100644
index d481727..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionRegistryImpl.java
+++ /dev/null
@@ -1,652 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.servicedescriptions.impl;
-
-import static java.lang.System.currentTimeMillis;
-import static java.lang.Thread.MIN_PRIORITY;
-import static java.lang.Thread.currentThread;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.Thread.UncaughtExceptionHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.taverna.lang.observer.MultiCaster;
-import org.apache.taverna.lang.observer.Observer;
-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.servicedescriptions.ServiceDescriptionsConfiguration;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider.FindServiceDescriptionsCallBack;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.servicedescriptions.events.AddedProviderEvent;
-import net.sf.taverna.t2.servicedescriptions.events.PartialServiceDescriptionsNotification;
-import net.sf.taverna.t2.servicedescriptions.events.ProviderErrorNotification;
-import net.sf.taverna.t2.servicedescriptions.events.ProviderStatusNotification;
-import net.sf.taverna.t2.servicedescriptions.events.ProviderUpdatingNotification;
-import net.sf.taverna.t2.servicedescriptions.events.ProviderWarningNotification;
-import net.sf.taverna.t2.servicedescriptions.events.RemovedProviderEvent;
-import net.sf.taverna.t2.servicedescriptions.events.ServiceDescriptionProvidedEvent;
-import net.sf.taverna.t2.servicedescriptions.events.ServiceDescriptionRegistryEvent;
-import net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionDeserializer.DeserializationException;
-
-import org.apache.commons.beanutils.BeanUtils;
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-
-public class ServiceDescriptionRegistryImpl implements ServiceDescriptionRegistry {
- /**
- * If a writable property of this name on a provider exists (ie. the provider has a method
- * setServiceDescriptionRegistry(ServiceDescriptionRegistry registry) - then this property will
- * be set to the current registry.
- */
- public static final String SERVICE_DESCRIPTION_REGISTRY = "serviceDescriptionRegistry";
- public static Logger logger = Logger.getLogger(ServiceDescriptionRegistryImpl.class);
- public static final ThreadGroup threadGroup = new ThreadGroup("Service description providers");
- /**
- * Total maximum timeout while waiting for description threads to finish
- */
- private static final long DESCRIPTION_THREAD_TIMEOUT_MS = 3000;
- protected static final String CONF_DIR = "conf";
- protected static final String SERVICE_PROVIDERS_FILENAME = "service_providers.xml";
- private static final String DEFAULT_CONFIGURABLE_SERVICE_PROVIDERS_FILENAME = "default_service_providers.xml";
-
- private ServiceDescriptionsConfiguration serviceDescriptionsConfig;
- private ApplicationConfiguration applicationConfiguration;
- /**
- * <code>false</code> until first call to {@link #loadServiceProviders()} - which is done by
- * first call to {@link #getServiceDescriptionProviders()}.
- */
- private boolean hasLoadedProviders = false;
- /**
- * <code>true</code> while {@link #loadServiceProviders(File)},
- * {@link #loadServiceProviders(URL)} or {@link #loadServiceProviders()} is in progress, avoids
- * triggering {@link #saveServiceDescriptions()} on
- * {@link #addServiceDescriptionProvider(ServiceDescriptionProvider)} calls.
- */
- private boolean loading = false;
- private MultiCaster<ServiceDescriptionRegistryEvent> observers = new MultiCaster<>(this);
- private List<ServiceDescriptionProvider> serviceDescriptionProviders;
- private Set<ServiceDescriptionProvider> allServiceProviders;
- private Map<ServiceDescriptionProvider, Set<ServiceDescription>> providerDescriptions = new HashMap<>();
- private Map<ServiceDescriptionProvider, Thread> serviceDescriptionThreads = new HashMap<>();
- /**
- * Service providers added by the user, should be saved
- */
- private Set<ServiceDescriptionProvider> userAddedProviders = new HashSet<>();
- private Set<ServiceDescriptionProvider> userRemovedProviders = new HashSet<>();
- private Set<ServiceDescriptionProvider> defaultServiceDescriptionProviders;
- /**
- * File containing a list of configured ConfigurableServiceProviders which is used to get the
- * default set of service descriptions together with those provided by AbstractTemplateServiceS.
- * This file is located in the conf directory of the Taverna startup directory.
- */
- private File defaultConfigurableServiceProvidersFile;
- private boolean defaultSystemConfigurableProvidersLoaded = false;
-
- static {
- threadGroup.setMaxPriority(MIN_PRIORITY);
- }
-
- public ServiceDescriptionRegistryImpl(
- ApplicationConfiguration applicationConfiguration) {
- this.applicationConfiguration = applicationConfiguration;
- defaultConfigurableServiceProvidersFile = new File(
- getTavernaStartupConfigurationDirectory(),
- DEFAULT_CONFIGURABLE_SERVICE_PROVIDERS_FILENAME);
- }
-
- /**
- * Get the Taverna distribution (startup) configuration directory.
- */
- private File getTavernaStartupConfigurationDirectory() {
- File distroHome = null;
- File configDirectory = null;
- distroHome = applicationConfiguration.getStartupDir();
- configDirectory = new File(distroHome, "conf");
- if (!configDirectory.exists())
- configDirectory.mkdir();
- return configDirectory;
- }
-
- private static void joinThreads(Collection<? extends Thread> threads,
- long descriptionThreadTimeoutMs) {
- long finishJoinBy = currentTimeMillis() + descriptionThreadTimeoutMs;
- for (Thread thread : threads) {
- // No shorter timeout than 1 ms (thread.join(0) waits forever!)
- long timeout = Math.max(1, finishJoinBy - currentTimeMillis());
- try {
- thread.join(timeout);
- } catch (InterruptedException e) {
- currentThread().interrupt();
- return;
- }
- if (thread.isAlive())
- logger.debug("Thread did not finish " + thread);
- }
- }
-
-
- @Override
- public void addObserver(Observer<ServiceDescriptionRegistryEvent> observer) {
- observers.addObserver(observer);
- }
-
- @Override
- public void addServiceDescriptionProvider(ServiceDescriptionProvider provider) {
- synchronized (this) {
- userRemovedProviders.remove(provider);
- if (!getDefaultServiceDescriptionProviders().contains(provider))
- userAddedProviders.add(provider);
- allServiceProviders.add(provider);
- }
-
- // Spring-like auto-config
- try {
- // BeanUtils should ignore this if provider does not have that property
- BeanUtils.setProperty(provider, SERVICE_DESCRIPTION_REGISTRY, this);
- } catch (IllegalAccessException | InvocationTargetException e) {
- logger.warn("Could not set serviceDescriptionRegistry on "
- + provider, e);
- }
-
- if (!loading)
- saveServiceDescriptions();
- observers.notify(new AddedProviderEvent(provider));
- updateServiceDescriptions(false, false);
- }
-
- private File findServiceDescriptionsFile() {
- File confDir = new File(
- applicationConfiguration.getApplicationHomeDir(), CONF_DIR);
- confDir.mkdirs();
- if (!confDir.isDirectory())
- throw new RuntimeException("Invalid directory: " + confDir);
- File serviceDescriptionsFile = new File(confDir,
- SERVICE_PROVIDERS_FILENAME);
- return serviceDescriptionsFile;
- }
-
- @Override
- public List<Observer<ServiceDescriptionRegistryEvent>> getObservers() {
- return observers.getObservers();
- }
-
- // Fallback to this method that uses hardcoded default services if you cannot read them from
- // the file.
-// @SuppressWarnings("unchecked")
-// public synchronized Set<ServiceDescriptionProvider> getDefaultServiceDescriptionProvidersFallback() {
-// /*if (defaultServiceDescriptionProviders != null) {
-// return defaultServiceDescriptionProviders;
-// }
-// defaultServiceDescriptionProviders = new HashSet<ServiceDescriptionProvider>();
-// */
-// for (ServiceDescriptionProvider provider : serviceDescriptionProviders) {
-//
-// /* We do not need these - already loaded them from getDefaultServiceDescriptionProviders()
-// if (!(provider instanceof ConfigurableServiceProvider)) {
-// defaultServiceDescriptionProviders.add(provider);
-// continue;
-// }*/
-//
-// // Just load the hard coded default configurable service providers
-// if (provider instanceof ConfigurableServiceProvider){
-// ConfigurableServiceProvider<Object> template = ((ConfigurableServiceProvider<Object>)
-// provider);
-// // Get configurations
-// List<Object> configurables = template.getDefaultConfigurations();
-// for (Object config : configurables) {
-// // Make a copy that we can configure
-// ConfigurableServiceProvider<Object> configurableProvider = template.clone();
-// try {
-// configurableProvider.configure(config);
-// } catch (ConfigurationException e) {
-// logger.warn("Can't configure provider "
-// + configurableProvider + " with " + config);
-// continue;
-// }
-// defaultServiceDescriptionProviders.add(configurableProvider);
-// }
-// }
-// }
-// return defaultServiceDescriptionProviders;
-// }
-
- // Get the default services.
- @Override
- public synchronized Set<ServiceDescriptionProvider> getDefaultServiceDescriptionProviders() {
- if (defaultServiceDescriptionProviders != null)
- return defaultServiceDescriptionProviders;
- defaultServiceDescriptionProviders = new HashSet<>();
-
- /*
- * Add default configurable service description providers from the
- * default_service_providers.xml file
- */
- if (defaultConfigurableServiceProvidersFile.exists()) {
- try {
- ServiceDescriptionDeserializer deserializer = new ServiceDescriptionDeserializer(
- serviceDescriptionProviders);
- defaultServiceDescriptionProviders.addAll(deserializer
- .deserializeDefaults(this,
- defaultConfigurableServiceProvidersFile));
- /*
- * We have successfully loaded the defaults for system
- * configurable providers. Note that there are still defaults
- * for third party configurable providers, which will be loaded
- * below using getDefaultConfigurations().
- */
- defaultSystemConfigurableProvidersLoaded = true;
- } catch (Exception e) {
- logger.error("Could not load default service providers from "
- + defaultConfigurableServiceProvidersFile.getAbsolutePath(), e);
-
- /*
- * Fallback on the old hardcoded method of loading default
- * system configurable service providers using
- * getDefaultConfigurations().
- */
- defaultSystemConfigurableProvidersLoaded = false;
- }
- } else {
- logger.warn("Could not find the file "
- + defaultConfigurableServiceProvidersFile.getAbsolutePath()
- + " containing default system service providers. "
- + "Using the hardcoded list of default system providers.");
-
- /*
- * Fallback on the old hardcoded method of loading default system
- * configurable service providers using getDefaultConfigurations().
- */
- defaultSystemConfigurableProvidersLoaded = false;
- }
-
- /*
- * Load other default service description providers - template, local
- * workers and third party configurable service providers
- */
- for (ServiceDescriptionProvider provider : serviceDescriptionProviders) {
- /*
- * Template service providers (beanshell, string constant, etc. )
- * and providers of local workers.
- */
- if (!(provider instanceof ConfigurableServiceProvider)) {
- defaultServiceDescriptionProviders.add(provider);
- continue;
- }
-
- /*
- * Default system or third party configurable service description
- * provider. System ones are read from the
- * default_service_providers.xml file so getDefaultConfigurations()
- * on them will not have much effect here unless
- * defaultSystemConfigurableProvidersLoaded is set to false.
- */
- //FIXME needs to be designed to work using Configuration instances
- //FIXME needs to get configurations via OSGi discovery
- /*
- ConfigurableServiceProvider template = (ConfigurableServiceProvider) provider;
- // Get configurations
- for (ObjectNode config : template.getDefaultConfigurations()) {
- // Make a copy that we can configure
- ConfigurableServiceProvider configurableProvider = template.clone();
- try {
- configurableProvider.configure(config);
- } catch (ConfigurationException e) {
- logger.warn("Can't configure provider "
- + configurableProvider + " with " + config);
- continue;
- }
- defaultServiceDescriptionProviders.add(configurableProvider);
- }
- */
- }
-
- return defaultServiceDescriptionProviders;
- }
-
- @Override
- public synchronized Set<ServiceDescriptionProvider> getServiceDescriptionProviders() {
- if (allServiceProviders != null)
- return new HashSet<>(allServiceProviders);
- allServiceProviders = new HashSet<>(userAddedProviders);
- synchronized (this) {
- if (!hasLoadedProviders)
- try {
- loadServiceProviders();
- } catch (Exception e) {
- logger.error("Could not load service providers", e);
- } finally {
- hasLoadedProviders = true;
- }
- }
- for (ServiceDescriptionProvider provider : getDefaultServiceDescriptionProviders()) {
- if (userRemovedProviders.contains(provider))
- continue;
- if (provider instanceof ConfigurableServiceProvider
- && !serviceDescriptionsConfig.isIncludeDefaults())
- // We'll skip the default configurable service provders
- continue;
- allServiceProviders.add(provider);
- }
- return new HashSet<>(allServiceProviders);
- }
-
- @Override
- public Set<ServiceDescriptionProvider> getServiceDescriptionProviders(
- ServiceDescription sd) {
- Set<ServiceDescriptionProvider> result = new HashSet<>();
- for (ServiceDescriptionProvider sdp : providerDescriptions.keySet())
- if (providerDescriptions.get(sdp).contains(sd))
- result.add(sdp);
- return result;
- }
-
- @Override
- public Set<ServiceDescription> getServiceDescriptions() {
- updateServiceDescriptions(false, true);
- Set<ServiceDescription> serviceDescriptions = new HashSet<>();
- synchronized (providerDescriptions) {
- for (Set<ServiceDescription> providerDesc : providerDescriptions
- .values())
- serviceDescriptions.addAll(providerDesc);
- }
- return serviceDescriptions;
- }
-
- @Override
- public ServiceDescription getServiceDescription(URI serviceType) {
- for (ServiceDescription serviceDescription : getServiceDescriptions())
- if (serviceDescription.getActivityType().equals(serviceType))
- return serviceDescription;
- return null;
- }
-
- @Override
- public List<ConfigurableServiceProvider> getUnconfiguredServiceProviders() {
- List<ConfigurableServiceProvider> providers = new ArrayList<>();
- for (ServiceDescriptionProvider provider : serviceDescriptionProviders)
- if (provider instanceof ConfigurableServiceProvider)
- providers.add((ConfigurableServiceProvider) provider);
- return providers;
- }
-
- @Override
- public Set<ServiceDescriptionProvider> getUserAddedServiceProviders() {
- return new HashSet<>(userAddedProviders);
- }
-
- @Override
- public Set<ServiceDescriptionProvider> getUserRemovedServiceProviders() {
- return new HashSet<>(userRemovedProviders);
- }
-
- @Override
- public void loadServiceProviders() {
- File serviceProviderFile = findServiceDescriptionsFile();
- if (serviceProviderFile.isFile())
- loadServiceProviders(serviceProviderFile);
- hasLoadedProviders = true;
- }
-
- @Override
- public void loadServiceProviders(File serviceProvidersFile) {
- ServiceDescriptionDeserializer deserializer = new ServiceDescriptionDeserializer(
- serviceDescriptionProviders);
- loading = true;
- try {
- deserializer.deserialize(this, serviceProvidersFile);
- } catch (DeserializationException e) {
- logger.error("failed to deserialize configuration", e);
- }
- loading = false;
- }
-
- @Override
- public void loadServiceProviders(URL serviceProvidersURL) {
- ServiceDescriptionDeserializer deserializer = new ServiceDescriptionDeserializer(
- serviceDescriptionProviders);
- loading = true;
- try {
- deserializer.deserialize(this, serviceProvidersURL);
- } catch (DeserializationException e) {
- logger.error("failed to deserialize configuration", e);
- }
- loading = false;
- }
-
- @Override
- public void refresh() {
- updateServiceDescriptions(true, false);
- }
-
- @Override
- public void removeObserver(Observer<ServiceDescriptionRegistryEvent> observer) {
- observers.removeObserver(observer);
- }
-
- @Override
- public synchronized void removeServiceDescriptionProvider(
- ServiceDescriptionProvider provider) {
- if (!userAddedProviders.remove(provider))
- // Not previously added - must be a default one.. but should we remove it?
- if (loading || serviceDescriptionsConfig.isRemovePermanently()
- && serviceDescriptionsConfig.isIncludeDefaults())
- userRemovedProviders.add(provider);
- if (allServiceProviders.remove(provider)) {
- synchronized (providerDescriptions) {
- Thread thread = serviceDescriptionThreads.remove(provider);
- if (thread != null)
- thread.interrupt();
- providerDescriptions.remove(provider);
- }
- observers.notify(new RemovedProviderEvent(provider));
- }
- if (!loading)
- saveServiceDescriptions();
- }
-
- @Override
- public void saveServiceDescriptions() {
- File serviceDescriptionsFile = findServiceDescriptionsFile();
- saveServiceDescriptions(serviceDescriptionsFile);
- }
-
- @Override
- public void saveServiceDescriptions(File serviceDescriptionsFile) {
- ServiceDescriptionSerializer serializer = new ServiceDescriptionSerializer();
- try {
- serializer.serializeRegistry(this, serviceDescriptionsFile);
- } catch (IOException e) {
- throw new RuntimeException("Can't save service descriptions to "
- + serviceDescriptionsFile);
- }
- }
-
- /**
- * Exports all configurable service providers (that give service
- * descriptions) currently found in the Service Registry (apart from service
- * templates and local services) regardless of who added them (user or
- * default system providers).
- * <p>
- * Unlike {@link #saveServiceDescriptions}, this export does not have the
- * "ignored providers" section as this is just a plain export of everything
- * in the Service Registry.
- *
- * @param serviceDescriptionsFile
- */
- @Override
- public void exportCurrentServiceDescriptions(File serviceDescriptionsFile) {
- ServiceDescriptionSerializer serializer = new ServiceDescriptionSerializer();
- try {
- serializer.serializeFullRegistry(this, serviceDescriptionsFile);
- } catch (IOException e) {
- throw new RuntimeException("Could not save service descriptions to "
- + serviceDescriptionsFile);
- }
- }
-
- public void setServiceDescriptionProvidersList(
- List<ServiceDescriptionProvider> serviceDescriptionProviders) {
- this.serviceDescriptionProviders = serviceDescriptionProviders;
- }
-
- private void updateServiceDescriptions(boolean refreshAll, boolean waitFor) {
- List<Thread> threads = new ArrayList<>();
- for (ServiceDescriptionProvider provider : getServiceDescriptionProviders()) {
- synchronized (providerDescriptions) {
- if (providerDescriptions.containsKey(provider) && !refreshAll)
- // We'll used the cached values
- continue;
- Thread oldThread = serviceDescriptionThreads.get(provider);
- if (oldThread != null && oldThread.isAlive()) {
- if (refreshAll)
- // New thread will override the old thread
- oldThread.interrupt();
- else {
- // observers.notify(new ProviderStatusNotification(provider, "Waiting for provider"));
- continue;
- }
- }
- // Not run yet - we'll start a new tread
- Thread thread = new FindServiceDescriptionsThread(provider);
- threads.add(thread);
- serviceDescriptionThreads.put(provider, thread);
- thread.start();
- }
- }
- if (waitFor)
- joinThreads(threads, DESCRIPTION_THREAD_TIMEOUT_MS);
- }
-
- @Override
- public boolean isDefaultSystemConfigurableProvidersLoaded() {
- return defaultSystemConfigurableProvidersLoaded;
- }
-
- /**
- * Sets the serviceDescriptionsConfig.
- *
- * @param serviceDescriptionsConfig
- * the new value of serviceDescriptionsConfig
- */
- public void setServiceDescriptionsConfig(
- ServiceDescriptionsConfiguration serviceDescriptionsConfig) {
- this.serviceDescriptionsConfig = serviceDescriptionsConfig;
- }
-
- class FindServiceDescriptionsThread extends Thread implements
- UncaughtExceptionHandler, FindServiceDescriptionsCallBack {
- private final ServiceDescriptionProvider provider;
- private boolean aborting = false;
- private final Set<ServiceDescription> providerDescs = new HashSet<>();
-
- FindServiceDescriptionsThread(ServiceDescriptionProvider provider) {
- super(threadGroup, "Find service descriptions from " + provider);
- this.provider = provider;
- setUncaughtExceptionHandler(this);
- setDaemon(true);
- }
-
- @Override
- public void fail(String message, Throwable ex) {
- logger.warn("Provider " + getProvider() + ": " + message, ex);
- if (aborting)
- return;
- observers.notify(new ProviderErrorNotification(getProvider(),
- message, ex));
- }
-
- @Override
- public void finished() {
- if (aborting)
- return;
- synchronized (providerDescriptions) {
- providerDescriptions.put(getProvider(), providerDescs);
- }
- observers.notify(new ServiceDescriptionProvidedEvent(getProvider(),
- providerDescs));
- }
-
- @Override
- public void partialResults(
- Collection<? extends ServiceDescription> serviceDescriptions) {
- if (aborting)
- return;
- providerDescs.addAll(serviceDescriptions);
- synchronized (providerDescriptions) {
- providerDescriptions.put(getProvider(), providerDescs);
- }
- observers.notify(new PartialServiceDescriptionsNotification(
- getProvider(), serviceDescriptions));
- }
-
- @Override
- public void status(String message) {
- logger.debug("Provider " + getProvider() + ": " + message);
- if (aborting)
- return;
- observers.notify(new ProviderStatusNotification(getProvider(),
- message));
- }
-
- @Override
- public void warning(String message) {
- logger.warn("Provider " + getProvider() + ": " + message);
- if (aborting)
- return;
- observers.notify(new ProviderWarningNotification(getProvider(),
- message));
- }
-
- public ServiceDescriptionProvider getProvider() {
- return provider;
- }
-
- @Override
- public void interrupt() {
- aborting = true;
- super.interrupt();
- }
-
- @Override
- public void run() {
- observers.notify(new ProviderUpdatingNotification(provider));
- getProvider().findServiceDescriptionsAsync(this);
- }
-
- @Override
- public void uncaughtException(Thread t, Throwable ex) {
- logger.error("Uncaught exception in " + t, ex);
- fail("Uncaught exception", ex);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionSerializer.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionSerializer.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionSerializer.java
deleted file mode 100644
index 8a047a3..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionSerializer.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package net.sf.taverna.t2.servicedescriptions.impl;
-
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.CONFIGURATION;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.IGNORED;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.PROVIDERS;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.PROVIDER_ID;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.SERVICE_PANEL_CONFIGURATION;
-import static net.sf.taverna.t2.servicedescriptions.impl.ServiceDescriptionConstants.TYPE;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Set;
-
-import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-
-import org.apache.log4j.Logger;
-import org.jdom.JDOMException;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-class ServiceDescriptionSerializer {
- private static Logger logger = Logger
- .getLogger(ServiceDescriptionSerializer.class);
-
- public void serializeRegistry(ServiceDescriptionRegistry registry, File file)
- throws IOException {
- Set<ServiceDescriptionProvider> ignoreProviders = registry
- .getUserRemovedServiceProviders();
- JsonNode registryElement = serializeRegistry(registry, ignoreProviders);
- try (BufferedOutputStream bufferedOutStream = new BufferedOutputStream(
- new FileOutputStream(file))) {
- bufferedOutStream.write(registryElement.toString()
- .getBytes("UTF-8"));
- }
- }
-
- /**
- * Export the whole service registry to an xml file, regardless of who added
- * the service provider (user or system default). In this case there will be
- * no "ignored providers" in the saved file.
- */
- public void serializeFullRegistry(ServiceDescriptionRegistry registry,
- File file) throws IOException {
- JsonNode registryElement = serializeRegistry(registry, ALL_PROVIDERS);
- try (BufferedOutputStream bufferedOutStream = new BufferedOutputStream(
- new FileOutputStream(file))) {
- bufferedOutStream.write(registryElement.toString()
- .getBytes("UTF-8"));
- }
- }
-
- private static final JsonNodeFactory factory = JsonNodeFactory.instance;
- private static final Set<ServiceDescriptionProvider> ALL_PROVIDERS = null;
-
- private JsonNode serializeRegistry(ServiceDescriptionRegistry registry,
- Set<ServiceDescriptionProvider> ignoreProviders) {
- ObjectNode overallConfiguration = factory.objectNode();
- overallConfiguration.put(SERVICE_PANEL_CONFIGURATION,
- ignoreProviders != ALL_PROVIDERS ? "full" : "defaults only");
- ArrayNode providers = overallConfiguration.putArray(PROVIDERS);
-
- for (ServiceDescriptionProvider provider : registry
- .getUserAddedServiceProviders())
- try {
- providers.add(serializeProvider(provider));
- } catch (JDOMException | IOException e) {
- logger.warn("Could not serialize " + provider, e);
- }
-
- if (ignoreProviders != ALL_PROVIDERS) {
- ArrayNode ignored = overallConfiguration.putArray(IGNORED);
- for (ServiceDescriptionProvider provider : ignoreProviders)
- try {
- ignored.add(serializeProvider(provider));
- } catch (JDOMException | IOException e) {
- logger.warn("Could not serialize " + provider, e);
- }
- }
-
- return overallConfiguration;
- }
-
- private JsonNode serializeProvider(ServiceDescriptionProvider provider)
- throws JDOMException, IOException {
- ObjectNode node = factory.objectNode();
- node.put(PROVIDER_ID, provider.getId());
-
- if (provider instanceof ConfigurableServiceProvider) {
- ConfigurableServiceProvider configurable = (ConfigurableServiceProvider) provider;
- node.put(TYPE, configurable.getConfiguration().getType().toString());
- node.put(CONFIGURATION, configurable.getConfiguration().getJson());
- }
- return node;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionXMLConstants.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionXMLConstants.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionXMLConstants.java
deleted file mode 100644
index ee180a7..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionXMLConstants.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package net.sf.taverna.t2.servicedescriptions.impl;
-
-import org.jdom.Namespace;
-
-public interface ServiceDescriptionXMLConstants {
-
- public static final Namespace SERVICE_DESCRIPTION_NS = Namespace
- .getNamespace("http://taverna.sf.net/2009/xml/servicedescription");
- public static final String PROVIDER = "provider";
- public static final String PROVIDERS = "providers";
- public static final String SERVICE_DESCRIPTIONS = "serviceDescriptions";
- public static final String IGNORED_PROVIDERS = "ignoredProviders";
- public static final String PROVIDER_IDENTIFIER = "providerId";
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionsConfigurationImpl.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionsConfigurationImpl.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionsConfigurationImpl.java
deleted file mode 100644
index ef0295c..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/servicedescriptions/impl/ServiceDescriptionsConfigurationImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.servicedescriptions.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionsConfiguration;
-
-import uk.org.taverna.configuration.AbstractConfigurable;
-import uk.org.taverna.configuration.ConfigurationManager;
-
-public class ServiceDescriptionsConfigurationImpl extends AbstractConfigurable
- implements ServiceDescriptionsConfiguration {
- private static final String INCLUDE_DEFAULTS = "includeDefaults";
- private static final String SERVICE_PALETTE = "Service providers";
- private static final String SERVICE_PALETTE_PREFIX = "ServiceProviders";
- private static final String CATEGORY = "Services";
- private static final String UUID = "f0d1ef24-9337-412f-b2c3-220a01e2efd0";
- private static final String REMOVE_PERMANENTLY = "removePermanently";
-
- public ServiceDescriptionsConfigurationImpl(
- ConfigurationManager configurationManager) {
- super(configurationManager);
- }
-
- @Override
- public String getCategory() {
- return CATEGORY;
- }
-
- @Override
- public Map<String, String> getDefaultPropertyMap() {
- Map<String, String> defaults = new HashMap<String, String>();
- defaults.put(INCLUDE_DEFAULTS, "true");
- defaults.put(REMOVE_PERMANENTLY, "true");
- return defaults;
- }
-
- @Override
- public String getDisplayName() {
- return SERVICE_PALETTE;
- }
-
- @Override
- public String getFilePrefix() {
- return SERVICE_PALETTE_PREFIX;
- }
-
- @Override
- public String getUUID() {
- return UUID;
- }
-
- @Override
- public boolean isIncludeDefaults() {
- return Boolean.parseBoolean(getProperty(INCLUDE_DEFAULTS));
- }
-
- @Override
- public void setIncludeDefaults(boolean includeDefaults) {
- setProperty(INCLUDE_DEFAULTS, Boolean.toString(includeDefaults));
- }
-
- @Override
- public boolean isRemovePermanently() {
- return Boolean.parseBoolean(getProperty(REMOVE_PERMANENTLY));
- }
-
- @Override
- public void setRemovePermanently(boolean removePermanently) {
- setProperty(REMOVE_PERMANENTLY, Boolean.toString(removePermanently));
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfiguration.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfiguration.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfiguration.java
deleted file mode 100644
index 46f82c4..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfiguration.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.activitypalette;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import uk.org.taverna.configuration.AbstractConfigurable;
-import uk.org.taverna.configuration.ConfigurationManager;
-
-public class ActivityPaletteConfiguration extends AbstractConfigurable {
- private Map<String,String> defaultPropertyMap;
-
- public ActivityPaletteConfiguration(ConfigurationManager configurationManager) {
- super(configurationManager);
- }
-
- @Override
- public String getCategory() {
- return "Services";
- }
-
- @Override
- public Map<String, String> getDefaultPropertyMap() {
- if (defaultPropertyMap == null) {
- defaultPropertyMap = new HashMap<>();
-
- // //wsdl
- //defaultPropertyMap.put("taverna.defaultwsdl", "http://www.ebi.ac.uk/xembl/XEMBL.wsdl,"+
- // "http://soap.genome.jp/KEGG.wsdl,"+
- // "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/eutils.wsdl,"+
- // "http://soap.bind.ca/wsdl/bind.wsdl,"+
- // "http://www.ebi.ac.uk/ws/services/urn:Dbfetch?wsdl");
-
- // //soaplab
- //defaultPropertyMap.put("taverna.defaultsoaplab", "http://www.ebi.ac.uk/soaplab/services/");
-
- // //biomart
- //defaultPropertyMap.put("taverna.defaultmartregistry","http://www.biomart.org/biomart");
-
- //add property names
- //defaultPropertyMap.put("name.taverna.defaultwsdl", "WSDL");
- //defaultPropertyMap.put("name.taverna.defaultsoaplab","Soaplab");
- //defaultPropertyMap.put("name.taverna.defaultmartregistry", "Biomart");
- }
- return defaultPropertyMap;
- }
-
- @Override
- public String getDisplayName() {
- return "Activity Palette";
- }
-
- @Override
- public String getFilePrefix() {
- return "ActivityPalette";
- }
-
- @Override
- public String getUUID() {
- return "ad9f3a60-5967-11dd-ae16-0800200c9a66";
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationPanel.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationPanel.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationPanel.java
deleted file mode 100644
index 6166e60..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationPanel.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.activitypalette;
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.EAST;
-import static java.awt.BorderLayout.NORTH;
-import static java.awt.BorderLayout.SOUTH;
-import static java.awt.FlowLayout.LEFT;
-import static java.awt.FlowLayout.RIGHT;
-import static javax.swing.BoxLayout.Y_AXIS;
-import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.YES_NO_OPTION;
-import static javax.swing.JOptionPane.YES_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showInputDialog;
-import static javax.swing.border.BevelBorder.LOWERED;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.BoxLayout;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.DefaultListModel;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.border.BevelBorder;
-
-import org.apache.log4j.Logger;
-
-@SuppressWarnings("serial")
-public class ActivityPaletteConfigurationPanel extends JPanel {
- private static Logger logger = Logger
- .getLogger(ActivityPaletteConfigurationPanel.class);
-
- private Map<String,List<String>> values = new HashMap<>();
- private Map<String,String> names = new HashMap<>();
- private DefaultComboBoxModel<String> model;
- private DefaultListModel<String> listModel;
- private JList<String> propertyListItems;
- private String selectedKey;
- private JButton deleteTypeButton;
- private final ActivityPaletteConfiguration config;
-
- public ActivityPaletteConfigurationPanel(ActivityPaletteConfiguration config) {
- super(new BorderLayout());
- this.config = config;
-
- model = new DefaultComboBoxModel<>();
- for (String key : config.getInternalPropertyMap().keySet()) {
- if (key.startsWith("taverna.")
- && config.getPropertyStringList(key) != null) {
- model.addElement(key);
- values.put(key,
- new ArrayList<>(config.getPropertyStringList(key)));
- }
- if (key.startsWith("name.taverna."))
- names.put(key, config.getProperty(key).toString());
- }
- deleteTypeButton = new JButton("Delete");
-
- final JButton addTypeButton = new JButton("Add");
- final JComboBox<String> comboBox = new JComboBox<>(model);
- comboBox.setRenderer(new DefaultListCellRenderer() {
- @Override
- public Component getListCellRendererComponent(JList<?> list,
- Object value, int index, boolean isSelected,
- boolean cellHasFocus) {
- if (value != null && value instanceof String) {
- String name = names.get("name." + value);
- if (name != null)
- value = name;
- }
- return super.getListCellRendererComponent(list, value, index,
- isSelected, cellHasFocus);
- }
- });
-
- deleteTypeButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- String displayText = names.get("name." + selectedKey);
- if (displayText == null)
- displayText = selectedKey;
- if (confirm("Confirm removal",
- "Are you sure you wish to remove the type "
- + displayText + "?")) {
- names.remove("name." + selectedKey);
- values.remove(selectedKey);
- model.removeElement(selectedKey);
- comboBox.setSelectedIndex(0);
- }
- }
- });
-
- addTypeButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- String key = input("New key", "Provide the new key.");
- if (key == null)
- return;
- String name = input("Name for the key",
- "Provide the name for the key: " + key);
- if (name == null)
- return;
-
- values.put(key, new ArrayList<String>());
- names.put("name." + key, name);
- model.addElement(key);
- comboBox.setSelectedItem(key);
- }
- });
-
- comboBox.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (comboBox.getSelectedItem() != null
- && comboBox.getSelectedItem() instanceof String) {
- selectedKey = (String) comboBox.getSelectedItem();
- List<String> selectedList = values.get(selectedKey);
- populateList(selectedList);
- deleteTypeButton.setEnabled(selectedList.size() == 0);
- }
- }
- });
-
- JPanel propertySelectionPanel = new JPanel(new FlowLayout(LEFT));
- propertySelectionPanel.add(new JLabel("Activity type:"));
- propertySelectionPanel.add(comboBox);
- propertySelectionPanel.add(addTypeButton);
- propertySelectionPanel.add(deleteTypeButton);
- add(propertySelectionPanel, NORTH);
-
- JPanel listPanel = new JPanel(new BorderLayout());
- listModel = new DefaultListModel<>();
- propertyListItems = new JList<>(listModel);
- propertyListItems.setBorder(new BevelBorder(LOWERED));
-
- listPanel.add(propertyListItems, CENTER);
- listPanel.add(listButtons(), EAST);
-
- add(listPanel, CENTER);
-
- add(applyButtonPanel(), SOUTH);
-
- if (model.getSize() > 0)
- comboBox.setSelectedItem(model.getElementAt(0));
- }
-
- private void populateList(List<String> selectedList) {
- listModel.removeAllElements();
- for (String item : selectedList)
- listModel.addElement(item);
- }
-
- private JPanel applyButtonPanel() {
- JPanel applyPanel = new JPanel(new FlowLayout(RIGHT));
- JButton applyButton = new JButton("Apply");
-
- applyButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- config.getInternalPropertyMap().clear();
- for (String key : values.keySet()) {
- List<String> properties = values.get(key);
- config.setPropertyStringList(key, new ArrayList<>(
- properties));
- }
- for (String key : names.keySet())
- config.setProperty(key, names.get(key));
- store();
- }
- });
-
- applyPanel.add(applyButton);
- return applyPanel;
- }
-
- private void store() {
- try {
- //FIXME
- //ConfigurationManager.getInstance().store(config);
- } catch (Exception e1) {
- logger.error("There was an error storing the configuration:"
- + config.getFilePrefix() + " (UUID=" + config.getUUID()
- + ")", e1);
- }
- }
-
- private JPanel listButtons() {
- JPanel panel = new JPanel();
- panel.setLayout(new BoxLayout(panel, Y_AXIS));
- JButton addButton = new JButton("+");
- addButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- String value = input("New property", "Provide new value for: "
- + selectedKey);
- if (value != null) {
- listModel.addElement(value);
- values.get(selectedKey).add(value);
- deleteTypeButton.setEnabled(false);
- }
- }
- });
-
- JButton deleteButton = new JButton("-");
- deleteButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Object value = propertyListItems.getSelectedValue();
- if (confirm("Confirm removal",
- "Are you sure you wish to remove " + value + "?")) {
- listModel.removeElement(value);
- values.get(selectedKey).remove(value);
- if (values.get(selectedKey).size() == 0)
- deleteTypeButton.setEnabled(true);
- }
- }
- });
-
- panel.add(addButton);
- panel.add(deleteButton);
-
- return panel;
- }
-
- private boolean confirm(String title, String message) {
- return showConfirmDialog(this, message, title, YES_NO_OPTION,
- WARNING_MESSAGE) == YES_OPTION;
- }
-
- private String input(String title, String message) {
- return showInputDialog(this, message, title, INFORMATION_MESSAGE);
- }
-
-/* private JButton getAddTypeButton() {
- JButton result = new JButton("Add");
- result.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String val = input("New property value","New property value");
- if (val!=null) {
- if (values.get(val) == null) {
- model.addElement(val);
- values.put(val, new ArrayList<String>());
- } else
- showMessageDialog(ActivityPaletteConfigurationPanel.this, "This property already exists");
- }
- }
- });
- return result;
- }
-*/
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationUIFactory.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationUIFactory.java b/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationUIFactory.java
deleted file mode 100644
index 39c4a5a..0000000
--- a/taverna-activity-palette-impl/src/main/java/net/sf/taverna/t2/workbench/ui/activitypalette/ActivityPaletteConfigurationUIFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007 The University of Manchester
- *
- * Modifications to the initial code base are copyright of their
- * respective authors, or their employers as appropriate.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.workbench.ui.activitypalette;
-
-import javax.swing.JPanel;
-
-import uk.org.taverna.configuration.Configurable;
-import uk.org.taverna.configuration.ConfigurationUIFactory;
-
-public class ActivityPaletteConfigurationUIFactory implements
- ConfigurationUIFactory {
- private ActivityPaletteConfiguration activityPaletteConfiguration;
-
- @Override
- public boolean canHandle(String uuid) {
- return uuid != null && uuid.equals(getConfigurable().getUUID());
- }
-
- @Override
- public Configurable getConfigurable() {
- return activityPaletteConfiguration;
- }
-
- @Override
- public JPanel getConfigurationPanel() {
- return new ActivityPaletteConfigurationPanel(
- activityPaletteConfiguration);
- }
-
- public void setActivityPaletteConfiguration(
- ActivityPaletteConfiguration activityPaletteConfiguration) {
- this.activityPaletteConfiguration = activityPaletteConfiguration;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionConstants.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionConstants.java b/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionConstants.java
new file mode 100644
index 0000000..8331c88
--- /dev/null
+++ b/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionConstants.java
@@ -0,0 +1,10 @@
+package org.apache.taverna.servicedescriptions.impl;
+
+public interface ServiceDescriptionConstants {
+ String SERVICE_PANEL_CONFIGURATION = "servicePanelConfiguration";
+ String PROVIDERS = "providers";
+ String IGNORED = "ignored";
+ String PROVIDER_ID = "providerID";
+ String CONFIGURATION = "configuration";
+ String TYPE = "type";
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionDeserializer.java
----------------------------------------------------------------------
diff --git a/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionDeserializer.java b/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionDeserializer.java
new file mode 100644
index 0000000..546a278
--- /dev/null
+++ b/taverna-activity-palette-impl/src/main/java/org/apache/taverna/servicedescriptions/impl/ServiceDescriptionDeserializer.java
@@ -0,0 +1,167 @@
+package org.apache.taverna.servicedescriptions.impl;
+
+import static org.apache.taverna.servicedescriptions.impl.ServiceDescriptionConstants.CONFIGURATION;
+import static org.apache.taverna.servicedescriptions.impl.ServiceDescriptionConstants.IGNORED;
+import static org.apache.taverna.servicedescriptions.impl.ServiceDescriptionConstants.PROVIDERS;
+import static org.apache.taverna.servicedescriptions.impl.ServiceDescriptionConstants.PROVIDER_ID;
+import static org.apache.taverna.servicedescriptions.impl.ServiceDescriptionConstants.TYPE;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.taverna.scufl2.api.configurations.Configuration;
+import org.apache.taverna.servicedescriptions.ConfigurableServiceProvider;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry;
+
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+class ServiceDescriptionDeserializer {
+ private List<ServiceDescriptionProvider> serviceDescriptionProviders;
+
+ ServiceDescriptionDeserializer(
+ List<ServiceDescriptionProvider> serviceDescriptionProviders) {
+ this.serviceDescriptionProviders = serviceDescriptionProviders;
+ }
+
+ public void deserialize(ServiceDescriptionRegistry registry,
+ File serviceDescriptionsFile) throws DeserializationException {
+ try (FileInputStream serviceDescriptionFileStream = new FileInputStream(
+ serviceDescriptionsFile)) {
+ deserialize(registry, serviceDescriptionFileStream);
+ } catch (FileNotFoundException ex) {
+ throw new DeserializationException("Could not locate file "
+ + serviceDescriptionsFile.getAbsolutePath()
+ + " containing service descriptions.");
+ } catch (IOException ex) {
+ throw new DeserializationException(
+ "Could not read stream containing service descriptions from "
+ + serviceDescriptionsFile.getAbsolutePath(), ex);
+ }
+ }
+
+ public void deserialize(ServiceDescriptionRegistry registry,
+ URL serviceDescriptionsURL) throws DeserializationException {
+ try (InputStream serviceDescriptionInputStream = serviceDescriptionsURL
+ .openStream()) {
+ deserialize(registry, serviceDescriptionInputStream);
+ } catch (FileNotFoundException ex) {
+ throw new DeserializationException("Could not open URL "
+ + serviceDescriptionsURL
+ + " containing service descriptions.");
+ } catch (IOException ex) {
+ throw new DeserializationException(
+ "Could not read stream containing service descriptions from "
+ + serviceDescriptionsURL, ex);
+ }
+ }
+
+ private static final JsonFactory factory = new JsonFactory();
+
+ private void deserialize(ServiceDescriptionRegistry registry,
+ InputStream serviceDescriptionsInputStream) throws IOException,
+ DeserializationException {
+ ObjectNode node = (ObjectNode) new ObjectMapper(factory)
+ .readTree(serviceDescriptionsInputStream);
+ List<ServiceDescriptionProvider> providers = deserializeProviders(node,
+ true);
+ for (ServiceDescriptionProvider provider : providers)
+ registry.addServiceDescriptionProvider(provider);
+ }
+
+ public Collection<? extends ServiceDescriptionProvider> deserializeDefaults(
+ ServiceDescriptionRegistry registry,
+ File defaultConfigurableServiceProvidersFile)
+ throws DeserializationException {
+ ObjectNode node;
+ try (FileInputStream serviceDescriptionStream = new FileInputStream(
+ defaultConfigurableServiceProvidersFile)) {
+ node = (ObjectNode) new ObjectMapper(factory)
+ .readTree(serviceDescriptionStream);
+ } catch (IOException e) {
+ throw new DeserializationException("Can't read "
+ + defaultConfigurableServiceProvidersFile);
+ }
+ return deserializeProviders(node, false);
+ }
+
+ private List<ServiceDescriptionProvider> deserializeProviders(
+ ObjectNode rootNode, boolean obeyIgnored)
+ throws DeserializationException {
+ List<ServiceDescriptionProvider> providers = new ArrayList<>();
+
+ ArrayNode providersNode = (ArrayNode) rootNode.get(PROVIDERS);
+ if (providersNode != null)
+ for (JsonNode provider : providersNode)
+ providers.add(deserializeProvider((ObjectNode) provider));
+
+ if (obeyIgnored) {
+ ArrayNode ignoredNode = (ArrayNode) rootNode.get(IGNORED);
+ if (ignoredNode != null)
+ for (JsonNode provider : ignoredNode)
+ providers
+ .remove(deserializeProvider((ObjectNode) provider));
+ }
+
+ return providers;
+ }
+
+ private ServiceDescriptionProvider deserializeProvider(
+ ObjectNode providerNode) throws DeserializationException {
+ String providerId = providerNode.get(PROVIDER_ID).asText().trim();
+ ServiceDescriptionProvider provider = null;
+ for (ServiceDescriptionProvider serviceProvider : serviceDescriptionProviders)
+ if (serviceProvider.getId().equals(providerId)) {
+ provider = serviceProvider;
+ break;
+ }
+ if (provider == null)
+ throw new DeserializationException(
+ "Could not find provider with id " + providerId);
+
+ /*
+ * So we know the service provider now, but we need a separate instance
+ * of that provider for each providerElem. E.g. we can have 2 or more
+ * WSDL provider elements and need to return a separate provider
+ * instance for each as they will have different configurations.
+ */
+ ServiceDescriptionProvider instance = provider.newInstance();
+
+ if (instance instanceof ConfigurableServiceProvider)
+ try {
+ Configuration config = new Configuration();
+ config.setType(URI.create(providerNode.get(TYPE).textValue()));
+ config.setJson(providerNode.get(CONFIGURATION));
+ if (config != null)
+ ((ConfigurableServiceProvider) instance).configure(config);
+ } catch (Exception e) {
+ throw new DeserializationException(
+ "Could not configure provider " + providerId
+ + " using bean " + providerNode, e);
+ }
+ return instance;
+ }
+
+ @SuppressWarnings("serial")
+ static class DeserializationException extends Exception {
+ public DeserializationException(String string) {
+ super(string);
+ }
+
+ public DeserializationException(String string, Exception ex) {
+ super(string, ex);
+ }
+ }
+}