You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2021/10/17 20:51:33 UTC

[incubator-streampipes] 01/02: Merge branch 'dev' into STREAMPIPES-426

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

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

commit 209e3c4490837770de9a3ed12158fc59a9281aa0
Merge: c81b92d d3a8840
Author: Dominik Riemer <ri...@fzi.de>
AuthorDate: Wed Oct 13 10:17:34 2021 +0200

    Merge branch 'dev' into STREAMPIPES-426

 .idea/runConfigurations/backend.xml                |   1 +
 .idea/runConfigurations/connect_adapters.xml       |   1 +
 .idea/runConfigurations/connect_adapters_iiot.xml  |  15 +
 .../backend/StreamPipesResourceConfig.java         |   1 -
 .../master/health/AdapterHealthCheck.java          | 129 +++++++
 .../master/management/AdapterMasterManagement.java | 207 +++++++-----
 .../AdapterTemplateMasterManagement.java           | 106 ------
 .../master/management/DescriptionManagement.java   |  56 +---
 .../master/management/SourcesManagement.java       | 159 +++------
 .../master/management/UnitMasterManagement.java    |   7 +-
 .../management/WorkerAdministrationManagement.java |  73 ++--
 .../master/management/WorkerRestClient.java        |  78 +++--
 .../master/management/WorkerUrlProvider.java       |  61 +---
 .../master/util/AdapterEncryptionService.java      |   7 +-
 .../connect/container/master/util/WorkerPaths.java |  36 +-
 .../master/health/AdapterHealthCheckTest.java      |  87 +++++
 .../management/AdapterMasterManagementTest.java    |  16 +-
 .../AdapterTemplateMasterManagementTest.java       |  58 ----
 .../management/DescriptionManagementTest.java      |  10 +-
 .../master/management/SourcesManagementTest.java   |  78 +----
 .../master/management/WorkerRestClientTest.java    |  10 +-
 .../init/AdapterServiceResourceProvider.java       |   7 +-
 .../worker/init/AdapterWorkerContainer.java        |  64 ----
 .../init/ConnectWorkerDescriptionProvider.java     |  75 ++++-
 .../init/ConnectWorkerRegistrationService.java     |   7 +-
 .../worker/management/AdapterWorkerManagement.java |  78 +----
 .../worker/management/GuessManagement.java         |   8 -
 .../management/HttpServerAdapterManagement.java    |   3 +-
 .../worker/management/MasterRestClient.java        |   8 +-
 ...pterResource.java => AdapterAssetResource.java} |  28 +-
 ...kerResource.java => AdapterWorkerResource.java} |  30 +-
 .../container/worker/rest/GuessResource.java       |   5 +-
 .../container/worker/rest/ProtocolResource.java    |  75 -----
 .../container/worker/rest/WelcomePageWorker.java   | 108 ------
 .../container/worker/utils/AdapterUtils.java       |  28 +-
 .../management/AdapterWorkerManagementTest.java    |  26 +-
 .../container/worker/utils/AdapterUtilsTest.java   |  60 ----
 .../connect/container/worker/utils/Utils.java      |   6 +-
 .../connect/RunningAdapterInstances.java           |  21 +-
 .../adapter/guess/PropertyGuessResults.java        |  40 ---
 .../connect/adapter/guess/PropertyGuesses.java     |  54 ---
 .../connect/adapter/guess/SchemaGuesser.java       | 101 +-----
 .../model/generic/GenericDataSetAdapter.java       |   4 +-
 .../model/generic/GenericDataStreamAdapter.java    |   4 +-
 .../connect/adapter/guess/SchemaGuesserTest.java   | 132 --------
 .../extensions/ExtensionsModelSubmitter.java       |   2 +-
 .../standalone/init/StandaloneModelSubmitter.java  |   1 +
 .../container/util/ServiceDefinitionUtil.java      |   2 +-
 .../assetdashboard/AssetDashboardConfig.java       |   7 +-
 .../client/assetdashboard/CanvasAttributes.java    |  28 ++
 .../model/client/assetdashboard/CanvasElement.java |   7 +-
 .../org/apache/streampipes/model/SpDataSet.java    |   1 +
 .../org/apache/streampipes/model/SpDataStream.java |   1 +
 .../model/connect/adapter/AdapterDescription.java  |  38 +--
 .../connect/adapter/AdapterDescriptionList.java    |  49 ---
 .../connect/adapter/AdapterSetDescription.java     |  11 +-
 .../connect/adapter/AdapterStreamDescription.java  |   7 +-
 .../adapter/GenericAdapterSetDescription.java      |   1 -
 .../adapter/GenericAdapterStreamDescription.java   |   1 -
 .../model/connect/grounding/FormatDescription.java |  46 ---
 .../connect/grounding/FormatDescriptionList.java   |  63 ----
 .../connect/grounding/ProtocolDescription.java     |   2 -
 .../connect/grounding/ProtocolDescriptionList.java |  58 ----
 .../connect/guess/DomainPropertyProbability.java   |  53 ---
 .../guess/DomainPropertyProbabilityList.java       |  56 ----
 .../model/connect/guess/GuessSchema.java           |  30 +-
 .../connect/worker/ConnectWorkerContainer.java     |  95 ------
 streampipes-pipeline-management/pom.xml            |   2 +-
 .../manager/execution/http/GraphSubmitter.java     |   2 +-
 .../manager/execution/http/PipelineExecutor.java   |   6 +-
 .../manager/setup/CouchDbInstallationStep.java     |   8 +-
 .../apache/streampipes/rest/ResetManagement.java   |   6 +-
 .../streampipes/rest/impl/AssetDashboard.java      |  17 +
 .../streampipes/rest/impl/PipelineTemplate.java    |   2 +-
 .../rest/impl/connect/AdapterResource.java         |  31 +-
 .../rest/impl/connect/AdapterTemplateResource.java |  88 -----
 .../rest/impl/connect/DescriptionResource.java     |  50 +--
 .../rest/impl/connect/GuessResource.java           |   3 +-
 .../impl/connect/RuntimeResolvableResource.java    |   4 +-
 .../rest/impl/connect/SourcesResource.java         |  54 +--
 .../rest/impl/connect/WelcomePageMaster.java       |   4 +-
 .../impl/connect/WorkerAdministrationResource.java |  11 +-
 .../builder/adapter/AdapterDescriptionBuilder.java |   9 +-
 .../sdk/builder/adapter/GuessSchemaBuilder.java    |  10 -
 .../serializers/json/AdapterSerializer.java        |   4 +-
 .../svcdiscovery/api/model/SpServiceTagPrefix.java |   1 -
 .../api/model/SpServiceUrlProvider.java            |   3 +-
 .../storage/api/IAdapterTemplateStorage.java       |  36 --
 .../storage/api/IAssetDashboardStorage.java        |   2 +
 .../api/IConnectWorkerContainerStorage.java        |  35 --
 .../streampipes/storage/api/INoSqlStorage.java     |   4 +-
 .../storage/couchdb/CouchDbStorageManager.java     |   9 +-
 ...mpl.java => AdapterDescriptionStorageImpl.java} |  14 +-
 ...geImpl.java => AdapterInstanceStorageImpl.java} |  10 +-
 .../couchdb/impl/AdapterTemplateStorageImpl.java   |  70 ----
 .../couchdb/impl/AssetDashboardStorageImpl.java    |   5 +
 .../impl/ConnectionWorkerContainerStorageImpl.java |  71 ----
 .../streampipes/storage/couchdb/utils/Utils.java   |   8 +-
 .../support/builder/GenericAdapterBuilder.ts       |  87 ++---
 ui/cypress/support/builder/PipelineBuilder.ts      |   1 +
 ui/cypress/support/utils/AdapterUtils.ts           |   4 +
 ui/cypress/support/utils/StaticPropertyUtils.ts    |  30 +-
 ui/cypress/tests/adapter/InfluxDbAdapter.ts        |  74 ++++
 ui/cypress/tests/adapter/KafkaAdapter.ts           |  72 ++++
 .../{persistInDataLake.ts => MqttAdapter.ts}       |  39 ++-
 .../{persistInDataLake.ts => MySQLDbAdapter.ts}    |  37 +-
 ui/cypress/tests/adapter/machineDataSimulator.ts   |   1 +
 ui/cypress/tests/adapter/persistInDataLake.ts      |  18 +-
 .../tests/pipelineElement/AllPipelineElements.ts   |  32 +-
 ui/nginx_config/default.conf                       |  11 +
 ui/package.json                                    |   2 +-
 .../app-asset-monitoring.component.html            |   6 +-
 .../app-asset-monitoring.component.ts              |  11 +-
 .../app-asset-monitoring.module.ts                 |   4 +-
 .../create-asset/create-asset.component.css        |   5 +-
 .../create-asset/create-asset.component.html       |  46 ++-
 .../create-asset/create-asset.component.ts         | 252 +++++++++-----
 .../dashboard-overview.component.html              |   8 +-
 .../dashboard-overview.component.ts                |  15 +-
 .../components/view-asset/view-asset.component.css |   7 +-
 .../view-asset/view-asset.component.html           |   5 +-
 .../components/view-asset/view-asset.component.ts  |  50 ++-
 .../dialog/add-link/add-link-dialog.component.html |  54 +++
 .../dialog/add-link/add-link-dialog.component.scss |   9 +-
 .../dialog/add-link/add-link-dialog.component.ts   |  58 ++++
 .../add-pipeline-dialog.component.html             |  91 +++--
 ...nent.css => add-pipeline-dialog.component.scss} |  45 ++-
 .../add-pipeline/add-pipeline-dialog.component.ts  |  90 +++--
 .../save-dashboard-dialog.component.css            |  55 ---
 .../save-dashboard-dialog.component.html           |  59 ++--
 .../save-dashboard-dialog.component.scss           |  17 +-
 .../save-dashboard-dialog.component.ts             |  73 ++--
 .../model/dashboard-configuration.model.ts         |   9 +-
 .../app-asset-monitoring/model/image-info.model.ts |   4 +-
 .../model/selected-visualization-data.model.ts     |   9 +-
 .../app-asset-monitoring/services/rest.service.ts  |   4 +
 .../app-asset-monitoring/services/shape.service.ts |  91 +++--
 .../app/app-overview/app-overview.component.html   |   4 +-
 .../adapter-description.component.html             |  16 +-
 .../adapter-description.component.ts               |  78 ++---
 .../data-marketplace.component.html                |  10 +-
 .../data-marketplace/data-marketplace.component.ts | 373 +++++++++------------
 .../format-configuration.component.ts              |   5 +-
 .../start-adapter-configuration.component.html     |   9 +-
 .../start-adapter-configuration.component.ts       |  15 +-
 .../adapter-started-dialog.component.html          |  14 +-
 .../adapter-started-dialog.component.ts            | 106 +++---
 .../adapter-upload-dialog.component.ts             |  60 ++--
 .../connect/services/data-marketplace.service.ts   | 135 ++------
 ui/src/app/connect/services/rest.service.ts        |  79 ++---
 ui/src/app/core-model/gen/streampipes-model.ts     |  57 +---
 .../static-alternatives.component.html             |  12 +-
 ...c-runtime-resolvable-oneof-input.component.html |   8 +-
 .../static-secret-input.component.html             |  27 +-
 ui/src/app/dashboard/dashboard.component.html      |   2 +-
 .../app/data-explorer/data-explorer.component.html |   2 +-
 ui/src/app/editor/editor.component.html            |   2 +-
 .../pipeline-status-dialog.component.html          |  44 +--
 ui/src/scss/sp/main.scss                           |   4 +
 159 files changed, 2236 insertions(+), 3617 deletions(-)

