You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ze...@apache.org on 2021/10/05 19:38:52 UTC

[incubator-streampipes] branch STREAMPIPES-438 created (now 676ff84)

This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a change to branch STREAMPIPES-438
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git.


      at 676ff84  [STREAMPIPES-438] Start to move restart of adapters to AdapterHealthCheck

This branch includes the following new commits:

     new 0e89350  [STEAMPIPES-438] Remove adapter Id form backend
     new 676ff84  [STREAMPIPES-438] Start to move restart of adapters to AdapterHealthCheck

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[incubator-streampipes] 02/02: [STREAMPIPES-438] Start to move restart of adapters to AdapterHealthCheck

Posted by ze...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch STREAMPIPES-438
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit 676ff84a73b61553d77cb6fc9b6335d937d27660
Author: Philipp Zehnder <ze...@fzi.de>
AuthorDate: Tue Oct 5 21:38:03 2021 +0200

    [STREAMPIPES-438] Start to move restart of adapters to AdapterHealthCheck
---
 .../master/health/AdapterHealthCheck.java          |  65 +++++++++++++
 .../master/management/AdapterMasterManagement.java |  59 +++++++++---
 .../management/WorkerAdministrationManagement.java | 107 +++++++++++----------
 .../master/util/AdapterEncryptionService.java      |   7 +-
 .../model/connect/adapter/AdapterDescription.java  |   3 +-
 .../connect/worker/ConnectWorkerContainer.java     |   1 +
 streampipes-pipeline-management/pom.xml            |   2 +-
 .../rest/impl/connect/AdapterResource.java         |   9 +-
 .../impl/connect/WorkerAdministrationResource.java |   2 +-
 9 files changed, 175 insertions(+), 80 deletions(-)

diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/health/AdapterHealthCheck.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/health/AdapterHealthCheck.java
new file mode 100644
index 0000000..63e49c4
--- /dev/null
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/health/AdapterHealthCheck.java
@@ -0,0 +1,65 @@
+/*
+ * 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.streampipes.connect.container.master.health;
+
+import org.apache.streampipes.connect.api.exception.AdapterException;
+import org.apache.streampipes.connect.container.master.management.AdapterMasterManagement;
+import org.apache.streampipes.model.connect.adapter.AdapterDescription;
+import org.apache.streampipes.storage.api.IAdapterStorage;
+import org.apache.streampipes.storage.couchdb.impl.AdapterStorageImpl;
+
+import java.util.List;
+
+public class AdapterHealthCheck {
+
+    public AdapterHealthCheck() {
+    }
+
+    public void checkAndRestoreAdapters() {
+        AdapterMasterManagement adapterMasterManagement = new AdapterMasterManagement();
+        IAdapterStorage adapterStorage = new AdapterStorageImpl();
+
+
+        // Get all adapters
+        List<AdapterDescription> allRunningInstancesAdaperDescription = adapterStorage.getAllAdapters();
+
+        // Group them by worker
+//        AdapterDescription decryptedAdapterDescription =
+//                new AdapterEncryptionService(new Cloner().adapterDescription(ad)).decrypt();
+
+        for (AdapterDescription adapterDescription : allRunningInstancesAdaperDescription) {
+            try {
+                adapterMasterManagement.startStreamAdapter(adapterDescription.getElementId());
+            } catch (AdapterException e) {
+                e.printStackTrace();
+            }
+
+        }
+
+        // Ask worker if they are up and running
+
+        // If not
+
+            // Find a worker to run them
+
+            // Invoke the adapters
+
+   }
+
+}
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java
index 993a88b..98623be 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java
@@ -23,6 +23,7 @@ import org.apache.streampipes.commons.exceptions.SepaParseException;
 import org.apache.streampipes.connect.adapter.GroundingService;
 import org.apache.streampipes.connect.api.exception.AdapterException;
 import org.apache.streampipes.connect.container.master.util.AdapterEncryptionService;
+import org.apache.streampipes.manager.execution.endpoint.ExtensionsServiceEndpointGenerator;
 import org.apache.streampipes.manager.storage.UserService;
 import org.apache.streampipes.manager.verification.DataStreamVerifier;
 import org.apache.streampipes.model.SpDataStream;
@@ -36,9 +37,12 @@ import org.apache.streampipes.storage.api.IAdapterStorage;
 import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorageCache;
 import org.apache.streampipes.storage.couchdb.impl.AdapterStorageImpl;
 import org.apache.streampipes.storage.management.StorageManager;
+import org.apache.streampipes.svcdiscovery.api.model.SpServiceUrlProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.List;
 import java.util.UUID;
 
@@ -138,22 +142,27 @@ public class AdapterMasterManagement {
     throw new AdapterException("Could not find adapter with id: " + id);
   }
 
+  /**
+   * First the adapter is stopped removed, then the according data source is deleted
+   * @param elementId
+   * @throws AdapterException
+   */
   public void deleteAdapter(String elementId) throws AdapterException {
     // IF Stream adapter delete it
     boolean isStreamAdapter = isStreamAdapter(elementId);
-    AdapterDescription ad = adapterStorage.getAdapter(elementId);
 
     if (isStreamAdapter) {
       try {
-        stopStreamAdapter(elementId, ad.getSelectedEndpointUrl());
+        stopStreamAdapter(elementId);
       } catch (AdapterException e) {
         LOG.info("Could not stop adapter: " + elementId);
         LOG.info(e.toString());
       }
     }
 
-    String username = ad.getUserName();
 
+    AdapterDescription ad = adapterStorage.getAdapter(elementId);
+    String username = ad.getUserName();
     adapterStorage.deleteAdapter(elementId);
     LOG.info("Successfully deleted adapter: " + elementId);
 
@@ -185,35 +194,55 @@ public class AdapterMasterManagement {
     WorkerRestClient.stopSetAdapter(baseUrl, ad);
   }
 
-  public void stopStreamAdapter(String elementId, String baseUrl) throws AdapterException {
+  public void stopStreamAdapter(String elementId) throws AdapterException {
     AdapterDescription ad = adapterStorage.getAdapter(elementId);
 
     if (!isStreamAdapter(elementId)) {
       throw new AdapterException("Adapter " + elementId + "is not a stream adapter.");
     } else {
-      WorkerRestClient.stopStreamAdapter(baseUrl, (AdapterStreamDescription) ad);
+      WorkerRestClient.stopStreamAdapter(ad.getSelectedEndpointUrl(), (AdapterStreamDescription) ad);
     }
   }
 
-  public void startStreamAdapter(String adapterId, String baseUrl) throws AdapterException {
-    AdapterDescription ad = adapterStorage.getAdapter(adapterId);
-    if (!isStreamAdapter(adapterId)) {
-      throw new AdapterException("Adapter " + adapterId + "is not a stream adapter.");
-    } else {
-      ad.setSelectedEndpointUrl(baseUrl);
-      adapterStorage.updateAdapter(ad);
-      WorkerRestClient.invokeStreamAdapter(baseUrl, (AdapterStreamDescription) ad);
+  public void startStreamAdapter(String elementId) throws AdapterException {
+    // TODO ensure that adapter is not started twice
+
+    AdapterDescription ad = adapterStorage.getAdapter(elementId);
+    try {
+      String endpointUrl = findEndpointUrl(ad);
+      URI uri = new URI(endpointUrl);
+      String baseUrl = uri.getScheme() + "://" + uri.getAuthority();
+      if (!isStreamAdapter(elementId)) {
+        throw new AdapterException("Adapter " + elementId + "is not a stream adapter.");
+      } else {
+        ad.setSelectedEndpointUrl(baseUrl);
+        adapterStorage.updateAdapter(ad);
+        WorkerRestClient.invokeStreamAdapter(baseUrl, (AdapterStreamDescription) ad);
+      }
+    } catch (NoServiceEndpointsAvailableException e) {
+      e.printStackTrace();
+    } catch (URISyntaxException e) {
+      e.printStackTrace();
     }
+
+
   }
 
   public boolean isStreamAdapter(String id) {
-    AdapterDescription ad = adapterStorage.getAdapter(id);
+    AdapterDescription adapterDescription = adapterStorage.getAdapter(id);
+    return isStreamAdapter(adapterDescription);
+  }
 
-    return ad instanceof AdapterStreamDescription;
+  public boolean isStreamAdapter(AdapterDescription adapterDescription) {
+    return adapterDescription instanceof AdapterStreamDescription;
   }
 
   private IAdapterStorage getAdapterStorage() {
     return new AdapterStorageImpl();
   }
 
+  private String findEndpointUrl(AdapterDescription adapterDescription) throws NoServiceEndpointsAvailableException {
+    SpServiceUrlProvider serviceUrlProvider = SpServiceUrlProvider.ADAPTER;
+    return new ExtensionsServiceEndpointGenerator(adapterDescription.getAppId(), serviceUrlProvider).getEndpointResourceUrl();
+  }
 }
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java
index 097a0f4..2df8f95 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java
@@ -18,17 +18,12 @@
 
 package org.apache.streampipes.connect.container.master.management;
 
-import org.apache.streampipes.commons.exceptions.NoServiceEndpointsAvailableException;
-import org.apache.streampipes.connect.api.exception.AdapterException;
-import org.apache.streampipes.model.connect.adapter.AdapterDescription;
-import org.apache.streampipes.model.connect.grounding.ProtocolDescription;
+import org.apache.streampipes.connect.container.master.health.AdapterHealthCheck;
 import org.apache.streampipes.model.connect.worker.ConnectWorkerContainer;
 import org.apache.streampipes.storage.couchdb.impl.ConnectionWorkerContainerStorageImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
 public class WorkerAdministrationManagement {
 
     private static final Logger LOG = LoggerFactory.getLogger(AdapterMasterManagement.class);
@@ -36,61 +31,69 @@ public class WorkerAdministrationManagement {
     private ConnectionWorkerContainerStorageImpl connectionWorkerContainerStorage;
     private AdapterMasterManagement adapterMasterManagement;
 
+    private AdapterHealthCheck adapterHealthCheck;
+
     public WorkerAdministrationManagement() {
         this.connectionWorkerContainerStorage = new ConnectionWorkerContainerStorageImpl();
         this.adapterMasterManagement = new AdapterMasterManagement();
+        this.adapterHealthCheck = new AdapterHealthCheck();
     }
 
-    // TODO refactor and test this function
     public void register(ConnectWorkerContainer connectWorker) {
-        // Check if already registered
-
-        List<ConnectWorkerContainer> allConnectWorkerContainers =
-                this.connectionWorkerContainerStorage.getAllConnectWorkerContainers();
+        // TODO how do I register the protocols and adapters of a worker?
 
-        boolean alreadyRegistered = false;
+        this.adapterHealthCheck.checkAndRestoreAdapters();
 
-        // Delete old description if it was registred before
-        for (ConnectWorkerContainer c : allConnectWorkerContainers) {
-            if (c.getServiceGroup().equals(connectWorker.getServiceGroup())) {
-                boolean adaptersChanged = false;
-
-                for (AdapterDescription a : c.getAdapters()) {
-                    if (connectWorker.getAdapters().stream().noneMatch(ad -> ad.getElementId().equals(a.getElementId()))) {
-                        adaptersChanged = true;
-                    }
-                }
-
-                for (ProtocolDescription p : c.getProtocols()) {
-                    if (connectWorker.getProtocols().stream().noneMatch(pr -> pr.getAppId().equals(p.getAppId()))) {
-                        adaptersChanged = true;
-                    }
-                }
-
-                if (!adaptersChanged) {
-                    alreadyRegistered = true;
-                } else {
-                    LOG.info("Remove old connect worker: " + connectWorker.getServiceGroup());
-                    this.connectionWorkerContainerStorage.deleteConnectWorkerContainer(c.getId());
-                }
-            }
-        }
+        // Check if already registered
 
-        // TODO I am not sure if this is correct
-        // IF NOT REGISTERED
-        // Store Connect Worker in DB
-        if (!alreadyRegistered) {
-            this.connectionWorkerContainerStorage.storeConnectWorkerContainer(connectWorker);
-            LOG.info("Stored new connect worker: " + connectWorker.getServiceGroup() + " in database");
-        } else {
-            try {
-                this.adapterMasterManagement.startAllStreamAdapters(connectWorker);
-            } catch (AdapterException e) {
-                LOG.error("Could not start adapters on worker: " + connectWorker.getServiceGroup());
-            } catch (NoServiceEndpointsAvailableException e) {
-                LOG.error("Could not start adapter due to missing endpoint");
-            }
-        }
+//        List<ConnectWorkerContainer> allConnectWorkerContainers =
+//                this.connectionWorkerContainerStorage.getAllConnectWorkerContainers();
+//
+//        boolean alreadyRegistered = false;
+//
+//        // Delete old description if it was registred before
+//        for (ConnectWorkerContainer c : allConnectWorkerContainers) {
+//            if (c.getServiceGroup().equals(connectWorker.getServiceGroup())) {
+//                boolean adaptersChanged = false;
+//
+//                for (AdapterDescription a : c.getAdapters()) {
+//                    if (connectWorker.getAdapters().stream().noneMatch(ad -> ad.getElementId().equals(a.getElementId()))) {
+//                        adaptersChanged = true;
+//                    }
+//                }
+//
+//                for (ProtocolDescription p : c.getProtocols()) {
+//                    if (connectWorker.getProtocols().stream().noneMatch(pr -> pr.getAppId().equals(p.getAppId()))) {
+//                        adaptersChanged = true;
+//                    }
+//                }
+//
+//                if (!adaptersChanged) {
+//                    alreadyRegistered = true;
+//                } else {
+//                    LOG.info("Remove old connect worker: " + connectWorker.getServiceGroup());
+//                    this.connectionWorkerContainerStorage.deleteConnectWorkerContainer(c.getId());
+//                }
+//            }
+//        }
+//
+//
+//
+//        // TODO I am not sure if this is correct
+//        // IF NOT REGISTERED
+//        // Store Connect Worker in DB
+//        if (!alreadyRegistered) {
+//            this.connectionWorkerContainerStorage.storeConnectWorkerContainer(connectWorker);
+//            LOG.info("Stored new connect worker: " + connectWorker.getServiceGroup() + " in database");
+//        } else {
+//            try {
+//                this.adapterMasterManagement.startAllStreamAdapters(connectWorker);
+//            } catch (AdapterException e) {
+//                LOG.error("Could not start adapters on worker: " + connectWorker.getServiceGroup());
+//            } catch (NoServiceEndpointsAvailableException e) {
+//                LOG.error("Could not start adapter due to missing endpoint");
+//            }
+//        }
     }
 
 
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/util/AdapterEncryptionService.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/util/AdapterEncryptionService.java
index 984cf58..1f61c01 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/util/AdapterEncryptionService.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/util/AdapterEncryptionService.java
@@ -17,7 +17,6 @@
  */
 package org.apache.streampipes.connect.container.master.util;
 
-import org.apache.streampipes.manager.secret.SecretProvider;
 import org.apache.streampipes.model.connect.adapter.AdapterDescription;
 import org.apache.streampipes.model.connect.adapter.GenericAdapterDescription;
 import org.apache.streampipes.model.staticproperty.StaticProperty;
@@ -56,10 +55,12 @@ public class AdapterEncryptionService {
   }
 
   private void encrypt(List<StaticProperty> staticProperties) {
-    SecretProvider.getEncryptionService(ad.getUserName()).applyConfig(staticProperties);
+    // TODO uncomment
+//    SecretProvider.getEncryptionService(ad.getUserName()).applyConfig(staticProperties);
   }
 
   private void decrypt(List<StaticProperty> staticProperties) {
-    SecretProvider.getDecryptionService(ad.getUserName()).applyConfig(staticProperties);
+    // TODO uncomment
+//    SecretProvider.getDecryptionService(ad.getUserName()).applyConfig(staticProperties);
   }
 }
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
index e76574d..eeb9189 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
@@ -42,8 +42,6 @@ import java.util.List;
 @TsModel
 public abstract class AdapterDescription extends NamedStreamPipesEntity {
 
-//    private String adapterId;
-
     private String userName;
 
     private EventGrounding eventGrounding;
@@ -60,6 +58,7 @@ public abstract class AdapterDescription extends NamedStreamPipesEntity {
 
     private long createdAt;
 
+    //  Is used to store where the adapter is running to stop it
     private String selectedEndpointUrl;
 
     private String correspondingServiceGroup;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/worker/ConnectWorkerContainer.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/worker/ConnectWorkerContainer.java
index d6b2cff..b449c5b 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/worker/ConnectWorkerContainer.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/worker/ConnectWorkerContainer.java
@@ -27,6 +27,7 @@ import org.apache.streampipes.model.util.ElementIdGenerator;
 import java.util.ArrayList;
 import java.util.List;
 
+@Deprecated
 public class ConnectWorkerContainer extends UnnamedStreamPipesEntity {
 
     private @SerializedName("_rev") String rev;
diff --git a/streampipes-pipeline-management/pom.xml b/streampipes-pipeline-management/pom.xml
index 1324eb9..89f6294 100644
--- a/streampipes-pipeline-management/pom.xml
+++ b/streampipes-pipeline-management/pom.xml
@@ -42,7 +42,7 @@
             <artifactId>streampipes-container</artifactId>
             <version>0.69.0-SNAPSHOT</version>
         </dependency>
-              <dependency>
+        <dependency>
             <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-cbor</artifactId>
             <version>0.69.0-SNAPSHOT</version>
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java
index bbebb2e..0831269 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java
@@ -87,9 +87,7 @@ public class AdapterResource extends AbstractAdapterResource<AdapterMasterManage
     @Produces(MediaType.APPLICATION_JSON)
     public Response stopAdapter(@PathParam("id") String adapterId) throws NoServiceEndpointsAvailableException {
         try {
-            AdapterDescription adapterDescription = getAdapterDescription(adapterId);
-            String workerBaseUrl = workerUrlProvider.getWorkerBaseUrl(adapterDescription.getAppId());
-            managementService.stopStreamAdapter(adapterId, workerBaseUrl);
+            managementService.stopStreamAdapter(adapterId);
             return ok(Notifications.success("Adapter started"));
         } catch (AdapterException e) {
             LOG.error("Could not stop adapter with id " +adapterId, e);
@@ -103,10 +101,9 @@ public class AdapterResource extends AbstractAdapterResource<AdapterMasterManage
     @Produces(MediaType.APPLICATION_JSON)
     public Response startAdapter(@PathParam("id") String adapterId) {
         try {
-            String workerUrl =  workerUrlProvider.getWorkerBaseUrl(getAdapterDescription(adapterId).getAppId());
-            managementService.startStreamAdapter(adapterId, workerUrl);
+            managementService.startStreamAdapter(adapterId);
             return ok(Notifications.success("Adapter stopped"));
-        } catch (AdapterException | NoServiceEndpointsAvailableException e) {
+        } catch (AdapterException e) {
             LOG.error("Could not start adapter with id " +adapterId, e);
             return ok(Notifications.error(e.getMessage()));
         }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WorkerAdministrationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WorkerAdministrationResource.java
index c30fddf..bfd2979 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WorkerAdministrationResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WorkerAdministrationResource.java
@@ -50,7 +50,7 @@ public class WorkerAdministrationResource extends AbstractSharedRestInterface {
         LOG.info("Worker container: " + connectWorkerContainer.getServiceGroup() + " was detected");
         this.workerAdministrationManagement.register(connectWorkerContainer);
 
-        return ok(Notifications.success("Worker Container sucessfully added"));
+        return ok(Notifications.success("Worker Container successfully added"));
     }
 
 }

[incubator-streampipes] 01/02: [STEAMPIPES-438] Remove adapter Id form backend

Posted by ze...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch STREAMPIPES-438
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit 0e89350e8b45de2651dac95045f468381d596d93
Author: Philipp Zehnder <ze...@fzi.de>
AuthorDate: Tue Oct 5 12:23:35 2021 +0200

    [STEAMPIPES-438] Remove adapter Id form backend
---
 .../master/management/AdapterMasterManagement.java |  29 +-
 .../AdapterTemplateMasterManagement.java           |   4 +-
 .../master/management/SourcesManagement.java       |  10 +-
 .../management/WorkerAdministrationManagement.java |   6 +-
 .../master/management/WorkerRestClient.java        |   8 +-
 .../management/AdapterMasterManagementTest.java    |   1 -
 .../master/management/SourcesManagementTest.java   |   4 +-
 .../master/management/WorkerRestClientTest.java    |  10 +-
 .../worker/init/AdapterWorkerContainer.java        |   1 +
 .../init/ConnectWorkerRegistrationService.java     |   2 +-
 .../container/worker/rest/GuessResource.java       |   2 +-
 .../connect/container/worker/utils/Utils.java      |   6 +-
 .../model/generic/GenericDataSetAdapter.java       |   4 +-
 .../model/generic/GenericDataStreamAdapter.java    |   4 +-
 .../model/connect/adapter/AdapterDescription.java  |  34 +-
 .../connect/adapter/AdapterStreamDescription.java  |   5 +-
 .../adapter/GenericAdapterSetDescription.java      |   2 +-
 .../adapter/GenericAdapterStreamDescription.java   |   1 -
 .../apache/streampipes/rest/ResetManagement.java   |   4 +-
 .../rest/impl/connect/AdapterResource.java         |   8 +-
 .../rest/impl/connect/WelcomePageMaster.java       |   2 +-
 .../builder/adapter/AdapterDescriptionBuilder.java |   4 +-
 .../serializers/json/AdapterSerializer.java        |   4 +-
 .../storage/couchdb/impl/AdapterStorageImpl.java   |   2 +-
 .../couchdb/impl/AdapterTemplateStorageImpl.java   |   2 +-
 ui/cypress/tests/adapter/machineDataSimulator.ts   |   4 +-
 ui/cypress/tests/adapter/persistInDataLake.ts      |   2 +-
 .../adapter-description.component.ts               |  81 ++--
 .../data-marketplace/data-marketplace.component.ts | 443 +++++++++++----------
 .../connect/services/data-marketplace.service.ts   | 146 +++----
 ui/src/app/core-model/gen/streampipes-model.ts     |   8 +-
 31 files changed, 408 insertions(+), 435 deletions(-)

diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java
index c1c40ad..993a88b 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagement.java
@@ -97,6 +97,7 @@ public class AdapterMasterManagement {
 
     AdapterDescription encryptedAdapterDescription =
             new AdapterEncryptionService(new Cloner().adapterDescription(ad)).encrypt();
+
     // store in db
     String adapterId = adapterStorage.storeAdapter(encryptedAdapterDescription);
 
@@ -107,7 +108,7 @@ public class AdapterMasterManagement {
     }
 
     LOG.info("Install source (source URL: {} in backend", ad.getElementId());
-    SpDataStream storedDescription = new SourcesManagement().getAdapterDataStream(ad.getAdapterId());
+    SpDataStream storedDescription = new SourcesManagement().getAdapterDataStream(ad.getElementId());
     storedDescription.setCorrespondingAdapterId(adapterId);
     installDataSource(storedDescription, username);
 
@@ -128,7 +129,7 @@ public class AdapterMasterManagement {
 
     if (allAdapters != null && id != null) {
       for (AdapterDescription ad : allAdapters) {
-        if (id.equals(ad.getId())) {
+        if (id.equals(ad.getElementId())) {
           return ad;
         }
       }
@@ -137,24 +138,24 @@ public class AdapterMasterManagement {
     throw new AdapterException("Could not find adapter with id: " + id);
   }
 
-  public void deleteAdapter(String id) throws AdapterException {
-    //        // IF Stream adapter delete it
-    boolean isStreamAdapter = isStreamAdapter(id);
-    AdapterDescription ad = adapterStorage.getAdapter(id);
+  public void deleteAdapter(String elementId) throws AdapterException {
+    // IF Stream adapter delete it
+    boolean isStreamAdapter = isStreamAdapter(elementId);
+    AdapterDescription ad = adapterStorage.getAdapter(elementId);
 
     if (isStreamAdapter) {
       try {
-        stopStreamAdapter(id, ad.getSelectedEndpointUrl());
+        stopStreamAdapter(elementId, ad.getSelectedEndpointUrl());
       } catch (AdapterException e) {
-        LOG.info("Could not stop adapter: " + id);
+        LOG.info("Could not stop adapter: " + elementId);
         LOG.info(e.toString());
       }
     }
 
     String username = ad.getUserName();
 
-    adapterStorage.deleteAdapter(id);
-    LOG.info("Successfully deleted adapter: " + id);
+    adapterStorage.deleteAdapter(elementId);
+    LOG.info("Successfully deleted adapter: " + elementId);
 
     UserService userService = getUserService();
     IPipelineElementDescriptionStorageCache requestor = StorageManager.INSTANCE.getPipelineElementStorage();
@@ -184,11 +185,11 @@ public class AdapterMasterManagement {
     WorkerRestClient.stopSetAdapter(baseUrl, ad);
   }
 
-  public void stopStreamAdapter(String adapterId, String baseUrl) throws AdapterException {
-    AdapterDescription ad = adapterStorage.getAdapter(adapterId);
+  public void stopStreamAdapter(String elementId, String baseUrl) throws AdapterException {
+    AdapterDescription ad = adapterStorage.getAdapter(elementId);
 
-    if (!isStreamAdapter(adapterId)) {
-      throw new AdapterException("Adapter " + adapterId + "is not a stream adapter.");
+    if (!isStreamAdapter(elementId)) {
+      throw new AdapterException("Adapter " + elementId + "is not a stream adapter.");
     } else {
       WorkerRestClient.stopStreamAdapter(baseUrl, (AdapterStreamDescription) ad);
     }
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterTemplateMasterManagement.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterTemplateMasterManagement.java
index e8bf239..b3df802 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterTemplateMasterManagement.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/AdapterTemplateMasterManagement.java
@@ -52,8 +52,6 @@ public class AdapterTemplateMasterManagement {
         String uri = adapterDescription.getUri() + UUID.randomUUID().toString();
         adapterDescription.setUri(uri);
         adapterDescription.setElementId(uri);
-        adapterDescription.setAdapterId(uri);
-
 
         if (adapterDescription instanceof GenericAdapterSetDescription) {
             String id = ((GenericAdapterSetDescription) adapterDescription).getFormatDescription().getElementId();
@@ -84,7 +82,7 @@ public class AdapterTemplateMasterManagement {
         }
 
         this.adapterTemplateStorage.storeAdapterTemplate(adapterDescription);
-        return adapterDescription.getId();
+        return adapterDescription.getElementId();
     }
 
 
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/SourcesManagement.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/SourcesManagement.java
index b731aab..e48520e 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/SourcesManagement.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/SourcesManagement.java
@@ -68,8 +68,7 @@ public class SourcesManagement {
         adapterDescription.setDataSet(dataSet);
 
         String newId = adapterDescription.getUri() + "/streams/" + dataSet.getDatasetInvocationId();
-        adapterDescription.setUri(newId);
-        adapterDescription.setId(newId);
+        adapterDescription.setElementId(newId);
 
         AdapterSetDescription decryptedAdapterDescription =
                 (AdapterSetDescription) new Cloner().adapterDescription(adapterDescription);
@@ -81,8 +80,7 @@ public class SourcesManagement {
         AdapterSetDescription adapterDescription = (AdapterSetDescription) getAdapterDescriptionById(streamId);
 
         String newId = adapterDescription.getUri() + "/streams/" + runningInstanceId;
-        adapterDescription.setUri(newId);
-        adapterDescription.setId(newId);
+        adapterDescription.setElementId(newId);
 
         String newUrl = getAdapterUrl(streamId);
         WorkerRestClient.stopSetAdapter(newUrl, adapterDescription);
@@ -124,7 +122,7 @@ public class SourcesManagement {
             d.setType("set");
             streams.add(d);
             DataSourceDescriptionHtml dsd = new DataSourceDescriptionHtml("Adapter Stream",
-                    "This stream is generated by an StreamPipes Connect adapter. ID of adapter: " + ad.getId(), uri.toString(), streams);
+                    "This stream is generated by an StreamPipes Connect adapter. ID of adapter: " + ad.getElementId(), uri.toString(), streams);
             dsd.setType("source");
             dsd.setAppId(ad.getAppId());
             dsd.setEditable(!(ad.isInternallyManaged()));
@@ -140,7 +138,7 @@ public class SourcesManagement {
         AdapterDescription adapterDescription = null;
         List<AdapterDescription> allAdapters = adapterStorage.getAllAdapters();
         for (AdapterDescription a : allAdapters) {
-            if (a.getAdapterId().equals(id)) {
+            if (a.getElementId().equals(id)) {
                 adapterDescription = a;
             }
         }
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java
index 74d627e..097a0f4 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerAdministrationManagement.java
@@ -41,6 +41,7 @@ public class WorkerAdministrationManagement {
         this.adapterMasterManagement = new AdapterMasterManagement();
     }
 
+    // TODO refactor and test this function
     public void register(ConnectWorkerContainer connectWorker) {
         // Check if already registered
 
@@ -48,12 +49,14 @@ public class WorkerAdministrationManagement {
                 this.connectionWorkerContainerStorage.getAllConnectWorkerContainers();
 
         boolean alreadyRegistered = false;
+
+        // Delete old description if it was registred before
         for (ConnectWorkerContainer c : allConnectWorkerContainers) {
             if (c.getServiceGroup().equals(connectWorker.getServiceGroup())) {
                 boolean adaptersChanged = false;
 
                 for (AdapterDescription a : c.getAdapters()) {
-                    if (connectWorker.getAdapters().stream().noneMatch(ad -> ad.getAdapterId().equals(a.getAdapterId()))) {
+                    if (connectWorker.getAdapters().stream().noneMatch(ad -> ad.getElementId().equals(a.getElementId()))) {
                         adaptersChanged = true;
                     }
                 }
@@ -73,6 +76,7 @@ public class WorkerAdministrationManagement {
             }
         }
 
+        // TODO I am not sure if this is correct
         // IF NOT REGISTERED
         // Store Connect Worker in DB
         if (!alreadyRegistered) {
diff --git a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerRestClient.java b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerRestClient.java
index 04d33d0..2043732 100644
--- a/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerRestClient.java
+++ b/streampipes-connect-container-master/src/main/java/org/apache/streampipes/connect/container/master/management/WorkerRestClient.java
@@ -54,16 +54,16 @@ public class WorkerRestClient {
         String url = endpointUrl + WorkerPaths.getStreamInvokePath();
 
         startAdapter(url, adapterStreamDescription);
-        updateStreamAdapterStatus(adapterStreamDescription.getId(), true);
+        updateStreamAdapterStatus(adapterStreamDescription.getElementId(), true);
     }
 
     public static void stopStreamAdapter(String baseUrl, AdapterStreamDescription adapterStreamDescription) throws AdapterException {
         String url = baseUrl + WorkerPaths.getStreamStopPath();
 
-        AdapterDescription ad = getAdapterDescriptionById(new AdapterStorageImpl(), adapterStreamDescription.getUri());
+        AdapterDescription ad = getAdapterDescriptionById(new AdapterStorageImpl(), adapterStreamDescription.getElementId());
 
         stopAdapter(ad, url);
-        updateStreamAdapterStatus(adapterStreamDescription.getId(), false);
+        updateStreamAdapterStatus(adapterStreamDescription.getElementId(), false);
     }
 
     public static void invokeSetAdapter(String baseUrl, AdapterSetDescription adapterSetDescription) throws AdapterException {
@@ -200,7 +200,7 @@ public class WorkerRestClient {
         AdapterDescription adapterDescription = null;
         List<AdapterDescription> allAdapters = adapterStorage.getAllAdapters();
         for (AdapterDescription a : allAdapters) {
-            if (a.getUri().endsWith(id)) {
+            if (a.getElementId().endsWith(id)) {
                 adapterDescription = a;
             }
         }
diff --git a/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagementTest.java b/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagementTest.java
index 19ca5f5..7b6dfb4 100644
--- a/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagementTest.java
+++ b/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/AdapterMasterManagementTest.java
@@ -49,7 +49,6 @@ public class AdapterMasterManagementTest {
         AdapterStorageImpl adapterStorage = mock(AdapterStorageImpl.class);
         when(adapterStorage.getAllAdapters()).thenReturn(adapterDescriptions);
 
-        String id = "http://t.id";
         AdapterMasterManagement adapterMasterManagement = new AdapterMasterManagement(adapterStorage);
 
         adapterMasterManagement.getAdapter("id2");
diff --git a/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/SourcesManagementTest.java b/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/SourcesManagementTest.java
index d4af051..b007fcb 100644
--- a/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/SourcesManagementTest.java
+++ b/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/SourcesManagementTest.java
@@ -138,9 +138,7 @@ public class SourcesManagementTest {
     private List<AdapterDescription> getAdapterDescriptionList() {
         GenericAdapterSetDescription adapterSetDescription = new GenericAdapterSetDescription();
 
-        adapterSetDescription.setUri(ID);
-        adapterSetDescription.setId(ID);
-
+        adapterSetDescription.setElementId(ID);
 
         return Arrays.asList(adapterSetDescription);
     }
diff --git a/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/WorkerRestClientTest.java b/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/WorkerRestClientTest.java
index 2336f50..401f894 100644
--- a/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/WorkerRestClientTest.java
+++ b/streampipes-connect-container-master/src/test/java/org/apache/streampipes/connect/container/master/management/WorkerRestClientTest.java
@@ -58,7 +58,7 @@ public class WorkerRestClientTest {
         when(WorkerRestClient.class, "stopStreamAdapter", anyString(), any()).thenCallRealMethod();
         when(WorkerPaths.class, "getStreamStopPath").thenReturn(expectedUrl);
         GenericAdapterStreamDescription description = new GenericAdapterStreamDescription();
-        description.setId("id1");
+        description.setElementId("id1");
 
         WorkerRestClient.stopStreamAdapter("", description);
 
@@ -73,7 +73,7 @@ public class WorkerRestClientTest {
         when(WorkerRestClient.class, "stopStreamAdapter", anyString(), any()).thenCallRealMethod();
 
         GenericAdapterStreamDescription description = new GenericAdapterStreamDescription();
-        description.setId("id1");
+        description.setElementId("id1");
 
         WorkerRestClient.stopStreamAdapter("", description);
 
@@ -88,7 +88,7 @@ public class WorkerRestClientTest {
         when(WorkerPaths.class, "getSetInvokePath").thenReturn(expectedUrl);
 
         GenericAdapterSetDescription description = new GenericAdapterSetDescription();
-        description.setId("id1");
+        description.setElementId("id1");
         WorkerRestClient.invokeSetAdapter("", description);
 
         verifyStatic(WorkerRestClient.class, times(1));
@@ -113,7 +113,7 @@ public class WorkerRestClientTest {
         when(WorkerPaths.class, "getSetStopPath").thenReturn(expectedUrl);
 
         GenericAdapterSetDescription description = new GenericAdapterSetDescription();
-        description.setId("id1");
+        description.setElementId("id1");
         WorkerRestClient.stopSetAdapter("", description);
 
         verifyStatic(WorkerRestClient.class, times(1));
@@ -127,7 +127,7 @@ public class WorkerRestClientTest {
         when(WorkerRestClient.class, "stopSetAdapter", anyString(), any()).thenCallRealMethod();
 
         GenericAdapterSetDescription description = new GenericAdapterSetDescription();
-        description.setId("id1");
+        description.setElementId("id1");
         WorkerRestClient.stopSetAdapter("", description);
 
     }
diff --git a/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/AdapterWorkerContainer.java b/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/AdapterWorkerContainer.java
index 9b88cc9..6f868dd 100644
--- a/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/AdapterWorkerContainer.java
+++ b/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/AdapterWorkerContainer.java
@@ -33,6 +33,7 @@ import java.util.List;
 @Configuration
 @EnableAutoConfiguration
 @Import({AdapterWorkerContainerResourceConfig.class})
+@Deprecated
 public abstract class AdapterWorkerContainer extends StreamPipesExtensionsServiceBase {
 
   private static final Logger LOG = LoggerFactory.getLogger(AdapterWorkerContainer.class);
diff --git a/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/ConnectWorkerRegistrationService.java b/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/ConnectWorkerRegistrationService.java
index 7ecf3e5..44a242e 100644
--- a/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/ConnectWorkerRegistrationService.java
+++ b/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/init/ConnectWorkerRegistrationService.java
@@ -36,7 +36,7 @@ public class ConnectWorkerRegistrationService {
     while (!connected) {
       List<String> coreServices = getConnectMasterUrl();
       if (coreServices.size() > 0) {
-        String masterUrl = getConnectMasterUrl().get(0) + "/streampipes-backend";
+        String masterUrl = coreServices.get(0) + "/streampipes-backend";
         LOG.info("Trying to connect to master: " + masterUrl);
         connected = MasterRestClient.register(masterUrl,
                 new ConnectWorkerDescriptionProvider().getContainerDescription(serviceGroup));
diff --git a/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/rest/GuessResource.java b/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/rest/GuessResource.java
index 228dac8..ed51a40 100644
--- a/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/rest/GuessResource.java
+++ b/streampipes-connect-container-worker/src/main/java/org/apache/streampipes/connect/container/worker/rest/GuessResource.java
@@ -65,7 +65,7 @@ public class GuessResource extends AbstractSharedRestInterface {
           logger.error("Error while parsing events: ", e);
           return serverError(Notifications.error(e.getMessage()));
       } catch (Exception e) {
-          logger.error("Error while guess schema for AdapterDescription: " + adapterDescription.getAdapterId(), e);
+          logger.error("Error while guess schema for AdapterDescription: " + adapterDescription.getElementId(), e);
           return serverError(Notifications.error(e.getMessage()));
       }
 
diff --git a/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java b/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java
index 2b2b467..40665f8 100644
--- a/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java
+++ b/streampipes-connect-container-worker/src/test/java/org/apache/streampipes/connect/container/worker/utils/Utils.java
@@ -30,8 +30,7 @@ public class Utils {
     public static AdapterStreamDescription getMinimalStreamAdapter() {
         AdapterStreamDescription result = new GenericAdapterStreamDescription();
         String id = "http://t.de/";
-        result.setUri(id);
-        result.setId(id);
+        result.setElementId(id);
         result.setRules(new ArrayList<>());
 
         return result;
@@ -40,8 +39,7 @@ public class Utils {
     public static AdapterSetDescription getMinimalSetAdapter() {
         AdapterSetDescription result = new GenericAdapterSetDescription();
         String id = "http://t.de/";
-        result.setUri(id);
-        result.setId(id);
+        result.setElementId(id);
 
         return result;
     }
diff --git a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataSetAdapter.java b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataSetAdapter.java
index 88c3172..70acd19 100644
--- a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataSetAdapter.java
+++ b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataSetAdapter.java
@@ -47,8 +47,8 @@ public class GenericDataSetAdapter extends GenericAdapter<GenericAdapterSetDescr
     @Override
     public GenericAdapterSetDescription declareModel() {
         GenericAdapterSetDescription adapterDescription = new GenericAdapterSetDescription();
-        adapterDescription.setAdapterId(GenericAdapterSetDescription.ID);
-        adapterDescription.setUri(GenericAdapterSetDescription.ID);
+//        adapterDescription.setAdapterId(GenericAdapterSetDescription.ID);
+//        adapterDescription.setUri(GenericAdapterSetDescription.ID);
         adapterDescription.setAppId(GenericAdapterSetDescription.ID);
         return adapterDescription;
     }
diff --git a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataStreamAdapter.java b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataStreamAdapter.java
index a2efade..87588e6 100644
--- a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataStreamAdapter.java
+++ b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/model/generic/GenericDataStreamAdapter.java
@@ -46,8 +46,8 @@ public class GenericDataStreamAdapter extends GenericAdapter<GenericAdapterStrea
     @Override
     public GenericAdapterStreamDescription declareModel() {
         GenericAdapterStreamDescription adapterDescription = new GenericAdapterStreamDescription();
-        adapterDescription.setAdapterId(GenericAdapterStreamDescription.ID);
-        adapterDescription.setUri(GenericAdapterStreamDescription.ID);
+//        adapterDescription.setAdapterId(GenericAdapterStreamDescription.ID);
+//        adapterDescription.setUri(GenericAdapterStreamDescription.ID);
         adapterDescription.setAppId(GenericAdapterStreamDescription.ID);
         return adapterDescription;
     }
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
index 5f88c8b..e76574d 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
@@ -42,14 +42,7 @@ import java.util.List;
 @TsModel
 public abstract class AdapterDescription extends NamedStreamPipesEntity {
 
-//    @RdfProperty("sp:couchDBId")
-//    @JsonProperty("couchDBId")
-//    private @SerializedName("_id") String id;
-//
-//    @JsonProperty("_rev")
-//    private @SerializedName("_rev") String rev;
-
-    private String adapterId;
+//    private String adapterId;
 
     private String userName;
 
@@ -88,8 +81,8 @@ public abstract class AdapterDescription extends NamedStreamPipesEntity {
         this.eventGrounding.setTransportProtocols(Arrays.asList(tpKafka,tpJms,tpMqtt));
     }
 
-    public AdapterDescription(String uri, String name, String description) {
-        super(uri, name, description);
+    public AdapterDescription(String elementId, String name, String description) {
+        super(elementId, name, description);
         this.rules = new ArrayList<>();
         this.category = new ArrayList<>();
     }
@@ -97,7 +90,7 @@ public abstract class AdapterDescription extends NamedStreamPipesEntity {
 
     public AdapterDescription(AdapterDescription other) {
         super(other);
-        this.adapterId = other.getAdapterId();
+//        this.adapterId = other.getAdapterId();
         //this.id = other.getId();
         //this.rev = other.getRev();
         this.config = new Cloner().staticProperties(other.getConfig());
@@ -112,16 +105,7 @@ public abstract class AdapterDescription extends NamedStreamPipesEntity {
         if (other.getEventGrounding() != null) this.eventGrounding = new EventGrounding(other.getEventGrounding());
     }
 
-
-
-    public String getId() {
-        return this.elementId;
-    }
-
-    public void setId(String id) {
-        this.elementId = id;
-    }
-
+    // TODO check if it can be deleted
     public String getRev() {
         return this.rev;
     }
@@ -130,14 +114,6 @@ public abstract class AdapterDescription extends NamedStreamPipesEntity {
         this.rev = rev;
     }
 
-    public String getAdapterId() {
-        return adapterId;
-    }
-
-    public void setAdapterId(String adapterId) {
-        this.adapterId = adapterId;
-    }
-
     public String getUserName() {
         return userName;
     }
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java
index 7713ff8..ac098c9 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java
@@ -34,9 +34,8 @@ public abstract class AdapterStreamDescription extends AdapterDescription {
         super();
     }
 
-    public AdapterStreamDescription(String uri, String name, String description) {
-        super(uri, name, description);
-        setAdapterId(uri);
+    public AdapterStreamDescription(String elementId, String name, String description) {
+        super(elementId, name, description);
     }
 
     public AdapterStreamDescription(AdapterStreamDescription other) {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterSetDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterSetDescription.java
index e195459..2acd048 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterSetDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterSetDescription.java
@@ -39,7 +39,7 @@ public class GenericAdapterSetDescription extends AdapterSetDescription implemen
 
     public GenericAdapterSetDescription() {
         super(ID, "GenericAdapterSetDescription", "");
-        setAdapterId(ID);
+//        setAdapterId(ID);
     }
 
 
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterStreamDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterStreamDescription.java
index 1a8239b..98aea2c 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterStreamDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/GenericAdapterStreamDescription.java
@@ -36,7 +36,6 @@ public class GenericAdapterStreamDescription extends AdapterStreamDescription im
 
     public GenericAdapterStreamDescription() {
         super(ID, "GenericAdapterStreamDescription", "");
-        setAdapterId(ID);
     }
 
     public GenericAdapterStreamDescription(FormatDescription formatDescription, ProtocolStreamDescription protocolDescription) {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
index d0b77ed..52721d9 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/ResetManagement.java
@@ -71,9 +71,9 @@ public class ResetManagement {
             List<AdapterDescription> allAdapters = adapterMasterManagement.getAllAdapters();
             allAdapters.forEach(adapterDescription -> {
                 try {
-                    adapterMasterManagement.deleteAdapter(adapterDescription.getId());
+                    adapterMasterManagement.deleteAdapter(adapterDescription.getElementId());
                 } catch (AdapterException e) {
-                    logger.error("Failed to delete adapter with id: " + adapterDescription.getAdapterId(), e);
+                    logger.error("Failed to delete adapter with id: " + adapterDescription.getElementId(), e);
                 }
             });
         } catch (AdapterException e) {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java
index e1009e0..bbebb2e 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/AdapterResource.java
@@ -51,7 +51,7 @@ public class AdapterResource extends AbstractAdapterResource<AdapterMasterManage
     public Response addAdapter(AdapterDescription adapterDescription) {
         String username = getAuthenticatedUsername();
         String adapterId;
-        LOG.info("User: " + username + " starts adapter " + adapterDescription.getAdapterId());
+        LOG.info("User: " + username + " starts adapter " + adapterDescription.getElementId());
 
         try {
             String workerBaseUrl = workerUrlProvider.getWorkerBaseUrl(adapterDescription.getAppId());
@@ -116,13 +116,13 @@ public class AdapterResource extends AbstractAdapterResource<AdapterMasterManage
     @JacksonSerialized
     @Path("/{id}")
     @Produces(MediaType.APPLICATION_JSON)
-    public Response deleteAdapter(@PathParam("id") String adapterId) {
+    public Response deleteAdapter(@PathParam("id") String elementId) {
 
         try {
-            managementService.deleteAdapter(adapterId);
+            managementService.deleteAdapter(elementId);
             return ok(Notifications.success("Adapter deleted."));
         } catch (AdapterException e) {
-            LOG.error("Error while deleting adapter with id " + adapterId, e);
+            LOG.error("Error while deleting adapter with id " + elementId, e);
             return ok(Notifications.error(e.getMessage()));
         }
     }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WelcomePageMaster.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WelcomePageMaster.java
index 1dd5b12..46e82e1 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WelcomePageMaster.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/WelcomePageMaster.java
@@ -78,7 +78,7 @@ public class WelcomePageMaster extends AbstractAdapterResource<AdapterMasterMana
 
 		try {
 			for (AdapterDescription ad : managementService.getAllAdapters()) {
-				canvas.li().write(ad.getAdapterId())._li();
+				canvas.li().write(ad.getElementId())._li();
 				canvas.ul().li().write("Kafka Topic: " + GroundingService.extractTopic(ad))._li()._ul();
 			}
 		} catch (AdapterException e) {
diff --git a/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/builder/adapter/AdapterDescriptionBuilder.java b/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/builder/adapter/AdapterDescriptionBuilder.java
index d6792f6..7df2e40 100644
--- a/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/builder/adapter/AdapterDescriptionBuilder.java
+++ b/streampipes-sdk/src/main/java/org/apache/streampipes/sdk/builder/adapter/AdapterDescriptionBuilder.java
@@ -30,13 +30,13 @@ public abstract class AdapterDescriptionBuilder<BU extends
 
   protected AdapterDescriptionBuilder(String id, T element) {
     super(id, element);
-    this.elementDescription.setAdapterId(id);
+//    this.elementDescription.setAdapterId(id);
   }
 
   protected AdapterDescriptionBuilder(String id, String label, String description,
                                    T adapterTypeInstance) {
     super(id, label, description, adapterTypeInstance);
-    this.elementDescription.setAdapterId(id);
+//    this.elementDescription.setAdapterId(id);
   }
 
   public AdapterDescriptionBuilder<BU, T> category(AdapterType... categories) {
diff --git a/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java
index b13cdd8..b5fd815 100644
--- a/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java
+++ b/streampipes-serializers-json/src/main/java/org/apache/streampipes/serializers/json/AdapterSerializer.java
@@ -54,8 +54,8 @@ public class AdapterSerializer implements JsonSerializer<AdapterDescription>, Js
       result.add("type", new JsonPrimitive(src.getClass().getCanonicalName()));
       result.add("field_type", new JsonPrimitive(src.getClass().getCanonicalName()));
       result.add("properties", GsonSerializer.getGson().toJsonTree(src));
-      if (src.getId() != null) {
-        result.add("_id", new JsonPrimitive(src.getId()));
+      if (src.getElementId() != null) {
+        result.add("_id", new JsonPrimitive(src.getElementId()));
       }
       if (src.getRev() != null) {
         result.add("_rev", new JsonPrimitive(src.getRev()));
diff --git a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterStorageImpl.java b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterStorageImpl.java
index 1970a09..8dd1fec 100644
--- a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterStorageImpl.java
+++ b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterStorageImpl.java
@@ -65,7 +65,7 @@ public class AdapterStorageImpl extends AbstractDao<AdapterDescription> implemen
     public void deleteAdapter(String adapterId) {
 
         AdapterDescription adapterDescription = getAdapter(adapterId);
-        couchDbClientSupplier.get().remove(adapterDescription.getId(), adapterDescription.getRev());
+        couchDbClientSupplier.get().remove(adapterDescription.getElementId(), adapterDescription.getRev());
 
     }
 }
diff --git a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterTemplateStorageImpl.java b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterTemplateStorageImpl.java
index c93f7c7..99d5373 100644
--- a/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterTemplateStorageImpl.java
+++ b/streampipes-storage-couchdb/src/main/java/org/apache/streampipes/storage/couchdb/impl/AdapterTemplateStorageImpl.java
@@ -65,6 +65,6 @@ public class AdapterTemplateStorageImpl extends AbstractDao<AdapterDescription>
   @Override
   public void deleteAdapterTemplate(String adapterId) {
     AdapterDescription adapterDescription = getAdapterTemplate(adapterId);
-    couchDbClientSupplier.get().remove(adapterDescription.getId(), adapterDescription.getRev());
+    couchDbClientSupplier.get().remove(adapterDescription.getElementId(), adapterDescription.getRev());
   }
 }
diff --git a/ui/cypress/tests/adapter/machineDataSimulator.ts b/ui/cypress/tests/adapter/machineDataSimulator.ts
index 41137f2..f2849f6 100644
--- a/ui/cypress/tests/adapter/machineDataSimulator.ts
+++ b/ui/cypress/tests/adapter/machineDataSimulator.ts
@@ -29,8 +29,8 @@ describe('Test Random Data Simulator Stream Adapter', () => {
       .create('Machine_Data_Simulator')
       .setName('Machine Data Simulator Test')
       .addInput('input', 'wait-time-ms', '1000')
-      .setTimestampProperty('timestamp')
-      .setStoreInDataLake()
+      // .setTimestampProperty('Timestamp')
+      // .setStoreInDataLake()
       .build();
 
     AdapterUtils.testSpecificStreamAdapter(adapterInput);
diff --git a/ui/cypress/tests/adapter/persistInDataLake.ts b/ui/cypress/tests/adapter/persistInDataLake.ts
index 031595f..6745cf4 100644
--- a/ui/cypress/tests/adapter/persistInDataLake.ts
+++ b/ui/cypress/tests/adapter/persistInDataLake.ts
@@ -31,7 +31,7 @@ describe('Test File Stream Adapter', () => {
       .create('Machine_Data_Simulator')
       .setName('Machine Data Simulator Test')
       .addInput('input', 'wait-time-ms', '1000')
-      .setTimestampProperty('timestamp')
+      .setTimestampProperty('Timestamp')
       .setStoreInDataLake()
       .build();
 
diff --git a/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.ts b/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.ts
index e059169..799d78c 100644
--- a/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.ts
+++ b/ui/src/app/connect/components/data-marketplace/adapter-description/adapter-description.component.ts
@@ -16,21 +16,21 @@
  *
  */
 
-import {Component, EventEmitter, Input, Output} from '@angular/core';
-import {ConnectService} from '../../../services/connect.service';
-import {DataMarketplaceService} from "../../../services/data-marketplace.service";
-import {AdapterExportDialog} from '../../../dialog/adapter-export/adapter-export-dialog.component';
-import {MatDialog} from '@angular/material/dialog';
-import {AdapterDescription} from "../../../../core-model/gen/streampipes-model";
-import {PanelType} from "../../../../core-ui/dialog/base-dialog/base-dialog.model";
-import {DialogService} from "../../../../core-ui/dialog/base-dialog/base-dialog.service";
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { ConnectService } from '../../../services/connect.service';
+import { DataMarketplaceService } from '../../../services/data-marketplace.service';
+import { AdapterExportDialog } from '../../../dialog/adapter-export/adapter-export-dialog.component';
+import { MatDialog } from '@angular/material/dialog';
+import { AdapterDescription } from '../../../../core-model/gen/streampipes-model';
+import { PanelType } from '../../../../core-ui/dialog/base-dialog/base-dialog.model';
+import { DialogService } from '../../../../core-ui/dialog/base-dialog/base-dialog.service';
 
 @Component({
   selector: 'sp-adapter-description',
   templateUrl: './adapter-description.component.html',
-  styleUrls: ['./adapter-description.component.scss'],
+  styleUrls: ['./adapter-description.component.scss']
 })
-export class AdapterDescriptionComponent {
+export class AdapterDescriptionComponent implements OnInit {
 
   @Input()
   adapter: AdapterDescription;
@@ -42,25 +42,28 @@ export class AdapterDescriptionComponent {
   createTemplateEmitter: EventEmitter<AdapterDescription> = new EventEmitter<AdapterDescription>();
 
   adapterToDelete: string;
-  deleting: boolean = false;
-  className: string = "";
-  isDataSetDescription: boolean = false;
-  isDataStreamDescription: boolean = false;
-  isRunningAdapter: boolean = false;
+  deleting = false;
+  className = '';
+  isDataSetDescription = false;
+  isDataStreamDescription = false;
+  isRunningAdapter = false;
   adapterLabel: string;
 
   constructor(private connectService: ConnectService,
               private dataMarketplaceService: DataMarketplaceService,
               private dialogService: DialogService,
-              public dialog: MatDialog) {}
+              public dialog: MatDialog) {
+  }
 
   ngOnInit() {
-    if (this.adapter.name == null) this.adapter.name = "";
-      this.isDataSetDescription = this.connectService.isDataSetDescription(this.adapter);
-      this.isDataStreamDescription = this.connectService.isDataStreamDescription(this.adapter);
-      this.isRunningAdapter = (this.adapter.id != undefined && !(this.adapter as any).isTemplate);
-      this.adapterLabel = this.adapter.name.split(' ').join('_');
-      this.className = this.getClassName();
+    if (this.adapter.name == null) {
+      this.adapter.name = '';
+    }
+    this.isDataSetDescription = this.connectService.isDataSetDescription(this.adapter);
+    this.isDataStreamDescription = this.connectService.isDataStreamDescription(this.adapter);
+    this.isRunningAdapter = (this.adapter.elementId !== undefined && !(this.adapter as any).isTemplate);
+    this.adapterLabel = this.adapter.name.split(' ').join('_');
+    this.className = this.getClassName();
   }
 
   isGenericDescription(): boolean {
@@ -72,36 +75,36 @@ export class AdapterDescriptionComponent {
   }
 
   shareAdapterTemplate(adapter: AdapterDescription): void {
-    this.dialogService.open(AdapterExportDialog,{
+    this.dialogService.open(AdapterExportDialog, {
       panelType: PanelType.STANDARD_PANEL,
-      title: "Export adapter template",
-      width: "50vw",
+      title: 'Export adapter template',
+      width: '50vw',
       data: {
-        "adapter": adapter
+        'adapter': adapter
       }
     });
   }
 
   deleteAdapterTemplate(adapter: AdapterDescription): void {
-      this.adapterToDelete = adapter.id;
-      this.dataMarketplaceService.deleteAdapterTemplate(adapter).subscribe(res => {
-          this.adapterToDelete = undefined;
-          this.updateAdapterEmitter.emit();
-          this.deleting = false;
-      });
+    this.adapterToDelete = adapter.elementId;
+    this.dataMarketplaceService.deleteAdapterTemplate(adapter).subscribe(res => {
+      this.adapterToDelete = undefined;
+      this.updateAdapterEmitter.emit();
+      this.deleting = false;
+    });
   }
 
   createTemplate(adapter: AdapterDescription): void {
-      this.createTemplateEmitter.emit(adapter);
+    this.createTemplateEmitter.emit(adapter);
   }
 
   getClassName() {
-    let className = this.isRunningAdapter ? "adapter-box" : "adapter-description-box";
+    let className = this.isRunningAdapter ? 'adapter-box' : 'adapter-description-box';
 
     if (this.isDataSetDescription) {
-      className += " adapter-box-set";
+      className += ' adapter-box-set';
     } else {
-      className +=" adapter-box-stream";
+      className += ' adapter-box-stream';
     }
 
     return className;
@@ -112,11 +115,11 @@ export class AdapterDescriptionComponent {
   }
 
   getIconUrl() {
-    //TODO Use "this.adapter.includesAssets" if boolean demoralizing is working
+    // TODO Use "this.adapter.includesAssets" if boolean demoralizing is working
     if (this.adapter.includedAssets.length > 0) {
-      return this.dataMarketplaceService.getAssetUrl(this.adapter.appId) + "/icon";
+      return this.dataMarketplaceService.getAssetUrl(this.adapter.appId) + '/icon';
     } else {
-      return 'assets/img/connect/' + this.adapter.iconUrl;
+      return `assets/img/connect/${this.adapter.iconUrl}`;
     }
   }
 }
diff --git a/ui/src/app/connect/components/data-marketplace/data-marketplace.component.ts b/ui/src/app/connect/components/data-marketplace/data-marketplace.component.ts
index f11f6ca..2d0a49e 100644
--- a/ui/src/app/connect/components/data-marketplace/data-marketplace.component.ts
+++ b/ui/src/app/connect/components/data-marketplace/data-marketplace.component.ts
@@ -16,230 +16,233 @@
  *
  */
 
-import {Component, EventEmitter, OnInit, Output} from '@angular/core';
-import {DataMarketplaceService} from '../../services/data-marketplace.service';
-import {ShepherdService} from "../../../services/tour/shepherd.service";
-import {ConnectService} from '../../services/connect.service';
-import {FilterPipe} from '../../filter/filter.pipe';
-import {AdapterUploadDialog} from '../../dialog/adapter-upload/adapter-upload-dialog.component';
+import { Component, EventEmitter, OnInit, Output } from '@angular/core';
+import { DataMarketplaceService } from '../../services/data-marketplace.service';
+import { ShepherdService } from '../../../services/tour/shepherd.service';
+import { ConnectService } from '../../services/connect.service';
+import { FilterPipe } from '../../filter/filter.pipe';
+import { AdapterUploadDialog } from '../../dialog/adapter-upload/adapter-upload-dialog.component';
 import {
-    AdapterDescription,
-    AdapterDescriptionUnion,
-    AdapterSetDescription,
-    AdapterStreamDescription,
-    EventSchema,
-    SpDataSet,
-    SpDataStream
-} from "../../../core-model/gen/streampipes-model";
-import {PanelType} from "../../../core-ui/dialog/base-dialog/base-dialog.model";
-import {DialogService} from "../../../core-ui/dialog/base-dialog/base-dialog.service";
+  AdapterDescription,
+  AdapterDescriptionUnion,
+  AdapterSetDescription,
+  AdapterStreamDescription,
+  EventSchema,
+  SpDataSet,
+  SpDataStream
+} from '../../../core-model/gen/streampipes-model';
+import { PanelType } from '../../../core-ui/dialog/base-dialog/base-dialog.model';
+import { DialogService } from '../../../core-ui/dialog/base-dialog/base-dialog.service';
 
 @Component({
-    selector: 'sp-data-marketplace',
-    templateUrl: './data-marketplace.component.html',
-    styleUrls: ['./data-marketplace.component.scss']
+  selector: 'sp-data-marketplace',
+  templateUrl: './data-marketplace.component.html',
+  styleUrls: ['./data-marketplace.component.scss']
 })
 export class DataMarketplaceComponent implements OnInit {
-    adapterDescriptions: AdapterDescriptionUnion[];
-    newAdapterFromDescription: AdapterDescriptionUnion;
-    filteredAdapterDescriptions: AdapterDescriptionUnion[];
-    adapters: AdapterDescriptionUnion[];
-    filteredAdapters: AdapterDescriptionUnion[];
-    visibleAdapters: AdapterDescriptionUnion[];
-
-    @Output()
-    selectAdapterEmitter: EventEmitter<AdapterDescriptionUnion> = new EventEmitter<AdapterDescriptionUnion>();
-
-    selectedIndex: number = 0;
-    filterTerm: string = "";
-    pipe: FilterPipe = new FilterPipe();
-    adapterTypes: string[] = ['All types', 'Data Set', 'Data Stream'];
-    selectedType: string = "All types";
-
-    adapterCategories: any;
-    selectedCategory: any = "All";
-
-    adaptersLoading: boolean = true;
-    adapterLoadingError: boolean = false;
-
-    constructor(private dataMarketplaceService: DataMarketplaceService,
-                private ShepherdService: ShepherdService,
-                private connectService: ConnectService,
-                private dialogService: DialogService) {
-    }
-
-    ngOnInit() {
-        this.updateDescriptionsAndRunningAdatpers();
-        this.loadAvailableTypeCategories();
-        this.visibleAdapters = this.adapters;
-    }
-
-    loadAvailableTypeCategories() {
-        this.dataMarketplaceService.getAdapterCategories().subscribe(res => {
-            this.adapterCategories = res;
-            this.adapterCategories.unshift({label: "All categories", description: "", code: "All"});
-        });
-    }
-
-    updateDescriptionsAndRunningAdatpers() {
-        this.getAdapterDescriptions();
-        this.getAdaptersRunning();
-    }
-
-    getAdapterDescriptions(): void {
-        this.adaptersLoading = true;
-        this.adapterDescriptions = [];
-
-        this.dataMarketplaceService
-            .getGenericAndSpecificAdapterDescriptions()
-            .subscribe((allAdapters) => {
-                this.adapterDescriptions = this.adapterDescriptions.concat(allAdapters[0]);
-                this.adapterDescriptions = this.adapterDescriptions.concat(allAdapters[1]);
-                this.adapterDescriptions
-                    .sort((a, b) => a.name.localeCompare(b.name));
-                this.filteredAdapterDescriptions = this.adapterDescriptions;
-                this.adaptersLoading = false;
-            }, error => {
-                console.log(error);
-                this.adaptersLoading = false;
-                this.adapterLoadingError = true;
-            });
-
-        this.dataMarketplaceService.getAdapterTemplates().subscribe(adapterTemplates => {
-            adapterTemplates.forEach(function (adapterTemplate) {
-                (adapterTemplate as any).isTemplate = true;
-            });
-
-            this.adapterDescriptions = this.adapterDescriptions.concat(adapterTemplates);
-            this.adapterDescriptions
-                .sort((a, b) => a.name.localeCompare(b.name));
-            this.filteredAdapterDescriptions = this.adapterDescriptions;
-        });
-    }
-
-    getAdaptersRunning(): void {
-        this.dataMarketplaceService.getAdapters().subscribe(adapters => {
-            this.adapters = adapters;
-            this.filteredAdapters = this.adapters;
-        });
-    }
-
-    selectedIndexChange(index: number) {
-        this.selectedIndex = index;
-    }
-
-    startAdapterTutorial() {
-        this.ShepherdService.startAdapterTour();
-    }
-
-    startAdapterTutorial2() {
-        this.ShepherdService.startAdapterTour2();
-    }
-
-    startAdapterTutorial3() {
-        this.ShepherdService.startAdapterTour3();
-    }
-
-    selectAdapter(adapterDescription: AdapterDescriptionUnion) {
-        this.newAdapterFromDescription = this.dataMarketplaceService.cloneAdapterDescription(adapterDescription);
-        (this.newAdapterFromDescription as any).templateTitle = this.newAdapterFromDescription.name;
-        this.newAdapterFromDescription.name = "";
-        this.newAdapterFromDescription.description = "";
-        if (this.newAdapterFromDescription instanceof AdapterStreamDescription) {
-
-            // Create new SpDataStream and EventSchema if not already exists, e.g. in adapter template
-            if (this.newAdapterFromDescription.dataStream == undefined) {
-                this.newAdapterFromDescription.dataStream = new SpDataStream();
-                this.newAdapterFromDescription.dataStream["@class"] = "org.apache.streampipes.model.SpDataStream";
-                this.newAdapterFromDescription.dataStream.eventSchema = new EventSchema();
-                this.newAdapterFromDescription.dataStream.eventSchema["@class"] = "org.apache.streampipes.model.schema.EventSchema";
-            }
-        }
-        if (this.newAdapterFromDescription instanceof AdapterSetDescription) {
-
-            // Create new SpDataSet and EventSchema if not already exists, e.g. in adapter template
-            if (this.newAdapterFromDescription.dataSet == undefined || this.newAdapterFromDescription.dataSet["@class"] == undefined    ) {
-                this.newAdapterFromDescription.dataSet = new SpDataSet();
-                this.newAdapterFromDescription.dataSet["@class"] = "org.apache.streampipes.model.SpDataSet";
-                this.newAdapterFromDescription.dataSet.eventSchema = new EventSchema();
-                this.newAdapterFromDescription.dataSet.eventSchema["@class"] = "org.apache.streampipes.model.schema.EventSchema";
-            }
-        }
-        this.ShepherdService.trigger("select-adapter");
-    }
-
-    templateFromRunningAdapter(adapter: AdapterDescriptionUnion) {
-        adapter.id = undefined;
-        adapter._rev = undefined;
-        this.selectedIndexChange(0);
-        this.selectAdapter(adapter);
-
-    }
-
-    removeSelection() {
-        this.newAdapterFromDescription = undefined;
-    }
-
-    updateFilterTerm(inputValue) {
-        this.filterTerm = inputValue;
-    }
-
-    downloadAllAdapterTemplates() {
-        var adapterTemplates: AdapterDescription[] = [];
-        this.adapterDescriptions.forEach(function (adapterTemplate) {
-            if ((adapterTemplate as any).isTemplate) {
-                delete adapterTemplate['userName'];
-                adapterTemplates.push(adapterTemplate);
-            }
-        });
-
-        let data = "data:text/json;charset=utf-8," +encodeURIComponent(JSON.stringify(adapterTemplates, null, 2));
-        let downloader = document.createElement('a');
-
-        downloader.setAttribute('href', data);
-        downloader.setAttribute('download', 'all-adapter-templates.json');
-        downloader.click();
-    }
-
-    uploadAdapterTemplates() {
-        let dialogRef = this.dialogService.open(AdapterUploadDialog,{
-            panelType: PanelType.STANDARD_PANEL,
-            title: "Upload adapter templates",
-            width: "50vw"
-        });
-
-        dialogRef.afterClosed().subscribe(result => {
-            this.getAdapterDescriptions()
-        });
-    }
-
-    filterAdapter(event) {
-        let filteredAdapterTypes = this.filterAdapterType(this.adapterDescriptions);
-        let filteredAdapterTemplateTypes = this.filterAdapterType(this.adapters);
-
-        let filteredAdapterCategories = this.filterAdapterCategory(filteredAdapterTypes);
-        let filteredAdapterTemplateCategories = this.filterAdapterCategory(filteredAdapterTemplateTypes);
-
-        this.filteredAdapterDescriptions = filteredAdapterCategories;
-        this.filteredAdapters = filteredAdapterTemplateCategories;
-    }
-
-    filterAdapterCategory(currentElements: AdapterDescriptionUnion[]): AdapterDescriptionUnion[] {
-        if (this.selectedCategory == this.adapterCategories[0].code) {
-            return currentElements;
-        } else {
-            return currentElements.filter(adapterDescription => adapterDescription.category.indexOf(this.selectedCategory) != -1);
-        }
-    }
-
-    filterAdapterType(currentElements: AdapterDescriptionUnion[]): AdapterDescriptionUnion[] {
-        if (this.selectedType == this.adapterTypes[0]) {
-            return currentElements;
-        } else if (this.selectedType == this.adapterTypes[1]) {
-            return currentElements.filter(adapterDescription => this.connectService.isDataSetDescription(adapterDescription));
-        } else if (this.selectedType == this.adapterTypes[2]) {
-            return currentElements.filter(adapterDescription => !this.connectService.isDataSetDescription(adapterDescription));
-        }
-    }
+  adapterDescriptions: AdapterDescriptionUnion[];
+  newAdapterFromDescription: AdapterDescriptionUnion;
+  filteredAdapterDescriptions: AdapterDescriptionUnion[];
+  adapters: AdapterDescriptionUnion[];
+  filteredAdapters: AdapterDescriptionUnion[];
+  visibleAdapters: AdapterDescriptionUnion[];
+
+  @Output()
+  selectAdapterEmitter: EventEmitter<AdapterDescriptionUnion> = new EventEmitter<AdapterDescriptionUnion>();
+
+  selectedIndex = 0;
+  filterTerm = '';
+  pipe: FilterPipe = new FilterPipe();
+  adapterTypes: string[] = ['All types', 'Data Set', 'Data Stream'];
+  selectedType = 'All types';
+
+  adapterCategories: any;
+  selectedCategory: any = 'All';
+
+  adaptersLoading = true;
+  adapterLoadingError = false;
+
+  constructor(private dataMarketplaceService: DataMarketplaceService,
+              private shepherdService: ShepherdService,
+              private connectService: ConnectService,
+              private dialogService: DialogService) {
+  }
+
+  ngOnInit() {
+    this.updateDescriptionsAndRunningAdatpers();
+    this.loadAvailableTypeCategories();
+    this.visibleAdapters = this.adapters;
+  }
+
+  loadAvailableTypeCategories() {
+    this.dataMarketplaceService.getAdapterCategories().subscribe(res => {
+      this.adapterCategories = res;
+      this.adapterCategories.unshift({ label: 'All categories', description: '', code: 'All' });
+    });
+  }
+
+  updateDescriptionsAndRunningAdatpers() {
+    this.getAdapterDescriptions();
+    this.getAdaptersRunning();
+  }
+
+  getAdapterDescriptions(): void {
+    this.adaptersLoading = true;
+    this.adapterDescriptions = [];
+
+    this.dataMarketplaceService
+      .getGenericAndSpecificAdapterDescriptions()
+      .subscribe((allAdapters) => {
+        this.adapterDescriptions = this.adapterDescriptions.concat(allAdapters[0]);
+        this.adapterDescriptions = this.adapterDescriptions.concat(allAdapters[1]);
+        this.adapterDescriptions
+          .sort((a, b) => a.name.localeCompare(b.name));
+        this.filteredAdapterDescriptions = this.adapterDescriptions;
+        this.adaptersLoading = false;
+      }, error => {
+        console.log(error);
+        this.adaptersLoading = false;
+        this.adapterLoadingError = true;
+      });
+
+    this.dataMarketplaceService.getAdapterTemplates().subscribe(adapterTemplates => {
+      adapterTemplates.forEach((adapterTemplate) => {
+        (adapterTemplate as any).isTemplate = true;
+      });
+
+      this.adapterDescriptions = this.adapterDescriptions.concat(adapterTemplates);
+      this.adapterDescriptions
+        .sort((a, b) => a.name.localeCompare(b.name));
+      this.filteredAdapterDescriptions = this.adapterDescriptions;
+    });
+  }
+
+  getAdaptersRunning(): void {
+    this.dataMarketplaceService.getAdapters().subscribe(adapters => {
+      this.adapters = adapters;
+      this.filteredAdapters = this.adapters;
+    });
+  }
+
+  selectedIndexChange(index: number) {
+    this.selectedIndex = index;
+  }
+
+  startAdapterTutorial() {
+    this.shepherdService.startAdapterTour();
+  }
+
+  startAdapterTutorial2() {
+    this.shepherdService.startAdapterTour2();
+  }
+
+  startAdapterTutorial3() {
+    this.shepherdService.startAdapterTour3();
+  }
+
+  selectAdapter(adapterDescription: AdapterDescriptionUnion) {
+    this.newAdapterFromDescription = this.dataMarketplaceService.cloneAdapterDescription(adapterDescription);
+    (this.newAdapterFromDescription as any).templateTitle = this.newAdapterFromDescription.name;
+    this.newAdapterFromDescription.name = '';
+    this.newAdapterFromDescription.description = '';
+    if (this.newAdapterFromDescription instanceof AdapterStreamDescription) {
+
+      // Create new SpDataStream and EventSchema if not already exists, e.g. in adapter template
+      // tslint:disable-next-line:triple-equals
+      if (this.newAdapterFromDescription.dataStream == undefined) {
+        this.newAdapterFromDescription.dataStream = new SpDataStream();
+        this.newAdapterFromDescription.dataStream['@class'] = 'org.apache.streampipes.model.SpDataStream';
+        this.newAdapterFromDescription.dataStream.eventSchema = new EventSchema();
+        this.newAdapterFromDescription.dataStream.eventSchema['@class'] = 'org.apache.streampipes.model.schema.EventSchema';
+      }
+    }
+    if (this.newAdapterFromDescription instanceof AdapterSetDescription) {
+
+      // Create new SpDataSet and EventSchema if not already exists, e.g. in adapter template
+      // tslint:disable-next-line:triple-equals
+      if (this.newAdapterFromDescription.dataSet == undefined ||
+        this.newAdapterFromDescription.dataSet['@class'] === undefined) {
+        this.newAdapterFromDescription.dataSet = new SpDataSet();
+        this.newAdapterFromDescription.dataSet['@class'] = 'org.apache.streampipes.model.SpDataSet';
+        this.newAdapterFromDescription.dataSet.eventSchema = new EventSchema();
+        this.newAdapterFromDescription.dataSet.eventSchema['@class'] = 'org.apache.streampipes.model.schema.EventSchema';
+      }
+    }
+    this.shepherdService.trigger('select-adapter');
+  }
+
+  templateFromRunningAdapter(adapter: AdapterDescriptionUnion) {
+    adapter.elementId = undefined;
+    adapter._rev = undefined;
+    this.selectedIndexChange(0);
+    this.selectAdapter(adapter);
+
+  }
+
+  removeSelection() {
+    this.newAdapterFromDescription = undefined;
+  }
+
+  updateFilterTerm(inputValue) {
+    this.filterTerm = inputValue;
+  }
+
+  downloadAllAdapterTemplates() {
+    const adapterTemplates: AdapterDescription[] = [];
+    this.adapterDescriptions.forEach((adapterTemplate) => {
+      if ((adapterTemplate as any).isTemplate) {
+        delete adapterTemplate['userName'];
+        adapterTemplates.push(adapterTemplate);
+      }
+    });
+
+    const data = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(adapterTemplates, null, 2));
+    const downloader = document.createElement('a');
+
+    downloader.setAttribute('href', data);
+    downloader.setAttribute('download', 'all-adapter-templates.json');
+    downloader.click();
+  }
+
+  uploadAdapterTemplates() {
+    const dialogRef = this.dialogService.open(AdapterUploadDialog, {
+      panelType: PanelType.STANDARD_PANEL,
+      title: 'Upload adapter templates',
+      width: '50vw'
+    });
+
+    dialogRef.afterClosed().subscribe(result => {
+      this.getAdapterDescriptions();
+    });
+  }
+
+  filterAdapter(event) {
+    const filteredAdapterTypes = this.filterAdapterType(this.adapterDescriptions);
+    const filteredAdapterTemplateTypes = this.filterAdapterType(this.adapters);
+
+    const filteredAdapterCategories = this.filterAdapterCategory(filteredAdapterTypes);
+    const filteredAdapterTemplateCategories = this.filterAdapterCategory(filteredAdapterTemplateTypes);
+
+    this.filteredAdapterDescriptions = filteredAdapterCategories;
+    this.filteredAdapters = filteredAdapterTemplateCategories;
+  }
+
+  filterAdapterCategory(currentElements: AdapterDescriptionUnion[]): AdapterDescriptionUnion[] {
+    if (this.selectedCategory === this.adapterCategories[0].code) {
+      return currentElements;
+    } else {
+      return currentElements.filter(adapterDescription => adapterDescription.category.indexOf(this.selectedCategory) != -1);
+    }
+  }
+
+  filterAdapterType(currentElements: AdapterDescriptionUnion[]): AdapterDescriptionUnion[] {
+    if (this.selectedType === this.adapterTypes[0]) {
+      return currentElements;
+    } else if (this.selectedType === this.adapterTypes[1]) {
+      return currentElements.filter(adapterDescription => this.connectService.isDataSetDescription(adapterDescription));
+    } else if (this.selectedType === this.adapterTypes[2]) {
+      return currentElements.filter(adapterDescription => !this.connectService.isDataSetDescription(adapterDescription));
+    }
+  }
 
 }
diff --git a/ui/src/app/connect/services/data-marketplace.service.ts b/ui/src/app/connect/services/data-marketplace.service.ts
index 8df76ab..9f1a9b7 100644
--- a/ui/src/app/connect/services/data-marketplace.service.ts
+++ b/ui/src/app/connect/services/data-marketplace.service.ts
@@ -27,7 +27,8 @@ import {
   AdapterDescriptionUnion,
   EventSchema,
   GenericAdapterSetDescription,
-  GenericAdapterStreamDescription, Message,
+  GenericAdapterStreamDescription,
+  Message,
   ProtocolDescription,
   ProtocolDescriptionList,
   SpDataSet,
@@ -42,19 +43,21 @@ import { PlatformServicesCommons } from '../../platform-services/apis/commons.se
 export class DataMarketplaceService {
 
   constructor(
-      private http: HttpClient,
-      private authStatusService: AuthStatusService,
-      private connectService: ConnectService,
-      private platformServicesCommons: PlatformServicesCommons) {
+    private http: HttpClient,
+    private authStatusService: AuthStatusService,
+    private connectService: ConnectService,
+    private platformServicesCommons: PlatformServicesCommons) {
   }
 
   get connectPath() {
-    return this.platformServicesCommons.apiBasePath() + '/connect';
+    return `${this.platformServicesCommons.apiBasePath()}/connect`;
   }
 
   getAdapterDescriptions(): Observable<AdapterDescriptionUnion[]> {
     return this.requestAdapterDescriptions('/master/description/adapters').pipe(map(response => {
-      return (response as any[]).map(resp => AdapterDescription.fromDataUnion(resp)).filter(ad => this.connectService.isSpecificDescription(ad));
+      return (response as any[])
+        .map(resp => AdapterDescription.fromDataUnion(resp))
+        .filter(ad => this.connectService.isSpecificDescription(ad));
     }));
   }
 
@@ -68,101 +71,98 @@ export class DataMarketplaceService {
 
   requestAdapterDescriptions(path: string): Observable<AdapterDescriptionUnion[]> {
     return this.http
-        .get(
-            this.connectPath +
-            path
-        )
-        .pipe(map(response => {
-          const adapterDescriptionList: AdapterDescriptionList = AdapterDescriptionList.fromData(response as AdapterDescriptionList);
-          return adapterDescriptionList.list;
-        }));
+      .get(
+        this.connectPath +
+        path
+      )
+      .pipe(map(response => {
+        const adapterDescriptionList: AdapterDescriptionList = AdapterDescriptionList.fromData(response as AdapterDescriptionList);
+        return adapterDescriptionList.list;
+      }));
   }
 
   stopAdapter(adapter: AdapterDescriptionUnion): Observable<Message> {
     return this.http.post(this.adapterMasterUrl
-        + adapter.id
-        + '/stop', {})
-        .pipe(map(response => Message.fromData(response as any)));
+      + adapter.elementId
+      + '/stop', {})
+      .pipe(map(response => Message.fromData(response as any)));
   }
 
   startAdapter(adapter: AdapterDescriptionUnion): Observable<Message> {
     return this.http.post(this.adapterMasterUrl
-        + adapter.id
-        + '/start', {})
-        .pipe(map(response => Message.fromData(response as any)));
+      + adapter.elementId
+      + '/start', {})
+      .pipe(map(response => Message.fromData(response as any)));
   }
 
   get adapterMasterUrl() {
-    return this.connectPath
-        + '/master/adapters/';
+    return `${this.connectPath}/master/adapters/`;
   }
 
-  deleteAdapter(adapter: AdapterDescription): Observable<Object> {
+  deleteAdapter(adapter: AdapterDescription): Observable<any> {
     return this.deleteRequest(adapter, '/master/adapters/');
   }
 
-  deleteAdapterTemplate(adapter: AdapterDescription): Observable<Object> {
+  deleteAdapterTemplate(adapter: AdapterDescription): Observable<any> {
     return this.deleteRequest(adapter, '/master/adapters/template/');
   }
 
-  getAdapterCategories(): Observable<Object> {
+  getAdapterCategories(): Observable<any> {
     return this.http.get(
-        this.baseUrl +
-        '/api/v2/categories/adapter');
+      `${this.baseUrl}/api/v2/categories/adapter`);
   }
 
   private deleteRequest(adapter: AdapterDescription, url: string) {
     return this.http.delete(
-        this.connectPath +
-        url +
-        adapter.id
+      this.connectPath +
+      url +
+      adapter.elementId
     );
   }
 
   getProtocols(): Observable<AdapterDescriptionUnion[]> {
     return this.http
-        .get(
-            this.connectPath +
-            '/master/description/protocols'
-        )
-        .pipe(map(response => {
-          const adapterDescriptions: AdapterDescriptionUnion[] = [];
-          const protocols: ProtocolDescription[] = (ProtocolDescriptionList.fromData(response as ProtocolDescriptionList)).list;
-
-          for (const protocol of protocols) {
-            let newAdapterDescription: AdapterDescriptionUnion;
-            if (protocol.sourceType === 'SET') {
-              newAdapterDescription = new GenericAdapterSetDescription();
-              newAdapterDescription['@class'] = 'org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription';
-              newAdapterDescription.dataSet = new SpDataSet();
-              newAdapterDescription.dataSet.eventSchema = new EventSchema();
-            } else if (protocol.sourceType === 'STREAM') {
-              newAdapterDescription = new GenericAdapterStreamDescription();
-              newAdapterDescription['@class'] = 'org.apache.streampipes.model.connect.adapter.GenericAdapterStreamDescription';
-              newAdapterDescription.dataStream = new SpDataStream();
-              newAdapterDescription.dataStream.eventSchema = new EventSchema();
-            }
-            newAdapterDescription.appId = protocol.appId;
-            newAdapterDescription.name = protocol.name;
-            newAdapterDescription.description = protocol.description;
-            newAdapterDescription.iconUrl = protocol.iconUrl;
-            newAdapterDescription.uri = newAdapterDescription.elementId;
-            newAdapterDescription.category = protocol.category;
-            newAdapterDescription.includedAssets = protocol.includedAssets;
-            newAdapterDescription.includesAssets = protocol.includesAssets;
-            newAdapterDescription.includedLocales = protocol.includedLocales;
-            newAdapterDescription.includesLocales = protocol.includesLocales;
-
-            if (
-                newAdapterDescription instanceof GenericAdapterSetDescription ||
-                newAdapterDescription instanceof GenericAdapterStreamDescription
-            ) {
-              newAdapterDescription.protocolDescription = protocol;
-            }
-            adapterDescriptions.push(newAdapterDescription);
+      .get(
+        `${this.connectPath}/master/description/protocols`
+      )
+      .pipe(map(response => {
+        const adapterDescriptions: AdapterDescriptionUnion[] = [];
+        const protocols: ProtocolDescription[] = (ProtocolDescriptionList.fromData(response as ProtocolDescriptionList)).list;
+
+        for (const protocol of protocols) {
+          let newAdapterDescription: AdapterDescriptionUnion;
+          if (protocol.sourceType === 'SET') {
+            newAdapterDescription = new GenericAdapterSetDescription();
+            newAdapterDescription['@class'] = 'org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription';
+            newAdapterDescription.dataSet = new SpDataSet();
+            newAdapterDescription.dataSet.eventSchema = new EventSchema();
+          } else if (protocol.sourceType === 'STREAM') {
+            newAdapterDescription = new GenericAdapterStreamDescription();
+            newAdapterDescription['@class'] = 'org.apache.streampipes.model.connect.adapter.GenericAdapterStreamDescription';
+            newAdapterDescription.dataStream = new SpDataStream();
+            newAdapterDescription.dataStream.eventSchema = new EventSchema();
+          }
+          newAdapterDescription.appId = protocol.appId;
+          newAdapterDescription.name = protocol.name;
+          newAdapterDescription.description = protocol.description;
+          newAdapterDescription.iconUrl = protocol.iconUrl;
+          newAdapterDescription.uri = newAdapterDescription.elementId;
+          newAdapterDescription.category = protocol.category;
+          newAdapterDescription.includedAssets = protocol.includedAssets;
+          newAdapterDescription.includesAssets = protocol.includesAssets;
+          newAdapterDescription.includedLocales = protocol.includedLocales;
+          newAdapterDescription.includesLocales = protocol.includesLocales;
+
+          if (
+            newAdapterDescription instanceof GenericAdapterSetDescription ||
+            newAdapterDescription instanceof GenericAdapterStreamDescription
+          ) {
+            newAdapterDescription.protocolDescription = protocol;
           }
-          return adapterDescriptions;
-        }));
+          adapterDescriptions.push(newAdapterDescription);
+        }
+        return adapterDescriptions;
+      }));
   }
 
   // sortStaticProperties(sp: StaticProperty) {
@@ -207,7 +207,7 @@ export class DataMarketplaceService {
   }
 
   getAssetUrl(appId) {
-    return this.connectPath + '/master/description/' + appId + '/assets';
+    return `${this.connectPath}/master/description/${appId}/assets`;
   }
 
   private get baseUrl() {
diff --git a/ui/src/app/core-model/gen/streampipes-model.ts b/ui/src/app/core-model/gen/streampipes-model.ts
index 4579813..b7093ff 100644
--- a/ui/src/app/core-model/gen/streampipes-model.ts
+++ b/ui/src/app/core-model/gen/streampipes-model.ts
@@ -19,7 +19,7 @@
 /* tslint:disable */
 /* eslint-disable */
 // @ts-nocheck
-// Generated using typescript-generator version 2.27.744 on 2021-09-29 21:19:14.
+// Generated using typescript-generator version 2.27.744 on 2021-10-05 11:54:22.
 
 export class AbstractStreamPipesEntity {
   '@class': 'org.apache.streampipes.model.base.AbstractStreamPipesEntity' | 'org.apache.streampipes.model.base.NamedStreamPipesEntity' | 'org.apache.streampipes.model.connect.adapter.AdapterDescription' | 'org.apache.streampipes.model.connect.adapter.AdapterSetDescription' | 'org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription' | 'org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription' | 'org.apache.streampipes.model.connect.adapter.AdapterStream [...]
@@ -161,7 +161,6 @@ export class NamedStreamPipesEntity extends AbstractStreamPipesEntity {
 
 export class AdapterDescription extends NamedStreamPipesEntity {
   '@class': 'org.apache.streampipes.model.connect.adapter.AdapterDescription' | 'org.apache.streampipes.model.connect.adapter.AdapterSetDescription' | 'org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription' | 'org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription' | 'org.apache.streampipes.model.connect.adapter.AdapterStreamDescription' | 'org.apache.streampipes.model.connect.adapter.GenericAdapterStreamDescription' | 'org.apache.streampipes.model [...]
-  adapterId: string;
   adapterType: string;
   category: string[];
   config: StaticPropertyUnion[];
@@ -169,7 +168,6 @@ export class AdapterDescription extends NamedStreamPipesEntity {
   createdAt: number;
   eventGrounding: EventGrounding;
   icon: string;
-  id: string;
   rules: TransformationRuleDescriptionUnion[];
   schemaRules: any[];
   selectedEndpointUrl: string;
@@ -183,7 +181,6 @@ export class AdapterDescription extends NamedStreamPipesEntity {
     }
     const instance = target || new AdapterDescription();
     super.fromData(data, instance);
-    instance.adapterId = data.adapterId;
     instance.userName = data.userName;
     instance.eventGrounding = EventGrounding.fromData(data.eventGrounding);
     instance.adapterType = data.adapterType;
@@ -194,7 +191,6 @@ export class AdapterDescription extends NamedStreamPipesEntity {
     instance.createdAt = data.createdAt;
     instance.selectedEndpointUrl = data.selectedEndpointUrl;
     instance.correspondingServiceGroup = data.correspondingServiceGroup;
-    instance.id = data.id;
     instance.valueRules = __getCopyArrayFn(__identity<any>())(data.valueRules);
     instance.streamRules = __getCopyArrayFn(__identity<any>())(data.streamRules);
     instance.schemaRules = __getCopyArrayFn(__identity<any>())(data.schemaRules);
@@ -2865,8 +2861,8 @@ export class SpDataSet extends SpDataStream {
     instance.datasetInvocationId = data.datasetInvocationId;
     instance.correspondingPipeline = data.correspondingPipeline;
     instance.selectedEndpointUrl = data.selectedEndpointUrl;
-    instance.actualTopicName = data.actualTopicName;
     instance.brokerHostname = data.brokerHostname;
+    instance.actualTopicName = data.actualTopicName;
     return instance;
   }
 }