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 2022/02/02 16:16:51 UTC

[incubator-streampipes] 01/03: Merge branch 'STREAMPIPES-494' into experimental-module-federation-494

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

zehnder pushed a commit to branch experimental-module-federation-494-philipp
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git

commit 4229189c30e1ffac8b07599aaf8390068158fcb7
Merge: 499f4a9 d4fdfb8
Author: Philipp Zehnder <ze...@fzi.de>
AuthorDate: Wed Feb 2 13:41:47 2022 +0100

    Merge branch 'STREAMPIPES-494' into experimental-module-federation-494

 .../client/matching/MatchingResultMessage.java     |   5 +
 .../model/message/EdgeValidationStatus.java        |  52 ++
 .../model/message/EdgeValidationStatusType.java    |   7 +
 .../model/message/PipelineEdgeValidation.java      |  76 +++
 .../model/message/PipelineModificationMessage.java |  30 +-
 ...ion.java => PipelineElementValidationInfo.java} |  37 +-
 .../model/pipeline/PipelineModification.java       |  30 +-
 ...orDescription.java => ValidationInfoLevel.java} |  24 +-
 .../DefaultStaticPropertyVisitor.java              |  43 ++
 .../streampipes/manager/data/PipelineGraph.java    |   4 +-
 .../execution/http/PipelineStorageService.java     |  13 +-
 .../manager/matching/ConnectionStorageHandler.java |  49 +-
 .../matching/PipelineModificationGenerator.java    | 120 +++++
 .../matching/PipelineVerificationHandler.java      |  17 -
 .../matching/PipelineVerificationHandlerV2.java    |  22 +-
 .../manager/matching/v2/PropertyMatch.java         |   1 -
 .../pipeline/AbstractPipelineValidationStep.java   |  45 ++
 .../matching/v2/pipeline/ApplyGroundingStep.java   |  78 +++
 .../v2/pipeline/CheckCompletedStep.java}           |  24 +-
 .../v2/pipeline/CheckCompletedVisitor.java         | 137 +++++
 .../matching/v2/pipeline/ComputeOutputStep.java    |  68 +++
 .../v2/pipeline/PipelineValidationSteps.java       |  22 +-
 .../v2/pipeline/PipelineValidator.java}            |  25 +-
 .../manager/matching/v2/pipeline/PrepareStep.java  |  50 ++
 .../matching/v2/pipeline/SchemaValidationStep.java |  67 +++
 .../v2/pipeline/SpValidationException.java         |  23 +-
 .../v2/pipeline/UpdateOutputStrategiesStep.java    |  91 ++++
 .../v2/pipeline/UpdateStaticPropertiesStep.java}   |  22 +-
 .../v2/pipeline/UpdateStaticPropertiesVisitor.java | 118 +++++
 .../streampipes/manager/operations/Operations.java |  22 +-
 .../AllElementsProvider.java}                      |  34 +-
 .../manager/recommender/ElementRecommender.java    | 103 ++--
 .../recommender/PartialPipelineGenerator.java      |  69 +++
 .../streampipes/rest/impl/PipelineResource.java    |   9 +-
 ui/package.json                                    |   9 +-
 .../src/lib/model/gen/streampipes-model.ts         |  77 ++-
 .../custom-output-strategy.component.html          |   6 +-
 .../custom-output-strategy.component.ts            |  37 +-
 .../pipeline-assembly.component.html               |  12 +-
 .../pipeline-assembly.component.ts                 |  53 +-
 .../pipeline-element-options.component.html        |   8 +-
 .../pipeline-element-options.component.ts          | 104 ++--
 .../pipeline-element-recommendation.component.ts   |  82 +--
 .../components/pipeline/pipeline.component.html    |  80 +--
 .../components/pipeline/pipeline.component.ts      | 408 ++++++++-------
 .../dialog/customize/customize.component.html      |  16 +-
 .../editor/dialog/customize/customize.component.ts |  89 ++--
 .../matching-error/matching-error.component.html   |  18 +-
 .../matching-error/matching-error.component.ts     |  14 +-
 ui/src/app/editor/editor.module.ts                 | 128 ++---
 ui/src/app/editor/model/editor.model.ts            |   8 +-
 .../services/editor-dialog-manager.service.ts      | 164 ------
 ui/src/app/editor/services/editor.service.ts       |   5 +-
 .../app/editor/services/jsplumb-bridge.service.ts  |  66 +--
 .../app/editor/services/jsplumb-config.service.ts  | 241 +++++----
 .../editor/services/jsplumb-endpoint.service.ts    |  26 +-
 .../app/editor/services/jsplumb-factory.service.ts | 113 +++--
 ui/src/app/editor/services/jsplumb.service.ts      | 563 ++++++++++-----------
 .../app/editor/services/object-provider.service.ts |  51 +-
 .../services/pipeline-canvas-scrolling.service.ts  |   4 +-
 .../app/editor/services/pipeline-editor.service.ts |  27 +-
 .../services/pipeline-element-dragged.service.ts   |   6 +-
 .../pipeline-element-recommendation.service.ts     |  25 +-
 .../services/pipeline-positioning.service.ts       | 310 ++++++------
 .../app/editor/services/pipeline-style.service.ts  |  88 ++++
 .../editor/services/pipeline-validation.service.ts |  34 +-
 .../preview/pipeline-preview.component.ts          |  36 +-
 ui/src/scss/main.scss                              |   2 +-
 ui/src/scss/sp/pipeline-element.scss               |  20 +-
 69 files changed, 2828 insertions(+), 1639 deletions(-)