diff --cc streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/CouchDbInstallationStep.java
index 3b6b803,444d54f..7143075
--- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/CouchDbInstallationStep.java
+++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/setup/CouchDbInstallationStep.java
@@@ -25,203 -27,192 +25,199 @@@ import org.lightcouch.DesignDocument
  import org.lightcouch.DesignDocument.MapReduce;
  import org.lightcouch.Response;
  
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
+ import java.util.*;
  
 -public class CouchDbInstallationStep implements InstallationStep {
 -
 -    private static List<String> initRdfEndpointPorts = new ArrayList<>();
 -    private static final String initRdfEndpointHost = "http://localhost:";
 -
 -    private static final String PREPARING_NOTIFICATIONS_TEXT = "Preparing database " +
 -            "'notifications'...";
 -    private static final String PREPARING_USERS_TEXT = "Preparing database 'users'...";
 -
 -    public CouchDbInstallationStep() {
 -
 -    }
 -
 -    @Override
 -    public List<Message> install() {
 -        List<Message> msgs = new ArrayList<>();
 -        msgs.addAll(createDatabases());
 -        msgs.addAll(createViews());
 -        msgs.add(addRdfEndpoints());
 -        return msgs;
 -    }
 -
 -    @Override
 -    public String getTitle() {
 -        return "Creating databases...";
 -    }
 -
 -    private List<Message> createDatabases() {
 -        try {
 -            // Set up couchdb internal databases
 -            Utils.getCouchDbInternalUsersClient();
 -            Utils.getCouchDbReplicatorClient();
 -            Utils.getCouchDbGlobalChangesClient();
 -
 -            // Set up streampipes internal databases
 -            Utils.getCouchDbUserClient();
 -            Utils.getCouchDbMonitoringClient();
 -            Utils.getCouchDbPipelineClient();
 -            Utils.getCouchDbConnectionClient();
 -            Utils.getCouchDbNotificationClient();
 -            Utils.getCouchDbPipelineCategoriesClient();
 -            Utils.getCouchDbVisualizationClient();
 -            Utils.getCouchDbRdfEndpointClient();
 -            Utils.getCouchDbDashboardClient();
 -            Utils.getCouchDbDashboardWidgetClient();
 -            Utils.getCouchDbLabelClient();
 -            Utils.getCouchDbCategoryClient();
 -
 -            return Collections.singletonList(Notifications.success(getTitle()));
 -        } catch (Exception e) {
 -            return Collections.singletonList(Notifications.error(getTitle()));
 -        }
 +public class CouchDbInstallationStep extends InstallationStep {
 +
 +  private static final String initRdfEndpointHost = "http://localhost:";
 +  private static final String PREPARING_NOTIFICATIONS_TEXT = "Preparing database " +
 +          "'notifications'...";
 +  private static final String PREPARING_USERS_TEXT = "Preparing database 'users'...";
-   private static List<String> initRdfEndpointPorts =
-           Collections.singletonList("8099/api/v1/master/sources/");
++  private static List<String> initRdfEndpointPorts = new ArrayList<>();
 +
 +  public CouchDbInstallationStep() {
 +
 +  }
 +
 +  @Override
 +  public void install() {
 +    createDatabases();
 +    createViews();
 +    addRdfEndpoints();
 +  }
 +
 +  @Override
 +  public String getTitle() {
 +    return "Creating databases...";
 +  }
 +
 +  private void createDatabases() {
 +    try {
 +      // Set up couchdb internal databases
 +      Utils.getCouchDbInternalUsersClient();
 +      Utils.getCouchDbReplicatorClient();
 +      Utils.getCouchDbGlobalChangesClient();
 +
 +      // Set up streampipes internal databases
 +      Utils.getCouchDbUserClient();
 +      Utils.getCouchDbMonitoringClient();
 +      Utils.getCouchDbPipelineClient();
 +      Utils.getCouchDbConnectionClient();
 +      Utils.getCouchDbNotificationClient();
 +      Utils.getCouchDbPipelineCategoriesClient();
 +      Utils.getCouchDbVisualizationClient();
 +      Utils.getCouchDbRdfEndpointClient();
 +      Utils.getCouchDbDashboardClient();
 +      Utils.getCouchDbDashboardWidgetClient();
 +      Utils.getCouchDbLabelClient();
 +      Utils.getCouchDbCategoryClient();
 +
 +      logSuccess(getTitle());
 +    } catch (Exception e) {
 +      logFailure(getTitle(), e);
      }
 -
 -    private List<Message> createViews() {
 -        List<Message> result = new ArrayList<>();
 -        result.add(addUserView());
 -        result.add(addConnectionView());
 -        result.add(addNotificationView());
 -        result.add(addLabelView());
 -        return result;
 +  }
 +
 +  private void createViews() {
 +    addUserView();
 +    addConnectionView();
 +    addNotificationView();
 +    addLabelView();
 +  }
 +
 +  private void addRdfEndpoints() {
 +    ExtensionsServiceEndpointStorageImpl rdfEndpointStorage = new ExtensionsServiceEndpointStorageImpl();
 +    initRdfEndpointPorts
 +            .forEach(p -> rdfEndpointStorage
 +                    .addExtensionsServiceEndpoint(new ExtensionsServiceEndpoint(initRdfEndpointHost + p)));
 +
 +    logSuccess("Discovering pipeline element endpoints...");
 +  }
 +
 +  private void addNotificationView() {
 +    try {
 +      DesignDocument userDocument = prepareDocument("_design/notificationtypes");
 +      DesignDocument notificationCountDocument = prepareDocument("_design/unread");
 +
 +      Map<String, MapReduce> notificationTypeViews = new HashMap<>();
 +      MapReduce notificationTypeFunction = new MapReduce();
 +      notificationTypeFunction.setMap("function (doc) { var vizName = doc.title.replace(/\\s/g, '-'); var indexName = doc.correspondingPipelineId + '-' + vizName; emit([indexName, doc.createdAtTimestamp], doc);}");
 +      notificationTypeViews.put("notificationtypes", notificationTypeFunction);
 +      userDocument.setViews(notificationTypeViews);
 +      Response resp = Utils.getCouchDbNotificationClient().design().synchronizeWithDb(userDocument);
 +
 +      Map<String, MapReduce> notificationCountTypeViews = new HashMap<>();
 +      MapReduce countFunction = new MapReduce();
 +      countFunction.setMap("function (doc) {\n" +
 +              "  var user = doc.targetedAt; \n" +
 +              "  if (!doc.read) {\n" +
 +              "    emit(user, 1);\n" +
 +              "  }\n" +
 +              "}");
 +      countFunction.setReduce("function (keys, values, rereduce) {\n" +
 +              "  if (rereduce) {\n" +
 +              "    return sum(values);\n" +
 +              "  } else {\n" +
 +              "    return values.length;\n" +
 +              "  }\n" +
 +              "}");
 +      notificationCountTypeViews.put("unread", countFunction);
 +      notificationCountDocument.setViews(notificationCountTypeViews);
 +      Response countResp =
 +              Utils.getCouchDbNotificationClient().design().synchronizeWithDb(notificationCountDocument);
 +
 +      if (resp.getError() != null && countResp != null) {
 +        logFailure(PREPARING_NOTIFICATIONS_TEXT);
 +      } else {
 +        logSuccess(PREPARING_NOTIFICATIONS_TEXT);
 +      }
 +    } catch (Exception e) {
 +      logFailure(PREPARING_NOTIFICATIONS_TEXT, e);
      }
 +  }
  
 -    private Message addRdfEndpoints() {
 -        ExtensionsServiceEndpointStorageImpl rdfEndpointStorage = new ExtensionsServiceEndpointStorageImpl();
 -        initRdfEndpointPorts
 -                .forEach(p -> rdfEndpointStorage
 -                        .addExtensionsServiceEndpoint(new ExtensionsServiceEndpoint(initRdfEndpointHost + p)));
 +  private void addUserView() {
 +    try {
 +      DesignDocument userDocument = prepareDocument("_design/users");
 +      Map<String, MapReduce> views = new HashMap<>();
  
 -        return Notifications.success("Discovering pipeline element endpoints...");
 -    }
 -
 -    private Message addNotificationView() {
 -        try {
 -            DesignDocument userDocument = prepareDocument("_design/notificationtypes");
 -            DesignDocument notificationCountDocument = prepareDocument("_design/unread");
 -
 -            Map<String, MapReduce> notificationTypeViews = new HashMap<>();
 -            MapReduce notificationTypeFunction = new MapReduce();
 -            notificationTypeFunction.setMap("function (doc) { var vizName = doc.title.replace(/\\s/g, '-'); var indexName = doc.correspondingPipelineId + '-' + vizName; emit([indexName, doc.createdAtTimestamp], doc);}");
 -            notificationTypeViews.put("notificationtypes", notificationTypeFunction);
 -            userDocument.setViews(notificationTypeViews);
 -            Response resp = Utils.getCouchDbNotificationClient().design().synchronizeWithDb(userDocument);
 -
 -            Map<String, MapReduce> notificationCountTypeViews = new HashMap<>();
 -            MapReduce countFunction = new MapReduce();
 -            countFunction.setMap("function (doc) {\n" +
 -                    "  var user = doc.targetedAt; \n" +
 -                    "  if (!doc.read) {\n" +
 -                    "    emit(user, 1);\n" +
 -                    "  }\n" +
 -                    "}");
 -            countFunction.setReduce("function (keys, values, rereduce) {\n" +
 -                    "  if (rereduce) {\n" +
 -                    "    return sum(values);\n" +
 -                    "  } else {\n" +
 -                    "    return values.length;\n" +
 -                    "  }\n" +
 -                    "}");
 -            notificationCountTypeViews.put("unread", countFunction);
 -            notificationCountDocument.setViews(notificationCountTypeViews);
 -            Response countResp =
 -                    Utils.getCouchDbNotificationClient().design().synchronizeWithDb(notificationCountDocument);
 -
 -            if (resp.getError() != null && countResp != null) return Notifications.error(PREPARING_NOTIFICATIONS_TEXT);
 -            else return Notifications.success(PREPARING_NOTIFICATIONS_TEXT);
 -        } catch (Exception e) {
 -            return Notifications.error(PREPARING_NOTIFICATIONS_TEXT);
 -        }
 -    }
 +      MapReduce passwordFunction = new MapReduce();
 +      passwordFunction.setMap("function(doc) { if(doc.username && doc.principalType === 'USER_ACCOUNT' && doc.password) { emit(doc.username, doc.password); } }");
  
 -    private Message addUserView() {
 -        try {
 -            DesignDocument userDocument = prepareDocument("_design/users");
 -            Map<String, MapReduce> views = new HashMap<>();
 +      MapReduce usernameFunction = new MapReduce();
 +      usernameFunction.setMap("function(doc) { if(doc.username) { emit(doc.username, doc); } }");
  
 -            MapReduce passwordFunction = new MapReduce();
 -            passwordFunction.setMap("function(doc) { if(doc.email&& doc.password) { emit(doc.email, doc.password); } }");
 +      MapReduce tokenFunction = new MapReduce();
 +      tokenFunction.setMap("function(doc) { if (doc.userApiTokens) { doc.userApiTokens.forEach(function(token) { emit(token.hashedToken, doc.email); });}}");
  
 -            MapReduce usernameFunction = new MapReduce();
 -            usernameFunction.setMap("function(doc) { if(doc.email) { emit(doc.email, doc); } }");
 +      views.put("password", passwordFunction);
 +      views.put("username", usernameFunction);
 +      views.put("token", tokenFunction);
  
 -            MapReduce tokenFunction = new MapReduce();
 -            tokenFunction.setMap("function(doc) { if (doc.userApiTokens) { doc.userApiTokens.forEach(function(token) { emit(token.hashedToken, doc.email); });}}");
 +      userDocument.setViews(views);
 +      Response resp = Utils.getCouchDbUserClient().design().synchronizeWithDb(userDocument);
  
 -            views.put("password", passwordFunction);
 -            views.put("username", usernameFunction);
 -            views.put("token", tokenFunction);
 -
 -            userDocument.setViews(views);
 -            Response resp = Utils.getCouchDbUserClient().design().synchronizeWithDb(userDocument);
 -
 -            if (resp.getError() != null) return Notifications.error(PREPARING_USERS_TEXT);
 -            else return Notifications.success(PREPARING_USERS_TEXT);
 -        } catch (Exception e) {
 -            return Notifications.error(PREPARING_USERS_TEXT);
 -        }
 +      if (resp.getError() != null) {
 +        logFailure(PREPARING_USERS_TEXT);
 +      } else {
 +        logSuccess(PREPARING_USERS_TEXT);
 +      }
 +    } catch (Exception e) {
 +      logFailure(PREPARING_USERS_TEXT, e);
      }
 +  }
  
 -    private Message addLabelView() {
 -        try {
 -            DesignDocument labelDocument = prepareDocument("_design/categoryId");
 -            Map<String, MapReduce> views = new HashMap<>();
 +  private void addLabelView() {
 +    try {
 +      DesignDocument labelDocument = prepareDocument("_design/categoryId");
 +      Map<String, MapReduce> views = new HashMap<>();
  
 -            MapReduce categoryIdFunction = new MapReduce();
 -            categoryIdFunction.setMap("function(doc) { if(doc.categoryId) { emit(doc.categoryId, doc); } }");
 +      MapReduce categoryIdFunction = new MapReduce();
 +      categoryIdFunction.setMap("function(doc) { if(doc.categoryId) { emit(doc.categoryId, doc); } }");
  
 -            views.put("categoryId", categoryIdFunction);
 +      views.put("categoryId", categoryIdFunction);
  
 -            labelDocument.setViews(views);
 -            Response resp = Utils.getCouchDbLabelClient().design().synchronizeWithDb(labelDocument);
 +      labelDocument.setViews(views);
 +      Response resp = Utils.getCouchDbLabelClient().design().synchronizeWithDb(labelDocument);
  
 -            if (resp.getError() != null) return Notifications.error(PREPARING_USERS_TEXT);
 -            else return Notifications.success(PREPARING_USERS_TEXT);
 -        } catch (Exception e) {
 -            return Notifications.error(PREPARING_USERS_TEXT);
 -        }
 +      if (resp.getError() != null) {
 +        logFailure(PREPARING_USERS_TEXT);
 +      } else {
 +        logSuccess(PREPARING_USERS_TEXT);
 +      }
 +    } catch (Exception e) {
 +      logFailure(PREPARING_USERS_TEXT, e);
      }
 +  }
  
 -    private Message addConnectionView() {
 -        try {
 -            DesignDocument connectionDocument = prepareDocument("_design/connection");
 -            Map<String, MapReduce> views = new HashMap<>();
 +  private void addConnectionView() {
 +    try {
 +      DesignDocument connectionDocument = prepareDocument("_design/connection");
 +      Map<String, MapReduce> views = new HashMap<>();
  
 -            MapReduce frequentFunction = new MapReduce();
 -            frequentFunction.setMap("function(doc) { if(doc.from && doc.to) { emit([doc.from, doc.to] , 1 ); } }");
 -            frequentFunction.setReduce("function (key, values) { return sum(values); }");
 +      MapReduce frequentFunction = new MapReduce();
 +      frequentFunction.setMap("function(doc) { if(doc.from && doc.to) { emit([doc.from, doc.to] , 1 ); } }");
 +      frequentFunction.setReduce("function (key, values) { return sum(values); }");
  
 -            views.put("frequent", frequentFunction);
 +      views.put("frequent", frequentFunction);
  
 -            connectionDocument.setViews(views);
 -            Response resp = Utils.getCouchDbConnectionClient().design().synchronizeWithDb(connectionDocument);
 -
 -            if (resp.getError() != null) return Notifications.error("Preparing database 'connection'...");
 -            else return Notifications.success("Preparing database 'connection'...");
 -        } catch (Exception e) {
 -            return Notifications.error("Preparing database 'connection'...");
 -        }
 -    }
 +      connectionDocument.setViews(views);
 +      Response resp = Utils.getCouchDbConnectionClient().design().synchronizeWithDb(connectionDocument);
  
 -    private DesignDocument prepareDocument(String id) {
 -        DesignDocument doc = new DesignDocument();
 -        doc.setLanguage("javascript");
 -        doc.setId(id);
 -        return doc;
 +      if (resp.getError() != null) {
 +        logFailure("Preparing database 'connection'...");
 +      } else {
 +        logSuccess("Preparing database 'connection'...");
 +      }
 +    } catch (Exception e) {
 +      logFailure("Preparing database 'connection'...", e);
      }
 +  }
 +
 +  private DesignDocument prepareDocument(String id) {
 +    DesignDocument doc = new DesignDocument();
 +    doc.setLanguage("javascript");
 +    doc.setId(id);
 +    return doc;
 +  }
  }
diff --cc ui/src/app/connect/services/data-marketplace.service.ts
index de185c0,afc9bda..588f91b
--- a/ui/src/app/connect/services/data-marketplace.service.ts
+++ b/ui/src/app/connect/services/data-marketplace.service.ts
@@@ -48,7 -44,7 +42,7 @@@ export class DataMarketplaceService 
    }
  
    get connectPath() {
-     return this.platformServicesCommons.apiBasePath + '/connect';
 -    return `${this.platformServicesCommons.apiBasePath()}/connect`;
++    return `${this.platformServicesCommons.apiBasePath}/connect`;
    }
  
    getAdapterDescriptions(): Observable<AdapterDescriptionUnion[]> {
diff --cc ui/src/app/connect/services/rest.service.ts
index b10b2d9,c2e12a8..d4d31a3
--- a/ui/src/app/connect/services/rest.service.ts
+++ b/ui/src/app/connect/services/rest.service.ts
@@@ -23,16 -23,9 +23,9 @@@ import { HttpClient } from '@angular/co
  import { from, Observable } from 'rxjs';
  import { map } from 'rxjs/operators';
  import { UnitDescription } from '../model/UnitDescription';
- import {
-   AdapterDescription,
-   FormatDescriptionList,
-   GuessSchema,
-   Message,
-   ProtocolDescriptionList,
-   SpDataStream
- } from '../../core-model/gen/streampipes-model';
+ import { AdapterDescription, FormatDescription, GuessSchema, Message, SpDataStream } from '../../core-model/gen/streampipes-model';
  import { PlatformServicesCommons } from '../../platform-services/apis/commons.service';
 -import { AuthStatusService } from '../../services/auth-status.service';
 +import { AuthService } from '../../services/auth.service';
  
  @Injectable()
  export class RestService {
@@@ -51,23 -44,19 +44,19 @@@
      return this.addAdapterDescription(adapter, '/master/adapters');
    }
  
-   addAdapterTemplate(adapter: AdapterDescription): Observable<Message> {
-     return this.addAdapterDescription(adapter, '/master/adapters/template');
-   }
- 
    addAdapterDescription(adapter: AdapterDescription, url: string): Observable<Message> {
 -    adapter.userName = this.authStatusService.email;
 +    adapter.userName = this.authService.getCurrentUser().email;
      const promise = new Promise<Message>((resolve, reject) => {
        this.http
-           .post(
-               this.connectPath + url,
-               adapter,
-           )
-           .pipe(map(response => {
-             const statusMessage = response as Message;
-             resolve(statusMessage);
-           }))
-           .subscribe();
+         .post(
+           this.connectPath + url,
+           adapter
+         )
+         .pipe(map(response => {
+           const statusMessage = response as Message;
+           resolve(statusMessage);
+         }))
+         .subscribe();
      });
      return from(promise);
    }
@@@ -83,14 -72,14 +72,14 @@@
  
    getSourceDetails(sourceElementId): Observable<SpDataStream> {
      return this.http
-         .get(this.platformServicesCommons.apiBasePath + '/streams/' + encodeURIComponent(sourceElementId)).pipe(map(response => {
-           return SpDataStream.fromData(response as SpDataStream);
-         }));
 -      .get(`${this.platformServicesCommons.apiBasePath()}/streams/${encodeURIComponent(sourceElementId)}`).pipe(map(response => {
++      .get(`${this.platformServicesCommons.apiBasePath}/streams/${encodeURIComponent(sourceElementId)}`).pipe(map(response => {
+         return SpDataStream.fromData(response as SpDataStream);
+       }));
    }
  
    getRuntimeInfo(sourceDescription): Observable<any> {
-     return this.http.post(this.platformServicesCommons.apiBasePath + '/pipeline-element/runtime', sourceDescription, {
-       headers: {ignoreLoadingBar: ''}
 -    return this.http.post(`${this.platformServicesCommons.apiBasePath()}/pipeline-element/runtime`, sourceDescription, {
++    return this.http.post(`${this.platformServicesCommons.apiBasePath}/pipeline-element/runtime`, sourceDescription, {
+       headers: { ignoreLoadingBar: '' }
      });
    }