diff --cc ui/package.json
index daa697e,ec60920..f28b17e
--- a/ui/package.json
+++ b/ui/package.json
@@@ -41,17 -36,23 +41,23 @@@
      "@ctrl/ngx-codemirror": "5.1.1",
      "@danielmoncada/angular-datetime-picker": "^13.1.1",
      "@fortawesome/fontawesome-free": "5.12.1",
+     "@jsplumb/core": "^5.3.1",
+     "@jsplumb/browser-ui": "^5.3.1",
+     "@jsplumb/connector-bezier": "^5.3.1",
+     "@jsplumb/util": "^5.3.1",
+     "@jsplumb/common": "^5.3.1",
      "@ngx-loading-bar/core": "5.1.2",
      "@ngx-loading-bar/http-client": "5.1.2",
-     "@panzoom/panzoom": "^4.3.2",
+     "@panzoom/panzoom": "^4.4.3",
      "@stomp/ng2-stompjs": "7.2.0",
 +    "@streampipes/platform-services": "0.0.1",
      "@swimlane/ngx-charts": "16.0.0",
      "angular-datatables": "^12.0.2",
      "angular-gridster2": "12.1.1",
      "angular-plotly.js": "^4.0.0",
 -    "@circlon/angular-tree-component": "11.0.4",
      "angular2-uuid": "1.1.1",
      "codemirror": "^5.55.0",
+     "console-browserify": "^1.2.0",
      "dagre": "0.8.4",
      "datatables.net": "^1.11.4",
      "datatables.net-dt": "^1.11.4",
diff --cc ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.ts
index fafcf20,8d76f46..d64b1da
--- a/ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.ts
+++ b/ui/src/app/editor/components/output-strategy/custom-output/custom-output-strategy.component.ts
@@@ -16,11 -16,11 +16,11 @@@
   *
   */
  
- import {Component, OnInit} from "@angular/core";
- import {CustomOutputStrategy} from "../../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {BaseOutputStrategy} from "../base/BaseOutputStrategy";
- import {PropertySelectorService} from "../../../../services/property-selector.service";
- import {FormControl} from "@angular/forms";
+ import { Component, OnInit } from '@angular/core';
 -import { CustomOutputStrategy } from '../../../../core-model/gen/streampipes-model';
++import { CustomOutputStrategy } from '@streampipes/platform-services';
+ import { BaseOutputStrategy } from '../base/BaseOutputStrategy';
+ import { PropertySelectorService } from '../../../../services/property-selector.service';
+ import { FormControl } from '@angular/forms';
  
  @Component({
    selector: 'custom-output-strategy',
diff --cc ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.ts
index f6bbd37,4f1f558..58be3b4
--- a/ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.ts
+++ b/ui/src/app/editor/components/pipeline-element-options/pipeline-element-options.component.ts
@@@ -16,27 -16,31 +16,31 @@@
   *
   */
  
- import {JsplumbBridge} from "../../services/jsplumb-bridge.service";
- import {JsplumbService} from "../../services/jsplumb.service";
- import {PipelineValidationService} from "../../services/pipeline-validation.service";
- import {RestApi} from "../../../services/rest-api.service";
- import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from "@angular/core";
- import {PipelineElementRecommendationService} from "../../services/pipeline-element-recommendation.service";
- import {ObjectProvider} from "../../services/object-provider.service";
+ import { JsplumbBridge } from '../../services/jsplumb-bridge.service';
+ import { JsplumbService } from '../../services/jsplumb.service';
+ import { PipelineValidationService } from '../../services/pipeline-validation.service';
+ import { RestApi } from '../../../services/rest-api.service';
+ import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';
+ import { PipelineElementRecommendationService } from '../../services/pipeline-element-recommendation.service';
+ import { ObjectProvider } from '../../services/object-provider.service';
  import {
-   InvocablePipelineElementUnion,
    PipelineElementConfig,
+   PipelineElementConfigurationStatus,
    PipelineElementUnion
- } from "../../model/editor.model";
- import {SpDataStream, WildcardTopicDefinition} from "../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {EditorService} from "../../services/editor.service";
- import {PanelType} from "../../../core-ui/dialog/base-dialog/base-dialog.model";
- import {DialogService} from "../../../core-ui/dialog/base-dialog/base-dialog.service";
- import {CompatibleElementsComponent} from "../../dialog/compatible-elements/compatible-elements.component";
- import {Tuple2} from "../../../core-model/base/Tuple2";
- import { cloneDeep } from "lodash";
- import {Observable, Subscription} from "rxjs";
- import {JsplumbFactoryService} from "../../services/jsplumb-factory.service";
+ } from '../../model/editor.model';
+ import {
+   DataProcessorInvocation,
+   DataSinkInvocation,
+   SpDataStream,
+   WildcardTopicDefinition
 -} from '../../../core-model/gen/streampipes-model';
++} from '@streampipes/platform-services';
+ import { EditorService } from '../../services/editor.service';
+ import { PanelType } from '../../../core-ui/dialog/base-dialog/base-dialog.model';
+ import { DialogService } from '../../../core-ui/dialog/base-dialog/base-dialog.service';
+ import { CompatibleElementsComponent } from '../../dialog/compatible-elements/compatible-elements.component';
+ import { cloneDeep } from 'lodash';
+ import { Subscription } from 'rxjs';
+ import { JsplumbFactoryService } from '../../services/jsplumb-factory.service';
  
  @Component({
    selector: 'pipeline-element-options',
diff --cc ui/src/app/editor/components/pipeline-element-recommendation/pipeline-element-recommendation.component.ts
index 8c2ae69,6d4fcd5..32fe6c4
--- a/ui/src/app/editor/components/pipeline-element-recommendation/pipeline-element-recommendation.component.ts
+++ b/ui/src/app/editor/components/pipeline-element-recommendation/pipeline-element-recommendation.component.ts
@@@ -16,11 -16,11 +16,11 @@@
   *
   */
  
- import {JsplumbService} from "../../services/jsplumb.service";
- import {AfterViewInit, ChangeDetectorRef, Component, Input, OnInit} from "@angular/core";
- import {PipelineElementConfig} from "../../model/editor.model";
- import {DataProcessorInvocation} from "../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {SafeCss} from "../../utils/style-sanitizer";
+ import { JsplumbService } from '../../services/jsplumb.service';
+ import { AfterViewInit, Component, Input, OnInit } from '@angular/core';
+ import { InvocablePipelineElementUnion, PipelineElementConfig } from '../../model/editor.model';
 -import { DataProcessorInvocation } from '../../../core-model/gen/streampipes-model';
++import { DataProcessorInvocation } from '@streampipes/platform-services';
+ import { SafeCss } from '../../utils/style-sanitizer';
  
  @Component({
    selector: 'pipeline-element-recommendation',
diff --cc ui/src/app/editor/components/pipeline/pipeline.component.ts
index da47665,1d39e6a..bdcacc7
--- a/ui/src/app/editor/components/pipeline/pipeline.component.ts
+++ b/ui/src/app/editor/components/pipeline/pipeline.component.ts
@@@ -36,20 -40,21 +40,21 @@@ import 
    PipelinePreviewModel,
    SpDataSet,
    SpDataStream
- } from "../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {ObjectProvider} from "../../services/object-provider.service";
- import {CustomizeComponent} from "../../dialog/customize/customize.component";
- import {PanelType} from "../../../core-ui/dialog/base-dialog/base-dialog.model";
- import {DialogService} from "../../../core-ui/dialog/base-dialog/base-dialog.service";
- import {EditorService} from "../../services/editor.service";
- import {MatchingResultMessage} from "../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model-client";
- import {MatchingErrorComponent} from "../../dialog/matching-error/matching-error.component";
- import {Tuple2} from "../../../core-model/base/Tuple2";
- import {ConfirmDialogComponent} from "../../../core-ui/dialog/confirm-dialog/confirm-dialog.component";
- import {MatDialog} from "@angular/material/dialog";
- import {forkJoin} from "rxjs";
- import {JsplumbFactoryService} from "../../services/jsplumb-factory.service";
- import {PipelinePositioningService} from "../../services/pipeline-positioning.service";
 -} from '../../../core-model/gen/streampipes-model';
++} from '@streampipes/platform-services';
+ import { ObjectProvider } from '../../services/object-provider.service';
+ import { CustomizeComponent } from '../../dialog/customize/customize.component';
+ import { PanelType } from '../../../core-ui/dialog/base-dialog/base-dialog.model';
+ import { DialogService } from '../../../core-ui/dialog/base-dialog/base-dialog.service';
+ import { EditorService } from '../../services/editor.service';
+ import { MatchingErrorComponent } from '../../dialog/matching-error/matching-error.component';
+ import { ConfirmDialogComponent } from '../../../core-ui/dialog/confirm-dialog/confirm-dialog.component';
+ import { MatDialog } from '@angular/material/dialog';
+ import { forkJoin } from 'rxjs';
+ import { JsplumbFactoryService } from '../../services/jsplumb-factory.service';
+ import { PipelinePositioningService } from '../../services/pipeline-positioning.service';
+ import { EVENT_CONNECTION_ABORT, EVENT_CONNECTION_DRAG } from '@jsplumb/browser-ui';
+ import { EVENT_CONNECTION, EVENT_CONNECTION_DETACHED, EVENT_CONNECTION_MOVED } from '@jsplumb/core';
 -import { PipelineStyleService } from "../../services/pipeline-style.service";
++import { PipelineStyleService } from '../../services/pipeline-style.service';
  
  @Component({
    selector: 'pipeline',
diff --cc ui/src/app/editor/dialog/customize/customize.component.ts
index d719431,708adac..bb8e2fb
--- a/ui/src/app/editor/dialog/customize/customize.component.ts
+++ b/ui/src/app/editor/dialog/customize/customize.component.ts
@@@ -30,12 -27,14 +27,14 @@@ import { JsplumbService } from '../../s
  import {
    DataProcessorInvocation,
    EventSchema,
-   PipelineElementTemplate, PipelineElementTemplateConfig
- } from "../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {FormBuilder, FormGroup} from "@angular/forms";
- import {ShepherdService} from "../../../services/tour/shepherd.service";
- import {ConfigurationInfo} from "../../../connect/model/ConfigurationInfo";
- import {PipelineElementTemplateService} from "../../../../../projects/streampipes/platform-services/src/lib/apis/pipeline-element-template.service";
+   PipelineElementTemplate,
 -  PipelineElementTemplateConfig
 -} from '../../../core-model/gen/streampipes-model';
++  PipelineElementTemplateConfig,
++  PipelineElementTemplateService
++} from '@streampipes/platform-services';
+ import { FormBuilder, FormGroup } from '@angular/forms';
+ import { ShepherdService } from '../../../services/tour/shepherd.service';
+ import { ConfigurationInfo } from '../../../connect/model/ConfigurationInfo';
 -import { PipelineElementTemplateService } from '../../../platform-services/apis/pipeline-element-template.service';
 -import { PipelineStyleService } from "../../services/pipeline-style.service";
++import { PipelineStyleService } from '../../services/pipeline-style.service';
  
  @Component({
    selector: 'customize-pipeline-element',
@@@ -199,13 -194,13 +194,15 @@@ export class CustomizeComponent impleme
      } else {
        this.selectedTemplate = event.value;
        if (this.cachedPipelineElement instanceof DataProcessorInvocation) {
--        this.pipelineElementTemplateService.getConfiguredDataProcessorForTemplate(event.value._id, this.cachedPipelineElement).subscribe(pe => {
++        this.pipelineElementTemplateService.getConfiguredDataProcessorForTemplate(event.value._id, this.cachedPipelineElement)
++            .subscribe(pe => {
            this.cachedPipelineElement = pe as InvocablePipelineElementUnion;
-         })
+         });
        } else {
--        this.pipelineElementTemplateService.getConfiguredDataSinkForTemplate(event.value._id, this.cachedPipelineElement).subscribe(pe => {
++        this.pipelineElementTemplateService.getConfiguredDataSinkForTemplate(event.value._id, this.cachedPipelineElement)
++            .subscribe(pe => {
            this.cachedPipelineElement = pe as InvocablePipelineElementUnion;
-         })
+         });
        }
  
      }
diff --cc ui/src/app/editor/dialog/matching-error/matching-error.component.ts
index 9f6cf43,e9b89f9..fdb84e2
--- a/ui/src/app/editor/dialog/matching-error/matching-error.component.ts
+++ b/ui/src/app/editor/dialog/matching-error/matching-error.component.ts
@@@ -16,9 -16,9 +16,9 @@@
   *
   */
  
- import {Component, Input} from "@angular/core";
- import {DialogRef} from "../../../core-ui/dialog/base-dialog/dialog-ref";
- import {MatchingResultMessage} from "../../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model-client";
+ import { Component, Input } from '@angular/core';
+ import { DialogRef } from '../../../core-ui/dialog/base-dialog/dialog-ref';
 -import { Notification } from '../../../core-model/gen/streampipes-model';
++import { Notification } from '@streampipes/platform-services';
  
  @Component({
    selector: 'matching-error',
diff --cc ui/src/app/editor/services/jsplumb.service.ts
index 4e8d5f9,4c43750..c95460b
--- a/ui/src/app/editor/services/jsplumb.service.ts
+++ b/ui/src/app/editor/services/jsplumb.service.ts
@@@ -16,26 -16,26 +16,26 @@@
   *
   */
  
- import {JsplumbConfigService} from "./jsplumb-config.service";
- import {JsplumbBridge} from "./jsplumb-bridge.service";
- import {Injectable} from "@angular/core";
+ import { JsplumbConfigService } from './jsplumb-config.service';
+ import { JsplumbBridge } from './jsplumb-bridge.service';
+ import { Injectable } from '@angular/core';
  import {
-     InvocablePipelineElementUnion,
-     PipelineElementConfig,
-     PipelineElementUnion
- } from "../model/editor.model";
- import {PipelineElementTypeUtils} from "../utils/editor.utils";
+   InvocablePipelineElementUnion,
+   PipelineElementConfig,
+   PipelineElementConfigurationStatus,
+   PipelineElementUnion
+ } from '../model/editor.model';
+ import { PipelineElementTypeUtils } from '../utils/editor.utils';
  import {
-     DataProcessorInvocation,
-     DataSinkInvocation,
-     Pipeline,
-     SpDataSet,
-     SpDataStream,
-     SpDataStreamUnion
- } from "../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {PipelineElementDraggedService} from "./pipeline-element-dragged.service";
- import {JsplumbEndpointService} from "./jsplumb-endpoint.service";
- import {JsplumbFactoryService} from "./jsplumb-factory.service";
+   DataProcessorInvocation,
+   DataSinkInvocation,
+   Pipeline,
+   SpDataSet,
+   SpDataStream,
+   SpDataStreamUnion
 -} from '../../core-model/gen/streampipes-model';
++} from '@streampipes/platform-services';
+ import { JsplumbEndpointService } from './jsplumb-endpoint.service';
+ import { JsplumbFactoryService } from './jsplumb-factory.service';
  import { EditorService } from './editor.service';
  
  @Injectable()
diff --cc ui/src/app/editor/services/object-provider.service.ts
index d81d99e,5c6a0cd..9a60865
--- a/ui/src/app/editor/services/object-provider.service.ts
+++ b/ui/src/app/editor/services/object-provider.service.ts
@@@ -16,12 -16,12 +16,12 @@@
   *
   */
  
- import { Injectable } from "@angular/core";
- import { RestApi } from "../../services/rest-api.service";
- import { InvocablePipelineElementUnion, PipelineElementConfig } from "../model/editor.model";
- import { DataSinkInvocation, Pipeline } from "../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import { EditorService } from "./editor.service";
- import { JsplumbFactoryService } from "./jsplumb-factory.service";
+ import { Injectable } from '@angular/core';
+ import { RestApi } from '../../services/rest-api.service';
+ import { InvocablePipelineElementUnion, PipelineElementConfig } from '../model/editor.model';
 -import { DataSinkInvocation, Pipeline } from '../../core-model/gen/streampipes-model';
++import { DataSinkInvocation, Pipeline } from '@streampipes/platform-services';
+ import { EditorService } from './editor.service';
+ import { JsplumbFactoryService } from './jsplumb-factory.service';
  
  @Injectable()
  export class ObjectProvider {
diff --cc ui/src/app/editor/services/pipeline-element-recommendation.service.ts
index db0e0db,d6e01c9..129c159
--- a/ui/src/app/editor/services/pipeline-element-recommendation.service.ts
+++ b/ui/src/app/editor/services/pipeline-element-recommendation.service.ts
@@@ -23,7 -22,7 +22,7 @@@ import 
    InvocableStreamPipesEntity,
    PipelineElementRecommendation,
    SpDataStream
- } from "../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
 -} from '../../core-model/gen/streampipes-model';
++} from '@streampipes/platform-services';
  
  @Injectable()
  export class PipelineElementRecommendationService {
diff --cc ui/src/app/editor/services/pipeline-positioning.service.ts
index 224390f,889fd9d..b4adab7
--- a/ui/src/app/editor/services/pipeline-positioning.service.ts
+++ b/ui/src/app/editor/services/pipeline-positioning.service.ts
@@@ -16,21 -16,22 +16,22 @@@
   *
   */
  
- import * as dagre from "dagre";
- import {JsplumbBridge} from "./jsplumb-bridge.service";
- import {JsplumbConfigService} from "./jsplumb-config.service";
- import {JsplumbService} from "./jsplumb.service";
- import {Injectable} from "@angular/core";
- import {PipelineElementConfig} from "../model/editor.model";
+ import * as dagre from 'dagre';
+ import { JsplumbBridge } from './jsplumb-bridge.service';
+ import { JsplumbConfigService } from './jsplumb-config.service';
+ import { JsplumbService } from './jsplumb.service';
+ import { Injectable } from '@angular/core';
+ import { PipelineElementConfig } from '../model/editor.model';
  import {
-     DataProcessorInvocation,
-     DataSinkInvocation,
-     PipelineCanvasMetadata,
-     PipelineElementMetadata,
-     SpDataStream
- } from "../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model";
- import {JsplumbFactoryService} from "./jsplumb-factory.service";
- import {ObjectProvider} from "./object-provider.service";
+   DataProcessorInvocation,
+   DataSinkInvocation,
+   PipelineCanvasMetadata,
+   PipelineElementMetadata,
+   SpDataStream
 -} from '../../core-model/gen/streampipes-model';
++} from '@streampipes/platform-services';
+ import { JsplumbFactoryService } from './jsplumb-factory.service';
+ import { ObjectProvider } from './object-provider.service';
+ import { Connection } from '@jsplumb/core';
  
  @Injectable()
  export class PipelinePositioningService {
diff --cc ui/src/app/editor/services/pipeline-validation.service.ts
index 1cbbdc0,9fc1e14..fa7a9fd
--- a/ui/src/app/editor/services/pipeline-validation.service.ts
+++ b/ui/src/app/editor/services/pipeline-validation.service.ts
@@@ -19,10 -19,11 +19,11 @@@
  import * as dagre from 'dagre';
  import { JsplumbBridge } from './jsplumb-bridge.service';
  import { Injectable } from '@angular/core';
- import { PipelineElementConfig } from '../model/editor.model';
- import { DataProcessorInvocation, DataSinkInvocation } from '../../../../projects/streampipes/platform-services/src/lib/model/gen/streampipes-model';
+ import { PipelineElementConfig, PipelineElementConfigurationStatus } from '../model/editor.model';
 -import { DataProcessorInvocation, DataSinkInvocation } from '../../core-model/gen/streampipes-model';
++import { DataProcessorInvocation, DataSinkInvocation } from '@streampipes/platform-services';
  import { JsplumbFactoryService } from './jsplumb-factory.service';
  import { UserErrorMessage } from '../../core-model/base/UserErrorMessage';
+ import { Connection } from '@jsplumb/core';
  
  @Injectable()
  export class PipelineValidationService {
diff --cc ui/src/app/pipeline-details/components/preview/pipeline-preview.component.ts
index 592cedf,549c30c..6520b90
--- a/ui/src/app/pipeline-details/components/preview/pipeline-preview.component.ts
+++ b/ui/src/app/pipeline-details/components/preview/pipeline-preview.component.ts
@@@ -16,13 -16,13 +16,13 @@@
   *
   */
  
- import {Component, EventEmitter, Input, OnInit, Output} from "@angular/core";
- import {Pipeline} from "@streampipes/platform-services";
- import {PipelineElementConfig, PipelineElementUnion} from "../../../editor/model/editor.model";
- import {PipelinePositioningService} from "../../../editor/services/pipeline-positioning.service";
- import {JsplumbService} from "../../../editor/services/jsplumb.service";
- import {ObjectProvider} from "../../../editor/services/object-provider.service";
- import {JsplumbFactoryService} from "../../../editor/services/jsplumb-factory.service";
+ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 -import { Pipeline } from '../../../core-model/gen/streampipes-model';
++import { Pipeline } from '@streampipes/platform-services';
+ import { PipelineElementConfig, PipelineElementUnion } from '../../../editor/model/editor.model';
+ import { PipelinePositioningService } from '../../../editor/services/pipeline-positioning.service';
+ import { JsplumbService } from '../../../editor/services/jsplumb.service';
+ import { ObjectProvider } from '../../../editor/services/object-provider.service';
+ import { JsplumbFactoryService } from '../../../editor/services/jsplumb-factory.service';
  
  @Component({
      selector: 'pipeline-preview',