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/12/01 12:28:41 UTC

[streampipes] branch STREAMPIPES-814 created (now 7f2a8be88)

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

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


      at 7f2a8be88 Enable checkstyle for streampipes-rest (#820)

This branch includes the following new commits:

     new 7f2a8be88 Enable checkstyle for streampipes-rest (#820)

The 1 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.



[streampipes] 01/01: Enable checkstyle for streampipes-rest (#820)

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

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

commit 7f2a8be8846928febbf4a456814c02c27e6c9b11
Author: Philipp Zehnder <te...@users.noreply.github.com>
AuthorDate: Thu Dec 1 13:27:17 2022 +0100

    Enable checkstyle for streampipes-rest (#820)
---
 streampipes-rest/pom.xml                           |  22 ++
 .../apache/streampipes/rest/ResetManagement.java   | 175 +++++++-------
 .../streampipes/rest/api/IPipelineElement.java     |  36 ---
 .../streampipes/rest/api/IPipelineMonitoring.java  |  29 ---
 .../rest/filter/TokenAuthenticationFilter.java     | 132 +++++-----
 .../rest/impl/AccountActivationResource.java       |   6 +-
 .../rest/impl/AssetDashboardResource.java          |  14 +-
 .../rest/impl/AssetManagementResource.java         |  13 +-
 .../streampipes/rest/impl/Authentication.java      |  19 +-
 .../apache/streampipes/rest/impl/AutoComplete.java |  12 +-
 .../streampipes/rest/impl/CategoryResource.java    | 146 +++++------
 .../streampipes/rest/impl/EmailResource.java       |   3 +-
 .../streampipes/rest/impl/FunctionsResource.java   |   9 +-
 .../rest/impl/GenericStorageResource.java          | 159 ++++++------
 .../streampipes/rest/impl/LabelResource.java       | 198 +++++++--------
 .../rest/impl/MeasurementUnitResource.java         |  26 +-
 .../apache/streampipes/rest/impl/Notification.java | 134 ++++++-----
 .../rest/impl/OntologyMeasurementUnit.java         |  52 ++--
 .../streampipes/rest/impl/PipelineCache.java       |   6 +-
 .../rest/impl/PipelineCanvasMetadataCache.java     |   8 +-
 .../rest/impl/PipelineCanvasMetadataResource.java  |  15 +-
 .../streampipes/rest/impl/PipelineCategory.java    |  78 +++---
 .../rest/impl/PipelineElementAsset.java            |   4 +-
 .../rest/impl/PipelineElementCategory.java         |  71 +++---
 .../streampipes/rest/impl/PipelineElementFile.java |  14 +-
 .../rest/impl/PipelineElementPreview.java          |   8 +-
 .../rest/impl/PipelineElementRuntimeInfo.java      |   3 +-
 .../streampipes/rest/impl/PipelineMonitoring.java  |   5 +-
 .../streampipes/rest/impl/PipelineResource.java    |  17 +-
 .../streampipes/rest/impl/PipelineTemplate.java    |  44 ++--
 .../streampipes/rest/impl/ResetResource.java       |  23 +-
 .../rest/impl/RestorePasswordResource.java         |   8 +-
 .../org/apache/streampipes/rest/impl/Setup.java    |   4 +-
 .../apache/streampipes/rest/impl/UserResource.java |  53 ++--
 .../streampipes/rest/impl/admin/ConsulConfig.java  |  26 +-
 .../rest/impl/admin/DataExportResource.java        |   6 +-
 .../rest/impl/admin/DataImportResource.java        |   7 +-
 .../impl/admin/EmailConfigurationResource.java     |   9 +-
 .../admin/ExtensionsServiceEndpointResource.java   |  57 +++--
 .../impl/admin/GeneralConfigurationResource.java   |  12 +-
 .../rest/impl/admin/PermissionResource.java        |   2 +
 .../rest/impl/admin/PipelineElementImport.java     |  16 +-
 .../rest/impl/admin/UserGroupResource.java         |   8 +-
 .../rest/impl/connect/AdapterResource.java         |   1 +
 .../rest/impl/connect/DescriptionResource.java     | 267 +++++++++++----------
 .../rest/impl/connect/GuessResource.java           |  26 +-
 .../impl/connect/RuntimeResolvableResource.java    |  63 ++---
 .../rest/impl/connect/SourcesResource.java         |  67 +++---
 .../rest/impl/connect/UnitResource.java            |  35 +--
 .../rest/impl/connect/WelcomePageMaster.java       |  98 ++++----
 .../impl/connect/WorkerAdministrationResource.java |  23 +-
 .../impl/dashboard/AbstractDashboardResource.java  |  10 +-
 .../AbstractPipelineExtractionResource.java        |  49 ++--
 .../streampipes/rest/impl/dashboard/Dashboard.java |  41 ++--
 .../rest/impl/dashboard/DashboardWidget.java       |   9 +-
 .../dashboard/VisualizablePipelineResource.java    |  10 +-
 .../impl/datalake/DataLakeDashboardResource.java   |  40 +--
 .../rest/impl/datalake/DataLakeWidgetResource.java |   9 +-
 .../impl/datalake/PersistedDataStreamResource.java |   5 +-
 .../impl/nouser/PipelineElementImportNoUser.java   |  10 +-
 .../rest/impl/pe/DataProcessorResource.java        |  86 ++++---
 .../streampipes/rest/impl/pe/DataSinkResource.java |   8 +-
 .../streampipes/rest/security/AuthConstants.java   |  93 ++++---
 .../rest/security/SpPermissionEvaluator.java       |  13 +-
 .../v4/params/WhereStatementParamsTest.java        |  68 +++---
 65 files changed, 1505 insertions(+), 1215 deletions(-)

diff --git a/streampipes-rest/pom.xml b/streampipes-rest/pom.xml
index 4daa8622a..c8545d7dd 100644
--- a/streampipes-rest/pom.xml
+++ b/streampipes-rest/pom.xml
@@ -163,4 +163,26 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>validate</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <logViolationsToConsole>true</logViolationsToConsole>
+                    <failOnViolation>true</failOnViolation>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
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 faa8bf422..2b5b72468 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
@@ -25,106 +25,111 @@ import org.apache.streampipes.manager.file.FileManager;
 import org.apache.streampipes.manager.pipeline.PipelineCacheManager;
 import org.apache.streampipes.manager.pipeline.PipelineCanvasMetadataCacheManager;
 import org.apache.streampipes.manager.pipeline.PipelineManager;
-import org.apache.streampipes.resource.management.UserResourceManager;
-import org.apache.streampipes.model.file.FileMetadata;
 import org.apache.streampipes.model.connect.adapter.AdapterDescription;
 import org.apache.streampipes.model.datalake.DataLakeMeasure;
+import org.apache.streampipes.model.file.FileMetadata;
 import org.apache.streampipes.model.pipeline.Pipeline;
+import org.apache.streampipes.resource.management.UserResourceManager;
 import org.apache.streampipes.storage.api.IDashboardStorage;
 import org.apache.streampipes.storage.api.IDashboardWidgetStorage;
 import org.apache.streampipes.storage.api.IDataExplorerWidgetStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
 public class ResetManagement {
-    // This class should be moved into another package. I moved it here because I got a cyclic maven
-    // dependency between this package and streampipes-pipeline-management
-    // See in issue [STREAMPIPES-405]
-
-    private static final Logger logger = LoggerFactory.getLogger(ResetManagement.class);
-
-    /**
-     * Remove all configurations for this user. This includes:
-     * [pipeline assembly cache, pipelines, adapters, files]
-     * @param username
-     */
-    public static void reset(String username) {
-        logger.info("Start resetting the system");
-
-        // Set hide tutorial to false for user
-        UserResourceManager.setHideTutorial(username, true);
-
-        // Clear pipeline assembly Cache
-        PipelineCacheManager.removeCachedPipeline(username);
-        PipelineCanvasMetadataCacheManager.removeCanvasMetadataFromCache(username);
-
-        // Stop and delete all pipelines
-        List<Pipeline> allPipelines = PipelineManager.getAllPipelines();
-        allPipelines.forEach(pipeline -> {
-            PipelineManager.stopPipeline(pipeline.getPipelineId(), true);
-            PipelineManager.deletePipeline(pipeline.getPipelineId());
-        });
-
-        // Stop and delete all adapters
-        AdapterMasterManagement adapterMasterManagement = new AdapterMasterManagement();
-
+  // This class should be moved into another package. I moved it here because I got a cyclic maven
+  // dependency between this package and streampipes-pipeline-management
+  // See in issue [STREAMPIPES-405]
+
+  private static final Logger logger = LoggerFactory.getLogger(ResetManagement.class);
+
+  /**
+   * Remove all configurations for this user. This includes:
+   * [pipeline assembly cache, pipelines, adapters, files]
+   *
+   * @param username
+   */
+  public static void reset(String username) {
+    logger.info("Start resetting the system");
+
+    // Set hide tutorial to false for user
+    UserResourceManager.setHideTutorial(username, true);
+
+    // Clear pipeline assembly Cache
+    PipelineCacheManager.removeCachedPipeline(username);
+    PipelineCanvasMetadataCacheManager.removeCanvasMetadataFromCache(username);
+
+    // Stop and delete all pipelines
+    List<Pipeline> allPipelines = PipelineManager.getAllPipelines();
+    allPipelines.forEach(pipeline -> {
+      PipelineManager.stopPipeline(pipeline.getPipelineId(), true);
+      PipelineManager.deletePipeline(pipeline.getPipelineId());
+    });
+
+    // Stop and delete all adapters
+    AdapterMasterManagement adapterMasterManagement = new AdapterMasterManagement();
+
+    try {
+      List<AdapterDescription> allAdapters = adapterMasterManagement.getAllAdapterInstances();
+      allAdapters.forEach(adapterDescription -> {
         try {
-            List<AdapterDescription> allAdapters = adapterMasterManagement.getAllAdapterInstances();
-            allAdapters.forEach(adapterDescription -> {
-                try {
-                    adapterMasterManagement.deleteAdapter(adapterDescription.getElementId());
-                } catch (AdapterException e) {
-                    logger.error("Failed to delete adapter with id: " + adapterDescription.getElementId(), e);
-                }
-            });
+          adapterMasterManagement.deleteAdapter(adapterDescription.getElementId());
         } catch (AdapterException e) {
-            logger.error("Failed to load all adapter descriptions", e);
+          logger.error("Failed to delete adapter with id: " + adapterDescription.getElementId(), e);
         }
-
-        // Stop and delete all files
-        List<FileMetadata> allFiles = FileManager.getAllFiles();
-        allFiles.forEach(fileMetadata -> {
-            FileManager.deleteFile(fileMetadata.getFileId());
-        });
-
-        // Remove all data in data lake
-        DataLakeManagementV4 dataLakeManagementV4 = new DataLakeManagementV4();
-        List<DataLakeMeasure> allMeasurements = dataLakeManagementV4.getAllMeasurements();
-        allMeasurements.forEach(measurement -> {
-            boolean isSuccessDataLake = dataLakeManagementV4.removeMeasurement(measurement.getMeasureName());
-
-            if (isSuccessDataLake) {
-                dataLakeManagementV4.removeEventProperty(measurement.getMeasureName());
-            }
-        });
-
-        // Remove all data views widgets
-        IDataExplorerWidgetStorage widgetStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerWidgetStorage();
-        widgetStorage.getAllDataExplorerWidgets().forEach(widget -> {
-           widgetStorage.deleteDataExplorerWidget(widget.getId());
-        });
-
-        // Remove all data views
-        IDashboardStorage dataLakeDashboardStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerDashboardStorage();
-        dataLakeDashboardStorage.getAllDashboards().forEach(dashboard  -> {
-            dataLakeDashboardStorage.deleteDashboard(dashboard.getCouchDbId());
-        });
-
-        // Remove all dashboard widgets
-        IDashboardWidgetStorage dashobardWidgetStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getDashboardWidgetStorage();
-        dashobardWidgetStorage.getAllDashboardWidgets().forEach(widget -> {
-            dashobardWidgetStorage.deleteDashboardWidget(widget.getId());
-        });
-
-        // Remove all dashboards
-        IDashboardStorage dashboardStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getDashboardStorage();
-        dashboardStorage.getAllDashboards().forEach(dashboard  -> {
-            dashboardStorage.deleteDashboard(dashboard.getCouchDbId());
-        });
-
-        logger.info("Resetting the system was completed");
+      });
+    } catch (AdapterException e) {
+      logger.error("Failed to load all adapter descriptions", e);
     }
+
+    // Stop and delete all files
+    List<FileMetadata> allFiles = FileManager.getAllFiles();
+    allFiles.forEach(fileMetadata -> {
+      FileManager.deleteFile(fileMetadata.getFileId());
+    });
+
+    // Remove all data in data lake
+    DataLakeManagementV4 dataLakeManagementV4 = new DataLakeManagementV4();
+    List<DataLakeMeasure> allMeasurements = dataLakeManagementV4.getAllMeasurements();
+    allMeasurements.forEach(measurement -> {
+      boolean isSuccessDataLake = dataLakeManagementV4.removeMeasurement(measurement.getMeasureName());
+
+      if (isSuccessDataLake) {
+        dataLakeManagementV4.removeEventProperty(measurement.getMeasureName());
+      }
+    });
+
+    // Remove all data views widgets
+    IDataExplorerWidgetStorage widgetStorage =
+        StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerWidgetStorage();
+    widgetStorage.getAllDataExplorerWidgets().forEach(widget -> {
+      widgetStorage.deleteDataExplorerWidget(widget.getId());
+    });
+
+    // Remove all data views
+    IDashboardStorage dataLakeDashboardStorage =
+        StorageDispatcher.INSTANCE.getNoSqlStore().getDataExplorerDashboardStorage();
+    dataLakeDashboardStorage.getAllDashboards().forEach(dashboard -> {
+      dataLakeDashboardStorage.deleteDashboard(dashboard.getCouchDbId());
+    });
+
+    // Remove all dashboard widgets
+    IDashboardWidgetStorage dashobardWidgetStorage =
+        StorageDispatcher.INSTANCE.getNoSqlStore().getDashboardWidgetStorage();
+    dashobardWidgetStorage.getAllDashboardWidgets().forEach(widget -> {
+      dashobardWidgetStorage.deleteDashboardWidget(widget.getId());
+    });
+
+    // Remove all dashboards
+    IDashboardStorage dashboardStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getDashboardStorage();
+    dashboardStorage.getAllDashboards().forEach(dashboard -> {
+      dashboardStorage.deleteDashboard(dashboard.getCouchDbId());
+    });
+
+    logger.info("Resetting the system was completed");
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElement.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElement.java
deleted file mode 100644
index 01cf383ee..000000000
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineElement.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.rest.api;
-
-
-import org.apache.streampipes.model.base.NamedStreamPipesEntity;
-
-import javax.ws.rs.core.Response;
-
-public interface IPipelineElement<T extends NamedStreamPipesEntity> {
-
-	Response getAvailable();
-	Response getOwn();
-
-	Response removeOwn(String elementUri);
-
-	Response getElement(String elementUri);
-	
-	
-}
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineMonitoring.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineMonitoring.java
deleted file mode 100644
index 7c81afd5a..000000000
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/api/IPipelineMonitoring.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.rest.api;
-
-import javax.ws.rs.core.Response;
-
-public interface IPipelineMonitoring {
-  
-  Response getLogInfoForPipeline(String pipelineId);
-
-  Response getMetricsInfoForPipeline(String pipelineId);
-
-  Response triggerMonitoringUpdate();
-}
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/filter/TokenAuthenticationFilter.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/filter/TokenAuthenticationFilter.java
index 2a1cd9b77..42b890b90 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/filter/TokenAuthenticationFilter.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/filter/TokenAuthenticationFilter.java
@@ -30,6 +30,7 @@ import org.apache.streampipes.user.management.model.ServiceAccountDetails;
 import org.apache.streampipes.user.management.model.UserAccountDetails;
 import org.apache.streampipes.user.management.service.TokenService;
 import org.apache.streampipes.user.management.util.TokenUtil;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -42,72 +43,75 @@ import javax.servlet.FilterChain;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import java.io.IOException;
 
 public class TokenAuthenticationFilter extends OncePerRequestFilter {
 
-	private final JwtTokenProvider tokenProvider;
-	private final IUserStorage userStorage;
-
-	private static final Logger logger = LoggerFactory.getLogger(TokenAuthenticationFilter.class);
-
-	public TokenAuthenticationFilter() {
-		this.tokenProvider = new JwtTokenProvider();
-		this.userStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getUserStorageAPI();
-	}
-
-	@Override
-	protected void doFilterInternal(HttpServletRequest request,
-																	HttpServletResponse response,
-																	FilterChain filterChain) throws ServletException, IOException {
-		try {
-			String jwt = getJwtFromRequest(request);
-
-			if (StringUtils.hasText(jwt) && tokenProvider.validateJwtToken(jwt)) {
-					String username = tokenProvider.getUserIdFromToken(jwt);
-					applySuccessfulAuth(request, username);
-			} else {
-				String apiKey = getApiKeyFromRequest(request);
-				String apiUser = getApiUserFromRequest(request);
-				if (StringUtils.hasText(apiKey) && StringUtils.hasText(apiUser)) {
-					String hashedToken = TokenUtil.hashToken(apiKey);
-					boolean hasValidToken = new TokenService().hasValidToken(apiUser, hashedToken);
-					if (hasValidToken) {
-						applySuccessfulAuth(request, apiUser);
-					}
-				}
-			}
-		} catch (Exception ex) {
-			logger.error("Could not set user authentication in security context", ex);
-		}
-
-		filterChain.doFilter(request, response);
-	}
-
-	private void applySuccessfulAuth(HttpServletRequest request,
-																	 String username) {
-		Principal user = userStorage.getUser(username);
-		PrincipalUserDetails<?> userDetails = user instanceof UserAccount ? new UserAccountDetails((UserAccount) user) : new ServiceAccountDetails((ServiceAccount) user);
-		UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
-		authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
-
-		SecurityContextHolder.getContext().setAuthentication(authentication);
-	}
-
-
-	private String getJwtFromRequest(HttpServletRequest request) {
-		String bearerToken = request.getHeader(HttpConstants.AUTHORIZATION);
-		if (StringUtils.hasText(bearerToken) && bearerToken.startsWith(HttpConstants.BEARER)) {
-			return bearerToken.substring(7);
-		}
-		return null;
-	}
-
-	private String getApiKeyFromRequest(HttpServletRequest request) {
-		return request.getHeader(HttpConstants.X_API_KEY);
-	}
-
-	private String getApiUserFromRequest(HttpServletRequest request) {
-		return request.getHeader(HttpConstants.X_API_USER);
-	}
+  private final JwtTokenProvider tokenProvider;
+  private final IUserStorage userStorage;
+
+  private static final Logger logger = LoggerFactory.getLogger(TokenAuthenticationFilter.class);
+
+  public TokenAuthenticationFilter() {
+    this.tokenProvider = new JwtTokenProvider();
+    this.userStorage = StorageDispatcher.INSTANCE.getNoSqlStore().getUserStorageAPI();
+  }
+
+  @Override
+  protected void doFilterInternal(HttpServletRequest request,
+                                  HttpServletResponse response,
+                                  FilterChain filterChain) throws ServletException, IOException {
+    try {
+      String jwt = getJwtFromRequest(request);
+
+      if (StringUtils.hasText(jwt) && tokenProvider.validateJwtToken(jwt)) {
+        String username = tokenProvider.getUserIdFromToken(jwt);
+        applySuccessfulAuth(request, username);
+      } else {
+        String apiKey = getApiKeyFromRequest(request);
+        String apiUser = getApiUserFromRequest(request);
+        if (StringUtils.hasText(apiKey) && StringUtils.hasText(apiUser)) {
+          String hashedToken = TokenUtil.hashToken(apiKey);
+          boolean hasValidToken = new TokenService().hasValidToken(apiUser, hashedToken);
+          if (hasValidToken) {
+            applySuccessfulAuth(request, apiUser);
+          }
+        }
+      }
+    } catch (Exception ex) {
+      logger.error("Could not set user authentication in security context", ex);
+    }
+
+    filterChain.doFilter(request, response);
+  }
+
+  private void applySuccessfulAuth(HttpServletRequest request,
+                                   String username) {
+    Principal user = userStorage.getUser(username);
+    PrincipalUserDetails<?> userDetails = user instanceof UserAccount ? new UserAccountDetails((UserAccount) user) :
+        new ServiceAccountDetails((ServiceAccount) user);
+    UsernamePasswordAuthenticationToken authentication =
+        new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
+    authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+
+    SecurityContextHolder.getContext().setAuthentication(authentication);
+  }
+
+
+  private String getJwtFromRequest(HttpServletRequest request) {
+    String bearerToken = request.getHeader(HttpConstants.AUTHORIZATION);
+    if (StringUtils.hasText(bearerToken) && bearerToken.startsWith(HttpConstants.BEARER)) {
+      return bearerToken.substring(7);
+    }
+    return null;
+  }
+
+  private String getApiKeyFromRequest(HttpServletRequest request) {
+    return request.getHeader(HttpConstants.X_API_KEY);
+  }
+
+  private String getApiUserFromRequest(HttpServletRequest request) {
+    return request.getHeader(HttpConstants.X_API_USER);
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AccountActivationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AccountActivationResource.java
index 5215dd037..973717845 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AccountActivationResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AccountActivationResource.java
@@ -20,7 +20,11 @@ package org.apache.streampipes.rest.impl;
 import org.apache.streampipes.commons.exceptions.UserNotFoundException;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
index 5fa37a792..9c4f5acf8 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetDashboardResource.java
@@ -17,17 +17,25 @@
  */
 package org.apache.streampipes.rest.impl;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.streampipes.model.client.assetdashboard.AssetDashboardConfig;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.storage.api.IAssetDashboardStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
+
+import org.apache.commons.io.FileUtils;
 import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
 import org.glassfish.jersey.media.multipart.FormDataParam;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -119,7 +127,7 @@ public class AssetDashboardResource extends AbstractRestResource {
 
   private String getTargetDirectory() {
     return System.getProperty("user.home") + File.separator + ".streampipes"
-            + File.separator + "assets" + File.separator + APP_ID;
+        + File.separator + "assets" + File.separator + APP_ID;
   }
 
   private String getTargetFile(String filename) {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java
index bbbc0a8bf..6d42cac69 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AssetManagementResource.java
@@ -22,14 +22,23 @@ import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResourc
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.storage.api.IGenericStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -47,7 +56,7 @@ public class AssetManagementResource extends AbstractAuthGuardedRestResource {
   @Produces(MediaType.APPLICATION_JSON)
   @PreAuthorize(AuthConstants.HAS_READ_ASSETS_PRIVILEGE)
   public List<Map<String, Object>> getAll() throws IOException {
-      return getGenericStorage().findAll(APP_DOC_TYPE);
+    return getGenericStorage().findAll(APP_DOC_TYPE);
   }
 
   @POST
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Authentication.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Authentication.java
index 679257c96..d38536524 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Authentication.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Authentication.java
@@ -22,7 +22,11 @@ import org.apache.streampipes.commons.exceptions.UserNotFoundException;
 import org.apache.streampipes.commons.exceptions.UsernameAlreadyTakenException;
 import org.apache.streampipes.config.backend.BackendConfig;
 import org.apache.streampipes.config.backend.model.GeneralConfig;
-import org.apache.streampipes.model.client.user.*;
+import org.apache.streampipes.model.client.user.JwtAuthenticationResponse;
+import org.apache.streampipes.model.client.user.LoginRequest;
+import org.apache.streampipes.model.client.user.Principal;
+import org.apache.streampipes.model.client.user.RegistrationData;
+import org.apache.streampipes.model.client.user.UserAccount;
 import org.apache.streampipes.model.message.ErrorMessage;
 import org.apache.streampipes.model.message.NotificationType;
 import org.apache.streampipes.model.message.Notifications;
@@ -31,15 +35,23 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.user.management.jwt.JwtTokenProvider;
 import org.apache.streampipes.user.management.model.PrincipalUserDetails;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.context.SecurityContextHolder;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -56,7 +68,8 @@ public class Authentication extends AbstractRestResource {
   @Path("/login")
   public Response doLogin(LoginRequest token) {
     try {
-      org.springframework.security.core.Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(token.getUsername(), token.getPassword()));
+      org.springframework.security.core.Authentication authentication = authenticationManager.authenticate(
+          new UsernamePasswordAuthenticationToken(token.getUsername(), token.getPassword()));
       SecurityContextHolder.getContext().setAuthentication(authentication);
       return processAuth(authentication);
     } catch (BadCredentialsException e) {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AutoComplete.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AutoComplete.java
index b18c4a36d..27d2a475e 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AutoComplete.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AutoComplete.java
@@ -31,11 +31,11 @@ import javax.ws.rs.core.Response;
 @Path("/v2/autocomplete")
 public class AutoComplete extends AbstractRestResource {
 
-    @GET
-    @Path("semantic-type")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getSemanticTypes(@QueryParam("text") String text) {
-        return ok(SemanticTypeRegistry.INSTANCE.matches(text));
-    }
+  @GET
+  @Path("semantic-type")
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response getSemanticTypes(@QueryParam("text") String text) {
+    return ok(SemanticTypeRegistry.INSTANCE.matches(text));
+  }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/CategoryResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/CategoryResource.java
index 5bc62d428..d95866228 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/CategoryResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/CategoryResource.java
@@ -24,9 +24,17 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -34,78 +42,78 @@ import java.util.Map;
 public class CategoryResource extends AbstractRestResource {
 
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response getAll() {
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .getAllCategories()
-        );
-    }
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getAll() {
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .getAllCategories()
+    );
+  }
 
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response add(Category category) {
-        String categoryId = StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .storeCategory(category);
+  @POST
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response add(Category category) {
+    String categoryId = StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .storeCategory(category);
 
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI().getCategory(categoryId));
-    }
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI().getCategory(categoryId));
+  }
 
-    @GET
-    @Path("/{categoryId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response getCategory(@PathParam("categoryId") String categoryId) {
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .getCategory(categoryId));
-    }
+  @GET
+  @Path("/{categoryId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getCategory(@PathParam("categoryId") String categoryId) {
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .getCategory(categoryId));
+  }
 
-    @PUT
-    @Path("/{categoryId}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response update(@PathParam("categoryId") String categoryId, Category category) {
-        if (!categoryId.equals(category.getId())) {
-            String resString = "CategoryId not the same as in message body";
-            Map<String, Object> errorDetails = new HashMap<>();
-            errorDetails.put("message", resString);
-            return badRequest(errorDetails);
-        }
-        StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .updateCategory(category);
-
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI().getCategory(categoryId));
+  @PUT
+  @Path("/{categoryId}")
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response update(@PathParam("categoryId") String categoryId, Category category) {
+    if (!categoryId.equals(category.getId())) {
+      String resString = "CategoryId not the same as in message body";
+      Map<String, Object> errorDetails = new HashMap<>();
+      errorDetails.put("message", resString);
+      return badRequest(errorDetails);
     }
+    StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .updateCategory(category);
 
-    @DELETE
-    @Path("/{categoryId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response delete(@PathParam("categoryId") String key) {
-        StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .deleteCategory(key);
-        StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .deleteAllForCategory(key);
-        return ok();
-    }
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI().getCategory(categoryId));
+  }
+
+  @DELETE
+  @Path("/{categoryId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response delete(@PathParam("categoryId") String key) {
+    StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .deleteCategory(key);
+    StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .deleteAllForCategory(key);
+    return ok();
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/EmailResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/EmailResource.java
index 6ecd9d6fc..021c4961f 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/EmailResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/EmailResource.java
@@ -39,7 +39,8 @@ public class EmailResource extends AbstractAuthGuardedRestResource {
       new MailSender().sendEmail(email);
       return ok();
     } else {
-      return serverError("Could not send email - no valid mail configuration provided in StreamPipes (go to settings -> mail)");
+      return serverError(
+          "Could not send email - no valid mail configuration provided in StreamPipes (go to settings -> mail)");
     }
   }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/FunctionsResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/FunctionsResource.java
index 04ee09b87..029708d09 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/FunctionsResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/FunctionsResource.java
@@ -24,9 +24,16 @@ import org.apache.streampipes.model.function.FunctionDefinition;
 import org.apache.streampipes.model.message.Notifications;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 
 @Path("/v2/functions")
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/GenericStorageResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/GenericStorageResource.java
index 5f140a465..694abaa2c 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/GenericStorageResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/GenericStorageResource.java
@@ -22,14 +22,23 @@ import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResourc
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.storage.api.IGenericStorage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -38,90 +47,90 @@ import java.util.Map;
 @Component
 public class GenericStorageResource extends AbstractAuthGuardedRestResource {
 
-    public static final String APP_DOC_NAME = "appDocName";
+  public static final String APP_DOC_NAME = "appDocName";
 
-    private static final Logger LOG = LoggerFactory.getLogger(GenericStorageResource.class);
+  private static final Logger LOG = LoggerFactory.getLogger(GenericStorageResource.class);
 
-    @GET
-    @Path("{appDocName}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @PreAuthorize(AuthConstants.HAS_READ_GENERIC_STORAGE_PRIVILEGE)
-    public Response getAll(@PathParam(APP_DOC_NAME) String appDocName) {
-      try {
-        List<Map<String, Object>> assets = getGenericStorage().findAll(appDocName);
-        return ok(assets);
-      } catch (IOException e) {
-        LOG.error("Could not connect to storage", e);
-        return fail();
-      }
-    }
-
-    @POST
-    @Path("{appDocName}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @PreAuthorize(AuthConstants.HAS_WRITE_GENERIC_STORAGE_PRIVILEGE)
-    public Response create(@PathParam(APP_DOC_NAME) String appDocName,
-                           String document) {
-      try {
-        Map<String, Object> obj = getGenericStorage().create(document);
-        return ok(obj);
-      } catch (IOException e) {
-        LOG.error("Could not connect to storage", e);
-        return fail();
-      }
+  @GET
+  @Path("{appDocName}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @PreAuthorize(AuthConstants.HAS_READ_GENERIC_STORAGE_PRIVILEGE)
+  public Response getAll(@PathParam(APP_DOC_NAME) String appDocName) {
+    try {
+      List<Map<String, Object>> assets = getGenericStorage().findAll(appDocName);
+      return ok(assets);
+    } catch (IOException e) {
+      LOG.error("Could not connect to storage", e);
+      return fail();
     }
+  }
 
-    @GET
-    @Path("{appDocName}/{id}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @PreAuthorize(AuthConstants.HAS_READ_GENERIC_STORAGE_PRIVILEGE)
-    public Response getCategory(@PathParam(APP_DOC_NAME) String appDocName,
-                                @PathParam("id") String documentId) {
-      try {
-        Map<String, Object> obj = getGenericStorage().findOne(documentId);
-        return ok(obj);
-      } catch (IOException e) {
-        LOG.error("Could not connect to storage", e);
-        return fail();
-      }
+  @POST
+  @Path("{appDocName}")
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  @PreAuthorize(AuthConstants.HAS_WRITE_GENERIC_STORAGE_PRIVILEGE)
+  public Response create(@PathParam(APP_DOC_NAME) String appDocName,
+                         String document) {
+    try {
+      Map<String, Object> obj = getGenericStorage().create(document);
+      return ok(obj);
+    } catch (IOException e) {
+      LOG.error("Could not connect to storage", e);
+      return fail();
     }
+  }
 
-    @PUT
-    @Path("{appDocName}/{id}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @PreAuthorize(AuthConstants.HAS_WRITE_GENERIC_STORAGE_PRIVILEGE)
-    public Response update(@PathParam(APP_DOC_NAME) String appDocName,
-                           @PathParam("id") String documentId,
-                           String document) {
-      try {
-        Map<String, Object> obj = getGenericStorage().update(documentId, document);
-        return ok(obj);
-      } catch (IOException e) {
-        LOG.error("Could not connect to storage", e);
-        return fail();
-      }
+  @GET
+  @Path("{appDocName}/{id}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @PreAuthorize(AuthConstants.HAS_READ_GENERIC_STORAGE_PRIVILEGE)
+  public Response getCategory(@PathParam(APP_DOC_NAME) String appDocName,
+                              @PathParam("id") String documentId) {
+    try {
+      Map<String, Object> obj = getGenericStorage().findOne(documentId);
+      return ok(obj);
+    } catch (IOException e) {
+      LOG.error("Could not connect to storage", e);
+      return fail();
     }
+  }
 
-    @DELETE
-    @Path("{appDocName}/{id}/{rev}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @PreAuthorize(AuthConstants.HAS_WRITE_GENERIC_STORAGE_PRIVILEGE)
-    public Response delete(@PathParam(APP_DOC_NAME) String appDocName,
-                           @PathParam("id") String documentId,
-                           @PathParam("rev") String rev) {
-      try {
-        getGenericStorage().delete(documentId, rev);
-        return ok();
-      } catch (IOException e) {
-        LOG.error("Could not connect to storage", e);
-        return fail();
-      }
+  @PUT
+  @Path("{appDocName}/{id}")
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  @PreAuthorize(AuthConstants.HAS_WRITE_GENERIC_STORAGE_PRIVILEGE)
+  public Response update(@PathParam(APP_DOC_NAME) String appDocName,
+                         @PathParam("id") String documentId,
+                         String document) {
+    try {
+      Map<String, Object> obj = getGenericStorage().update(documentId, document);
+      return ok(obj);
+    } catch (IOException e) {
+      LOG.error("Could not connect to storage", e);
+      return fail();
     }
+  }
 
-    private IGenericStorage getGenericStorage() {
-      return StorageDispatcher.INSTANCE.getNoSqlStore().getGenericStorage();
+  @DELETE
+  @Path("{appDocName}/{id}/{rev}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @PreAuthorize(AuthConstants.HAS_WRITE_GENERIC_STORAGE_PRIVILEGE)
+  public Response delete(@PathParam(APP_DOC_NAME) String appDocName,
+                         @PathParam("id") String documentId,
+                         @PathParam("rev") String rev) {
+    try {
+      getGenericStorage().delete(documentId, rev);
+      return ok();
+    } catch (IOException e) {
+      LOG.error("Could not connect to storage", e);
+      return fail();
     }
+  }
 
+  private IGenericStorage getGenericStorage() {
+    return StorageDispatcher.INSTANCE.getNoSqlStore().getGenericStorage();
   }
+
+}
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/LabelResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/LabelResource.java
index 0f80f5922..304646936 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/LabelResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/LabelResource.java
@@ -24,115 +24,123 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.HashMap;
 import java.util.Map;
 
 @Path("/v2/labeling/label")
 public class LabelResource extends AbstractRestResource {
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response getAllLabels() {
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .getAllLabels());
-    }
-
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response addLabel(Label label) {
-        Category categoryForLabel = StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .getCategory(label.getCategoryId());
-        if (categoryForLabel == null) {
-            String resString = String.format("Category with categoryId %s does not exist", label.getCategoryId());
-            Map<String, Object> errorDetails = new HashMap<>();
-            errorDetails.put("message", resString);
-            return badRequest(errorDetails);
-        }
-        String labelId = StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .storeLabel(label);
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getAllLabels() {
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .getAllLabels());
+  }
 
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .getLabel(labelId));
+  @POST
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response addLabel(Label label) {
+    Category categoryForLabel = StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .getCategory(label.getCategoryId());
+    if (categoryForLabel == null) {
+      String resString = String.format("Category with categoryId %s does not exist", label.getCategoryId());
+      Map<String, Object> errorDetails = new HashMap<>();
+      errorDetails.put("message", resString);
+      return badRequest(errorDetails);
     }
+    String labelId = StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .storeLabel(label);
 
-    @GET
-    @Path("/{labelId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response getLabel(@PathParam("labelId") String labelId) {
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .getLabel(labelId));
-    }
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .getLabel(labelId));
+  }
 
-    @PUT
-    @Path("/{labelId}")
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response updateLabel(@PathParam("labelId") String labelId, Label label) {
-        if (!labelId.equals(label.getId())) {
-            String resString = "LabelId not the same as in message body";
-            Map<String, Object> errorDetails = new HashMap<>();
-            errorDetails.put("message", resString);
-            return badRequest(errorDetails);
-        }
-        Category categoryForLabel = StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getCategoryStorageAPI()
-                .getCategory(label.getCategoryId());
-        if (categoryForLabel == null) {
-            String resString = String.format("Category with categoryId %s does not exist", label.getCategoryId());
-            Map<String, Object> errorDetails = new HashMap<>();
-            errorDetails.put("message", resString);
-            return badRequest(errorDetails);
-        }
-        StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .updateLabel(label);
+  @GET
+  @Path("/{labelId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getLabel(@PathParam("labelId") String labelId) {
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .getLabel(labelId));
+  }
 
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .getLabel(labelId));
+  @PUT
+  @Path("/{labelId}")
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response updateLabel(@PathParam("labelId") String labelId, Label label) {
+    if (!labelId.equals(label.getId())) {
+      String resString = "LabelId not the same as in message body";
+      Map<String, Object> errorDetails = new HashMap<>();
+      errorDetails.put("message", resString);
+      return badRequest(errorDetails);
     }
-
-    @DELETE
-    @Path("/{labelId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response deleteLabel(@PathParam("labelId") String labelId) {
-        StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .deleteLabel(labelId);
-        return ok();
+    Category categoryForLabel = StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getCategoryStorageAPI()
+        .getCategory(label.getCategoryId());
+    if (categoryForLabel == null) {
+      String resString = String.format("Category with categoryId %s does not exist", label.getCategoryId());
+      Map<String, Object> errorDetails = new HashMap<>();
+      errorDetails.put("message", resString);
+      return badRequest(errorDetails);
     }
+    StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .updateLabel(label);
 
-    @GET
-    @Path("category/{categoryId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response getLabelsForCategory(@PathParam("categoryId") String categoryId) {
-        return ok(StorageDispatcher.INSTANCE
-                .getNoSqlStore()
-                .getLabelStorageAPI()
-                .getAllForCategory(categoryId));
-    }
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .getLabel(labelId));
+  }
+
+  @DELETE
+  @Path("/{labelId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response deleteLabel(@PathParam("labelId") String labelId) {
+    StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .deleteLabel(labelId);
+    return ok();
+  }
+
+  @GET
+  @Path("category/{categoryId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getLabelsForCategory(@PathParam("categoryId") String categoryId) {
+    return ok(StorageDispatcher.INSTANCE
+        .getNoSqlStore()
+        .getLabelStorageAPI()
+        .getAllForCategory(categoryId));
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/MeasurementUnitResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/MeasurementUnitResource.java
index 50682b02f..75a095f4f 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/MeasurementUnitResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/MeasurementUnitResource.java
@@ -1,19 +1,21 @@
 /*
- *   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
+ * 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
+ *    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.
  *
- *   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.rest.impl;
 
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Notification.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Notification.java
index 14925bd2d..5ae43d0d1 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Notification.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Notification.java
@@ -22,81 +22,89 @@ import org.apache.streampipes.model.message.Notifications;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 @Path("/v2/notifications")
 public class Notification extends AbstractAuthGuardedRestResource {
 
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    public Response addNotification(org.apache.streampipes.model.Notification notification) {
-        getNotificationStorage().addNotification(notification);
-        return ok();
-    }
+  @POST
+  @Consumes(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response addNotification(org.apache.streampipes.model.Notification notification) {
+    getNotificationStorage().addNotification(notification);
+    return ok();
+  }
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    @Path("/offset")
-    public Response getNotifications(@QueryParam("notificationType") String notificationTypeId,
-                                     @QueryParam("offset") Integer offset,
-                                     @QueryParam("count") Integer count) {
-        return ok(getNotificationStorage()
-                .getAllNotifications(notificationTypeId, offset, count));
-    }
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  @Path("/offset")
+  public Response getNotifications(@QueryParam("notificationType") String notificationTypeId,
+                                   @QueryParam("offset") Integer offset,
+                                   @QueryParam("count") Integer count) {
+    return ok(getNotificationStorage()
+        .getAllNotifications(notificationTypeId, offset, count));
+  }
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    @Path("/time")
-    public Response getNotifications(@QueryParam("startTime") long startTime) {
-        return ok(getNotificationStorage()
-                .getAllNotificationsFromTimestamp(startTime));
-    }
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  @Path("/time")
+  public Response getNotifications(@QueryParam("startTime") long startTime) {
+    return ok(getNotificationStorage()
+        .getAllNotificationsFromTimestamp(startTime));
+  }
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/count")
-    public Response getUnreadNotificationsCount() {
-        return ok(getNotificationStorage()
-                .getUnreadNotificationsCount(getAuthenticatedUserSid()));
-    }
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/count")
+  public Response getUnreadNotificationsCount() {
+    return ok(getNotificationStorage()
+        .getUnreadNotificationsCount(getAuthenticatedUserSid()));
+  }
 
-    @GET
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/unread")
-    public Response getUnreadNotifications() {
-        return ok(getNotificationStorage()
-                .getUnreadNotifications());
-    }
-
-    @DELETE
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/{notificationId}")
-    public Response deleteNotification(@PathParam("notificationId") String notificationId) {
-        boolean success = getNotificationStorage()
-                .deleteNotification(notificationId);
-        if (success) {
-            return ok(Notifications.success("Notification deleted"));
-        } else {
-            return ok(Notifications.error("Could not delete notification"));
-        }
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/unread")
+  public Response getUnreadNotifications() {
+    return ok(getNotificationStorage()
+        .getUnreadNotifications());
+  }
 
+  @DELETE
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/{notificationId}")
+  public Response deleteNotification(@PathParam("notificationId") String notificationId) {
+    boolean success = getNotificationStorage()
+        .deleteNotification(notificationId);
+    if (success) {
+      return ok(Notifications.success("Notification deleted"));
+    } else {
+      return ok(Notifications.error("Could not delete notification"));
     }
 
-    @PUT
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/{notificationId}")
-    public Response modifyNotificationStatus(@PathParam("notificationId") String notificationId) {
-        boolean success = getNotificationStorage()
-                .changeNotificationStatus(notificationId);
-        if (success) {
-            return ok(Notifications.success("Ok"));
-        } else {
-            return ok(Notifications.error("Error"));
-        }
+  }
+
+  @PUT
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/{notificationId}")
+  public Response modifyNotificationStatus(@PathParam("notificationId") String notificationId) {
+    boolean success = getNotificationStorage()
+        .changeNotificationStatus(notificationId);
+    if (success) {
+      return ok(Notifications.success("Ok"));
+    } else {
+      return ok(Notifications.error("Error"));
     }
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyMeasurementUnit.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyMeasurementUnit.java
index a6056e691..e89c49e62 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyMeasurementUnit.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyMeasurementUnit.java
@@ -31,31 +31,31 @@ import javax.ws.rs.core.Response;
 @Path("/v2/units")
 public class OntologyMeasurementUnit extends AbstractRestResource {
 
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@Path("/instances")
-	public Response getAllUnits() {
-		return ok(UnitProvider
-				.INSTANCE
-				.getAvailableUnits());
-	}
-	
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@Path("/types")
-	public Response getAllUnitTypes() {
-		return ok(UnitProvider
-				.INSTANCE
-				.getAvailableUnitTypes());
-	}
-
-	@GET
-	@Path("/instances/{resourceId}")
-	@Produces(MediaType.APPLICATION_JSON)
-	public Response getUnit(@PathParam("resourceId") String resourceUri) {
-		return ok(UnitProvider
-				.INSTANCE
-				.getUnit(resourceUri));
-	}
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/instances")
+  public Response getAllUnits() {
+    return ok(UnitProvider
+        .INSTANCE
+        .getAvailableUnits());
+  }
+
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/types")
+  public Response getAllUnitTypes() {
+    return ok(UnitProvider
+        .INSTANCE
+        .getAvailableUnitTypes());
+  }
+
+  @GET
+  @Path("/instances/{resourceId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response getUnit(@PathParam("resourceId") String resourceUri) {
+    return ok(UnitProvider
+        .INSTANCE
+        .getUnit(resourceUri));
+  }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCache.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCache.java
index f2b8d16eb..55739a0dc 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCache.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCache.java
@@ -20,7 +20,11 @@ package org.apache.streampipes.rest.impl;
 import org.apache.streampipes.manager.pipeline.PipelineCacheManager;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataCache.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataCache.java
index 4659b76ce..492b5bbc8 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataCache.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataCache.java
@@ -20,7 +20,11 @@ package org.apache.streampipes.rest.impl;
 import org.apache.streampipes.manager.pipeline.PipelineCanvasMetadataCacheManager;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -37,7 +41,7 @@ public class PipelineCanvasMetadataCache extends AbstractAuthGuardedRestResource
   @GET
   @Produces(MediaType.APPLICATION_JSON)
   public Response getCachedCanvasMetadata() {
-      String result = PipelineCanvasMetadataCacheManager.getCachedCanvasMetadata(getAuthenticatedUsername());
+    String result = PipelineCanvasMetadataCacheManager.getCachedCanvasMetadata(getAuthenticatedUsername());
     if (result != null) {
       return ok(result);
     } else {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataResource.java
index 2ecf4c6b8..52f89c7c2 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCanvasMetadataResource.java
@@ -22,7 +22,13 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.api.IPipelineCanvasMetadataStorage;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
@@ -36,7 +42,7 @@ public class PipelineCanvasMetadataResource extends AbstractRestResource {
   public Response getPipelineCanvasMetadataForPipeline(@PathParam("pipelineId") String pipelineId) {
     try {
       return ok(getPipelineCanvasMetadataStorage()
-              .getPipelineCanvasMetadataForPipeline(pipelineId));
+          .getPipelineCanvasMetadataForPipeline(pipelineId));
     } catch (IllegalArgumentException e) {
       return badRequest();
     }
@@ -49,7 +55,7 @@ public class PipelineCanvasMetadataResource extends AbstractRestResource {
   public Response getPipelineCanvasMetadata(@PathParam("canvasId") String pipelineCanvasId) {
     try {
       return ok(getPipelineCanvasMetadataStorage()
-              .getElementById(pipelineCanvasId));
+          .getElementById(pipelineCanvasId));
     } catch (IllegalArgumentException e) {
       return badRequest();
     }
@@ -78,7 +84,8 @@ public class PipelineCanvasMetadataResource extends AbstractRestResource {
   @Path("/pipeline/{pipelineId}")
   @JacksonSerialized
   public Response deletePipelineCanvasMetadataForPipeline(@PathParam("pipelineId") String pipelineId) {
-    PipelineCanvasMetadata metadata = getPipelineCanvasMetadataStorage().getPipelineCanvasMetadataForPipeline(pipelineId);
+    PipelineCanvasMetadata metadata =
+        getPipelineCanvasMetadataStorage().getPipelineCanvasMetadataForPipeline(pipelineId);
     getPipelineCanvasMetadataStorage().deleteElement(metadata);
     return ok();
   }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCategory.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCategory.java
index 9ef53d92d..d6ac7b2d4 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCategory.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineCategory.java
@@ -23,44 +23,56 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.api.IPipelineCategoryStorage;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 @Path("/v2/pipelinecategories")
 public class PipelineCategory extends AbstractRestResource {
 
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response getCategories() {
-		return ok(getPipelineCategoryStorage()
-				.getPipelineCategories());
-	}
-	
-	@POST
-	@Produces(MediaType.APPLICATION_JSON)
-	@Consumes(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response addCategory(org.apache.streampipes.model.pipeline.PipelineCategory pipelineCategory) {
-		boolean success = getPipelineCategoryStorage()
-				.addPipelineCategory(pipelineCategory);
-		if (success) return ok(Notifications.success("Category successfully stored. "));
-		else return ok(Notifications.error("Could not create category."));
-	}
-	
-	@DELETE
-	@Path("/{categoryId}")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response removeCategory(@PathParam("categoryId") String categoryId) {
-		boolean success = getPipelineCategoryStorage()
-				.deletePipelineCategory(categoryId);
-		if (success) return ok(Notifications.success("Category successfully deleted. "));
-		else return ok(Notifications.error("Could not delete category."));
-	}
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getCategories() {
+    return ok(getPipelineCategoryStorage()
+        .getPipelineCategories());
+  }
 
-	private IPipelineCategoryStorage getPipelineCategoryStorage() {
-		return getNoSqlStorage().getPipelineCategoryStorageApi();
-	}
+  @POST
+  @Produces(MediaType.APPLICATION_JSON)
+  @Consumes(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response addCategory(org.apache.streampipes.model.pipeline.PipelineCategory pipelineCategory) {
+    boolean success = getPipelineCategoryStorage()
+        .addPipelineCategory(pipelineCategory);
+    if (success) {
+      return ok(Notifications.success("Category successfully stored. "));
+    } else {
+      return ok(Notifications.error("Could not create category."));
+    }
+  }
+
+  @DELETE
+  @Path("/{categoryId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response removeCategory(@PathParam("categoryId") String categoryId) {
+    boolean success = getPipelineCategoryStorage()
+        .deletePipelineCategory(categoryId);
+    if (success) {
+      return ok(Notifications.success("Category successfully deleted. "));
+    } else {
+      return ok(Notifications.error("Could not delete category."));
+    }
+  }
+
+  private IPipelineCategoryStorage getPipelineCategoryStorage() {
+    return getNoSqlStorage().getPipelineCategoryStorageApi();
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementAsset.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementAsset.java
index 68e14324a..ff099540e 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementAsset.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementAsset.java
@@ -19,6 +19,7 @@ package org.apache.streampipes.rest.impl;
 
 import org.apache.streampipes.manager.assets.AssetManager;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -28,6 +29,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 
 @Path("/v2/pe")
@@ -61,7 +63,7 @@ public class PipelineElementAsset extends AbstractRestResource {
   @Path("{appId}/assets/{assetName}")
   @Produces("image/png")
   public Response getAsset(@PathParam("appId") String appId, @PathParam("assetName") String
-          assetName) {
+      assetName) {
     try {
       byte[] asset = AssetManager.getAsset(appId, assetName);
       return ok(asset);
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementCategory.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementCategory.java
index 715c84366..99add2d68 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementCategory.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementCategory.java
@@ -32,48 +32,49 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 import java.util.stream.Collectors;
 
 @Path("/v2/categories")
 public class PipelineElementCategory extends AbstractRestResource {
 
-	@GET
-	@Path("/ep")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response getEps() {
-		return ok(makeCategories(StorageManager.INSTANCE.getPipelineElementStorage().getAllDataStreams()));
-	}
+  @GET
+  @Path("/ep")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getEps() {
+    return ok(makeCategories(StorageManager.INSTANCE.getPipelineElementStorage().getAllDataStreams()));
+  }
+
+  @GET
+  @Path("/epa")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getEpaCategories() {
+    return ok(DataProcessorType.values());
+  }
 
-	@GET
-	@Path("/epa")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response getEpaCategories() {
-		return ok(DataProcessorType.values());
-	}
+  @GET
+  @Path("/adapter")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getAdapterCategories() {
+    return ok(AdapterType.values());
+  }
 
-	@GET
-	@Path("/adapter")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response getAdapterCategories() {
-		return ok(AdapterType.values());
-	}
+  @GET
+  @Path("/ec")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  public Response getEcCategories() {
+    return ok(DataSinkType.values());
+  }
 
-	@GET
-	@Path("/ec")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	public Response getEcCategories() {
-		return ok(DataSinkType.values());
-	}
-	
-	private List<Category> makeCategories(List<SpDataStream> streams) {
-		return streams
-				.stream()
-				.map(p -> new Category(p.getElementId(), p.getName(), p.getDescription()))
-				.collect(Collectors.toList());
-	}
+  private List<Category> makeCategories(List<SpDataStream> streams) {
+    return streams
+        .stream()
+        .map(p -> new Category(p.getElementId(), p.getName(), p.getDescription()))
+        .collect(Collectors.toList());
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
index 6c07af6c7..19330b36b 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementFile.java
@@ -21,14 +21,23 @@ import org.apache.streampipes.manager.file.FileManager;
 import org.apache.streampipes.model.file.FileMetadata;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
+
 import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
 import org.glassfish.jersey.media.multipart.FormDataParam;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.InputStream;
 
 @Path("/v2/files")
@@ -41,7 +50,8 @@ public class PipelineElementFile extends AbstractAuthGuardedRestResource {
   public Response storeFile(@FormDataParam("file_upload") InputStream uploadedInputStream,
                             @FormDataParam("file_upload") FormDataContentDisposition fileDetail) {
     try {
-      FileMetadata metadata = FileManager.storeFile(getAuthenticatedUsername(), fileDetail.getFileName(), uploadedInputStream);
+      FileMetadata metadata =
+          FileManager.storeFile(getAuthenticatedUsername(), fileDetail.getFileName(), uploadedInputStream);
       return ok(metadata);
     } catch (Exception e) {
       return fail();
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementPreview.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementPreview.java
index bd91ca347..319dadc0e 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementPreview.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementPreview.java
@@ -23,7 +23,13 @@ import org.apache.streampipes.model.preview.PipelinePreviewModel;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementRuntimeInfo.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementRuntimeInfo.java
index 7806bca17..ebb880ae9 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementRuntimeInfo.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineElementRuntimeInfo.java
@@ -39,7 +39,8 @@ public class PipelineElementRuntimeInfo extends AbstractRestResource {
   @Produces(MediaType.APPLICATION_JSON)
   @Consumes(MediaType.APPLICATION_JSON)
   public Response getRuntimeInfo(SpDataStream spDataStream) {
-    // TODO currently only supported for data streams. For data sets, a dummy pipeline needs to be generated to get runtime values.
+    // TODO currently only supported for data streams.
+    // For data sets, a dummy pipeline needs to be generated to get runtime values.
     try {
       return ok(Operations.getRuntimeInfo(spDataStream));
     } catch (SpRuntimeException e) {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineMonitoring.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineMonitoring.java
index 90be6c198..86ccc8d3d 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineMonitoring.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineMonitoring.java
@@ -18,7 +18,6 @@
 package org.apache.streampipes.rest.impl;
 
 import org.apache.streampipes.manager.monitoring.pipeline.ExtensionsLogProvider;
-import org.apache.streampipes.rest.api.IPipelineMonitoring;
 
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
@@ -28,12 +27,11 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 @Path("/v2/pipeline-monitoring")
-public class PipelineMonitoring extends AbstractMonitoringResource implements IPipelineMonitoring {
+public class PipelineMonitoring extends AbstractMonitoringResource {
 
   @Path("pipeline/{pipelineId}/logs")
   @GET
   @Produces(MediaType.APPLICATION_JSON)
-  @Override
   public Response getLogInfoForPipeline(@PathParam("pipelineId") String pipelineId) {
     return ok(ExtensionsLogProvider.INSTANCE.getLogInfosForPipeline(pipelineId));
   }
@@ -41,7 +39,6 @@ public class PipelineMonitoring extends AbstractMonitoringResource implements IP
   @Path("pipeline/{pipelineId}/metrics")
   @GET
   @Produces(MediaType.APPLICATION_JSON)
-  @Override
   public Response getMetricsInfoForPipeline(@PathParam("pipelineId") String pipelineId) {
     return ok(ExtensionsLogProvider.INSTANCE.getMetricInfosForPipeline(pipelineId));
   }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineResource.java
index fe7bb1afa..c82482bf3 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineResource.java
@@ -18,13 +18,8 @@
 
 package org.apache.streampipes.rest.impl;
 
-import com.google.gson.JsonSyntaxException;
-import io.swagger.v3.oas.annotations.Hidden;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.media.ArraySchema;
-import io.swagger.v3.oas.annotations.media.Content;
-import io.swagger.v3.oas.annotations.media.Schema;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
+
+
 import org.apache.streampipes.commons.exceptions.NoMatchingFormatException;
 import org.apache.streampipes.commons.exceptions.NoMatchingJsonSchemaException;
 import org.apache.streampipes.commons.exceptions.NoMatchingProtocolException;
@@ -46,6 +41,14 @@ import org.apache.streampipes.model.pipeline.PipelineOperationStatus;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
+import com.google.gson.JsonSyntaxException;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.springframework.security.access.prepost.PostAuthorize;
 import org.springframework.security.access.prepost.PostFilter;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
index 94f08be16..2afc10fd1 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/PipelineTemplate.java
@@ -26,9 +26,14 @@ import org.apache.streampipes.model.template.PipelineTemplateDescription;
 import org.apache.streampipes.model.template.PipelineTemplateInvocation;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 
-import javax.ws.rs.*;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,9 +48,9 @@ public class PipelineTemplate extends AbstractAuthGuardedRestResource {
     List<SpDataStream> datasets = new ArrayList<>();
 
     sources.stream()
-            .filter(stream -> !(stream instanceof SpDataSet))
-            .map(SpDataStream::new)
-            .forEach(datasets::add);
+        .filter(stream -> !(stream instanceof SpDataSet))
+        .map(SpDataStream::new)
+        .forEach(datasets::add);
 
     return ok((new SpDataStreamContainer(datasets)));
   }
@@ -59,10 +64,10 @@ public class PipelineTemplate extends AbstractAuthGuardedRestResource {
     List<SpDataStream> datasets = new ArrayList<>();
 
     sources
-            .stream()
-            .filter(stream -> stream instanceof SpDataSet)
-            .map(stream -> new SpDataSet((SpDataSet) stream))
-            .forEach(datasets::add);
+        .stream()
+        .filter(stream -> stream instanceof SpDataSet)
+        .map(stream -> new SpDataSet((SpDataSet) stream))
+        .forEach(datasets::add);
 
     return ok(new SpDataStreamContainer(datasets));
   }
@@ -75,7 +80,8 @@ public class PipelineTemplate extends AbstractAuthGuardedRestResource {
     if (pipelineTemplateId != null) {
       SpDataStream dataStream = getDataStream(streamId);
       PipelineTemplateDescription pipelineTemplateDescription = getPipelineTemplateDescription(pipelineTemplateId);
-      PipelineTemplateInvocation invocation = Operations.getPipelineInvocationTemplate(dataStream, pipelineTemplateDescription);
+      PipelineTemplateInvocation invocation =
+          Operations.getPipelineInvocationTemplate(dataStream, pipelineTemplateDescription);
       PipelineTemplateInvocation clonedInvocation = new PipelineTemplateInvocation(invocation);
       return ok(new PipelineTemplateInvocation(clonedInvocation));
     } else {
@@ -88,7 +94,7 @@ public class PipelineTemplate extends AbstractAuthGuardedRestResource {
   public Response generatePipeline(PipelineTemplateInvocation pipelineTemplateInvocation) {
 
     PipelineOperationStatus status = Operations
-            .handlePipelineTemplateInvocation(getAuthenticatedUserSid(), pipelineTemplateInvocation);
+        .handlePipelineTemplateInvocation(getAuthenticatedUserSid(), pipelineTemplateInvocation);
 
     return ok(status);
 
@@ -97,11 +103,11 @@ public class PipelineTemplate extends AbstractAuthGuardedRestResource {
 
   private PipelineTemplateDescription getPipelineTemplateDescription(String pipelineTemplateId) {
     return Operations
-            .getAllPipelineTemplates()
-            .stream()
-            .filter(pt -> pt.getAppId().equals(pipelineTemplateId))
-            .findFirst()
-            .get();
+        .getAllPipelineTemplates()
+        .stream()
+        .filter(pt -> pt.getAppId().equals(pipelineTemplateId))
+        .findFirst()
+        .get();
   }
 
   private List<SpDataStream> getAllDataStreams() {
@@ -110,9 +116,9 @@ public class PipelineTemplate extends AbstractAuthGuardedRestResource {
 
   private SpDataStream getDataStream(String streamId) {
     return getAllDataStreams()
-            .stream()
-            .filter(sp -> sp.getElementId().equals(streamId))
-            .findFirst()
-            .get();
+        .stream()
+        .filter(sp -> sp.getElementId().equals(streamId))
+        .findFirst()
+        .get();
   }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ResetResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ResetResource.java
index a37296c45..f7b0d83ab 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ResetResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ResetResource.java
@@ -18,12 +18,13 @@
 
 package org.apache.streampipes.rest.impl;
 
-import io.swagger.v3.oas.annotations.Operation;
 import org.apache.streampipes.model.message.Notifications;
 import org.apache.streampipes.model.message.SuccessMessage;
 import org.apache.streampipes.rest.ResetManagement;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
+import io.swagger.v3.oas.annotations.Operation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -35,16 +36,16 @@ import javax.ws.rs.core.Response;
 
 @Path("/v2/reset")
 public class ResetResource extends AbstractAuthGuardedRestResource {
-    private static final Logger logger = LoggerFactory.getLogger(ResetResource.class);
+  private static final Logger logger = LoggerFactory.getLogger(ResetResource.class);
 
-    @POST
-    @Produces(MediaType.APPLICATION_JSON)
-    @JacksonSerialized
-    @Operation(summary = "Resets StreamPipes instance")
-    public Response reset() {
-        ResetManagement.reset(getAuthenticatedUsername());
-        SuccessMessage message = Notifications.success("Reset of system successfully performed");
-        return ok(message);
-    }
+  @POST
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  @Operation(summary = "Resets StreamPipes instance")
+  public Response reset() {
+    ResetManagement.reset(getAuthenticatedUsername());
+    SuccessMessage message = Notifications.success("Reset of system successfully performed");
+    return ok(message);
+  }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/RestorePasswordResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/RestorePasswordResource.java
index 1897e2936..0f4a9bfb3 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/RestorePasswordResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/RestorePasswordResource.java
@@ -20,9 +20,15 @@ package org.apache.streampipes.rest.impl;
 import org.apache.streampipes.model.client.user.RegistrationData;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.security.NoSuchAlgorithmException;
 import java.security.spec.InvalidKeySpecException;
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Setup.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Setup.java
index 9badbcfd5..595cbf04b 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Setup.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/Setup.java
@@ -18,10 +18,12 @@
 
 package org.apache.streampipes.rest.impl;
 
-import com.google.gson.JsonObject;
+
 import org.apache.streampipes.config.backend.BackendConfig;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 
+import com.google.gson.JsonObject;
+
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/UserResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/UserResource.java
index 7ee83dd18..976c22ab3 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/UserResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/UserResource.java
@@ -18,7 +18,13 @@
 package org.apache.streampipes.rest.impl;
 
 import org.apache.streampipes.mail.MailSender;
-import org.apache.streampipes.model.client.user.*;
+import org.apache.streampipes.model.client.user.ChangePasswordRequest;
+import org.apache.streampipes.model.client.user.Principal;
+import org.apache.streampipes.model.client.user.PrincipalType;
+import org.apache.streampipes.model.client.user.RawUserApiToken;
+import org.apache.streampipes.model.client.user.Role;
+import org.apache.streampipes.model.client.user.ServiceAccount;
+import org.apache.streampipes.model.client.user.UserAccount;
 import org.apache.streampipes.model.message.Notifications;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
@@ -26,13 +32,23 @@ import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.user.management.encryption.SecretEncryptionManager;
 import org.apache.streampipes.user.management.service.TokenService;
 import org.apache.streampipes.user.management.util.PasswordUtil;
+
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
 import java.security.spec.InvalidKeySpecException;
@@ -183,7 +199,7 @@ public class UserResource extends AbstractAuthGuardedRestResource {
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_JSON)
   public Response updateUserAccountDetails(@PathParam("principalId") String principalId,
-                                    UserAccount user) {
+                                           UserAccount user) {
     String authenticatedUserId = getAuthenticatedUsername();
     if (user != null && (authenticatedUserId.equals(principalId) || isAdmin())) {
       UserAccount existingUser = (UserAccount) getPrincipalById(principalId);
@@ -208,7 +224,8 @@ public class UserResource extends AbstractAuthGuardedRestResource {
       try {
         if (PasswordUtil.validatePassword(user.getPassword(), existingUser.getPassword())) {
           existingUser.setUsername(user.getUsername());
-          if (getUserStorage().getAllUserAccounts().stream().noneMatch(u -> u.getUsername().equals(user.getUsername()))) {
+          if (getUserStorage().getAllUserAccounts().stream()
+              .noneMatch(u -> u.getUsername().equals(user.getUsername()))) {
             updateUser(existingUser, user, isAdmin(), existingUser.getPassword());
             getUserStorage().updateUser(existingUser);
             return ok();
@@ -234,7 +251,7 @@ public class UserResource extends AbstractAuthGuardedRestResource {
                                  ChangePasswordRequest passwordRequest) {
     String authenticatedUserId = getAuthenticatedUsername();
     UserAccount existingUser = (UserAccount) getPrincipalById(principalId);
-    if (principalId.equals(authenticatedUserId)  || isAdmin()) {
+    if (principalId.equals(authenticatedUserId) || isAdmin()) {
       try {
         String existingPw = passwordRequest.getExistingPassword();
         if (PasswordUtil.validatePassword(existingPw, existingUser.getPassword())) {
@@ -259,7 +276,7 @@ public class UserResource extends AbstractAuthGuardedRestResource {
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_JSON)
   public Response updateServiceAccountDetails(@PathParam("principalId") String principalId,
-                                           ServiceAccount user) {
+                                              ServiceAccount user) {
     String authenticatedUserId = getAuthenticatedUsername();
     if (user != null && (authenticatedUserId.equals(principalId) || isAdmin())) {
       Principal existingUser = getPrincipalById(principalId);
@@ -280,11 +297,11 @@ public class UserResource extends AbstractAuthGuardedRestResource {
 
   private boolean isAdmin() {
     return SecurityContextHolder
-            .getContext()
-            .getAuthentication()
-            .getAuthorities()
-            .stream()
-            .anyMatch(r -> r.getAuthority().equals(Role.ROLE_ADMIN.name()));
+        .getContext()
+        .getAuthentication()
+        .getAuthorities()
+        .stream()
+        .anyMatch(r -> r.getAuthority().equals(Role.ROLE_ADMIN.name()));
   }
 
   private void updateUser(UserAccount existingUser,
@@ -296,14 +313,14 @@ public class UserResource extends AbstractAuthGuardedRestResource {
       replacePermissions(user, existingUser);
     }
     user.setUserApiTokens(existingUser
-            .getUserApiTokens()
+        .getUserApiTokens()
+        .stream()
+        .filter(existingToken -> user.getUserApiTokens()
             .stream()
-            .filter(existingToken -> user.getUserApiTokens()
-                    .stream()
-                    .anyMatch(updatedToken -> existingToken
-                            .getTokenId()
-                            .equals(updatedToken.getTokenId())))
-            .collect(Collectors.toList()));
+            .anyMatch(updatedToken -> existingToken
+                .getTokenId()
+                .equals(updatedToken.getTokenId())))
+        .collect(Collectors.toList()));
   }
 
   private void encryptAndStore(UserAccount userAccount,
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ConsulConfig.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ConsulConfig.java
index 3ef8ed8bd..858577370 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ConsulConfig.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ConsulConfig.java
@@ -18,8 +18,7 @@
 
 package org.apache.streampipes.rest.impl.admin;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
+
 import org.apache.streampipes.config.backend.BackendConfig;
 import org.apache.streampipes.config.backend.MessagingSettings;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
@@ -29,14 +28,23 @@ import org.apache.streampipes.svcdiscovery.api.ISpKvManagement;
 import org.apache.streampipes.svcdiscovery.api.model.ConfigItem;
 import org.apache.streampipes.svcdiscovery.api.model.PeConfig;
 import org.apache.streampipes.svcdiscovery.consul.ConsulSpConfig;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -46,7 +54,7 @@ import java.util.Map;
 @Component
 public class ConsulConfig extends AbstractRestResource {
 
-  private static Logger LOG = LoggerFactory.getLogger(ConsulConfig.class);
+  private static final Logger LOG = LoggerFactory.getLogger(ConsulConfig.class);
 
   @GET
   @Produces(MediaType.APPLICATION_JSON)
@@ -101,7 +109,7 @@ public class ConsulConfig extends AbstractRestResource {
           if (!("true".equals(value) || "false".equals(value))) {
             LOG.error(value + " is not from the type: xs:boolean");
             return Response.status(Response.Status.BAD_REQUEST)
-                    .entity(value + " is not from the type: xs:boolean").build();
+                .entity(value + " is not from the type: xs:boolean").build();
           }
           break;
         case "xs:integer":
@@ -110,7 +118,7 @@ public class ConsulConfig extends AbstractRestResource {
           } catch (java.lang.NumberFormatException e) {
             LOG.error(value + " is not from the type: xs:integer");
             return Response.status(Response.Status.BAD_REQUEST)
-                    .entity(value + " is not from the type: xs:integer").build();
+                .entity(value + " is not from the type: xs:integer").build();
           }
           break;
         case "xs:double":
@@ -119,7 +127,7 @@ public class ConsulConfig extends AbstractRestResource {
           } catch (java.lang.NumberFormatException e) {
             LOG.error(value + " is not from the type: xs:double");
             return Response.status(Response.Status.BAD_REQUEST)
-                    .entity(value + " is not from the type: xs:double").build();
+                .entity(value + " is not from the type: xs:double").build();
           }
           break;
         case "xs:string":
@@ -127,7 +135,7 @@ public class ConsulConfig extends AbstractRestResource {
         default:
           LOG.error(configItem.getValueType() + " is not a supported type");
           return Response.status(Response.Status.BAD_REQUEST)
-                  .entity(configItem.getValueType() + " is not a supported type").build();
+              .entity(configItem.getValueType() + " is not a supported type").build();
       }
     }
 
@@ -137,7 +145,7 @@ public class ConsulConfig extends AbstractRestResource {
       JsonObject jsonObj = new Gson().toJsonTree(configItem).getAsJsonObject();
       jsonObj.entrySet().removeIf(e -> e.getKey().equals("key"));
       keyValueStore.updateConfig(configItem.getKey(), jsonObj.toString(),
-              configItem.isPassword());
+          configItem.isPassword());
     }
     return Response.status(Response.Status.OK).build();
   }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataExportResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataExportResource.java
index fff79451b..25d4f8171 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataExportResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataExportResource.java
@@ -22,6 +22,7 @@ import org.apache.streampipes.export.ExportManager;
 import org.apache.streampipes.model.export.ExportConfiguration;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
+
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
@@ -31,6 +32,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.util.List;
 
@@ -53,8 +55,8 @@ public class DataExportResource extends AbstractAuthGuardedRestResource {
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_OCTET_STREAM)
   public Response getExportPreview(ExportConfiguration exportConfiguration) throws IOException {
-      var applicationPackage = ExportManager.getExportPackage(exportConfiguration);
-      return ok(applicationPackage);
+    var applicationPackage = ExportManager.getExportPackage(exportConfiguration);
+    return ok(applicationPackage);
   }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataImportResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataImportResource.java
index 61b8b4f5b..0d1da02f5 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataImportResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/DataImportResource.java
@@ -22,6 +22,7 @@ import org.apache.streampipes.export.ImportManager;
 import org.apache.streampipes.model.export.AssetExportConfiguration;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
+
 import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
 import org.glassfish.jersey.media.multipart.FormDataParam;
 import org.slf4j.Logger;
@@ -35,6 +36,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -50,8 +52,9 @@ public class DataImportResource extends AbstractAuthGuardedRestResource {
   @Consumes(MediaType.MULTIPART_FORM_DATA)
   @Produces(MediaType.APPLICATION_JSON)
   public Response getImportPreview(@FormDataParam("file_upload") InputStream uploadedInputStream,
-                                   @FormDataParam("file_upload") FormDataContentDisposition fileDetail) throws IOException {
-    var importConfig =  ImportManager.getImportPreview(uploadedInputStream);
+                                   @FormDataParam("file_upload") FormDataContentDisposition fileDetail)
+      throws IOException {
+    var importConfig = ImportManager.getImportPreview(uploadedInputStream);
     return ok(importConfig);
   }
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java
index ad9d3c507..b8bdd53b4 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java
@@ -24,13 +24,20 @@ import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResourc
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.user.management.encryption.SecretEncryptionManager;
+
 import org.simplejavamail.MailException;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 
 @Path("/v2/admin/mail-config")
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ExtensionsServiceEndpointResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ExtensionsServiceEndpointResource.java
index 18a20acff..254d1375d 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ExtensionsServiceEndpointResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/ExtensionsServiceEndpointResource.java
@@ -18,7 +18,6 @@
 
 package org.apache.streampipes.rest.impl.admin;
 
-import org.apache.http.client.fluent.Request;
 import org.apache.streampipes.manager.endpoint.EndpointFetcher;
 import org.apache.streampipes.manager.operations.Operations;
 import org.apache.streampipes.model.SpDataSet;
@@ -30,12 +29,21 @@ import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.sdk.utils.Assets;
 import org.apache.streampipes.storage.api.IExtensionsServiceEndpointStorage;
+
+import org.apache.http.client.fluent.Request;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -59,7 +67,7 @@ public class ExtensionsServiceEndpointResource extends AbstractAuthGuardedRestRe
   @JacksonSerialized
   public Response addRdfEndpoint(ExtensionsServiceEndpoint extensionsServiceEndpoint) {
     getRdfEndpointStorage()
-            .addExtensionsServiceEndpoint(extensionsServiceEndpoint);
+        .addExtensionsServiceEndpoint(extensionsServiceEndpoint);
 
     return Response.status(Response.Status.OK).build();
   }
@@ -72,7 +80,7 @@ public class ExtensionsServiceEndpointResource extends AbstractAuthGuardedRestRe
   @JacksonSerialized
   public Response removeRdfEndpoint(@PathParam("rdfEndpointId") String rdfEndpointId) {
     getRdfEndpointStorage()
-            .removeExtensionsServiceEndpoint(rdfEndpointId);
+        .removeExtensionsServiceEndpoint(rdfEndpointId);
 
     return Response.status(Response.Status.OK).build();
   }
@@ -118,8 +126,8 @@ public class ExtensionsServiceEndpointResource extends AbstractAuthGuardedRestRe
 
   private boolean isInstalled(String elementId) {
     return getAllPipelineElements()
-            .stream()
-            .anyMatch(e -> e.equals(elementId));
+        .stream()
+        .anyMatch(e -> e.equals(elementId));
   }
 
   private List<String> getAllPipelineElements() {
@@ -131,32 +139,33 @@ public class ExtensionsServiceEndpointResource extends AbstractAuthGuardedRestRe
   }
 
   private List<ExtensionsServiceEndpointItem> getAllDataStreamEndpoints(String username,
-                                                                        List<ExtensionsServiceEndpointItem> existingItems) {
+                                              List<ExtensionsServiceEndpointItem> existingItems) {
     return getAllDataStreamUris()
-            .stream()
-            .filter(s -> existingItems.stream().noneMatch(item -> s.equals(item.getElementId())))
-            .map(s -> getPipelineElementStorage().getDataStreamById(s))
-            .map(stream -> makeItem(stream, stream instanceof SpDataSet ? "set" : "stream"))
-            .collect(Collectors.toList());
+        .stream()
+        .filter(s -> existingItems.stream().noneMatch(item -> s.equals(item.getElementId())))
+        .map(s -> getPipelineElementStorage().getDataStreamById(s))
+        .map(stream -> makeItem(stream, stream instanceof SpDataSet ? "set" : "stream"))
+        .collect(Collectors.toList());
   }
 
   private List<ExtensionsServiceEndpointItem> getAllDataProcessorEndpoints(String username,
-                                                                           List<ExtensionsServiceEndpointItem> existingItems) {
+                                              List<ExtensionsServiceEndpointItem> existingItems) {
     return getAllDataProcessorUris()
-            .stream()
-            .filter(s -> existingItems.stream().noneMatch(item -> s.equals(item.getElementId())))
-            .map(s -> getPipelineElementStorage().getDataProcessorById(s))
-            .map(source -> makeItem(source, "sepa"))
-            .collect(Collectors.toList());
+        .stream()
+        .filter(s -> existingItems.stream().noneMatch(item -> s.equals(item.getElementId())))
+        .map(s -> getPipelineElementStorage().getDataProcessorById(s))
+        .map(source -> makeItem(source, "sepa"))
+        .collect(Collectors.toList());
   }
 
-  private List<ExtensionsServiceEndpointItem> getAllDataSinkEndpoints(String username, List<ExtensionsServiceEndpointItem> existingItems) {
+  private List<ExtensionsServiceEndpointItem> getAllDataSinkEndpoints(String username,
+                                              List<ExtensionsServiceEndpointItem> existingItems) {
     return getAllDataSinkUris()
-            .stream()
-            .filter(s -> existingItems.stream().noneMatch(item -> s.equals(item.getElementId())))
-            .map(s -> getPipelineElementStorage().getDataSinkById(s))
-            .map(source -> makeItem(source, "action"))
-            .collect(Collectors.toList());
+        .stream()
+        .filter(s -> existingItems.stream().noneMatch(item -> s.equals(item.getElementId())))
+        .map(s -> getPipelineElementStorage().getDataSinkById(s))
+        .map(source -> makeItem(source, "action"))
+        .collect(Collectors.toList());
   }
 
   private ExtensionsServiceEndpointItem makeItem(NamedStreamPipesEntity entity, String type) {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/GeneralConfigurationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/GeneralConfigurationResource.java
index 91cd5ab9d..90bee4877 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/GeneralConfigurationResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/GeneralConfigurationResource.java
@@ -22,14 +22,20 @@ import org.apache.streampipes.config.backend.model.GeneralConfig;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.glassfish.jersey.media.multipart.BodyPart;
 import org.glassfish.jersey.media.multipart.MultiPart;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.StringWriter;
 import java.security.Key;
 import java.security.KeyPair;
@@ -72,8 +78,8 @@ public class GeneralConfigurationResource extends AbstractAuthGuardedRestResourc
     String privateKeyPem = exportKeyAsPem(keyPair.getPrivate(), "PRIVATE");
 
     MultiPart multiPartEntity = new MultiPart()
-            .bodyPart(new BodyPart().entity(publicKeyPem))
-            .bodyPart(new BodyPart().entity(privateKeyPem));
+        .bodyPart(new BodyPart().entity(publicKeyPem))
+        .bodyPart(new BodyPart().entity(privateKeyPem));
 
     return Response.ok(multiPartEntity).build();
   }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PermissionResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PermissionResource.java
index 6637860ed..72bfdb565 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PermissionResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PermissionResource.java
@@ -20,6 +20,7 @@ package org.apache.streampipes.rest.impl.admin;
 import org.apache.streampipes.model.client.user.Permission;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
+
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
@@ -27,6 +28,7 @@ import javax.ws.rs.GET;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
+
 import java.util.List;
 
 @Path("/v2/admin/permissions")
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PipelineElementImport.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PipelineElementImport.java
index b097027f1..fdfc54f20 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PipelineElementImport.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/PipelineElementImport.java
@@ -31,14 +31,22 @@ import org.apache.streampipes.model.message.NotificationType;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorageCache;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 import java.net.URISyntaxException;
 
@@ -83,18 +91,18 @@ public class PipelineElementImport extends AbstractAuthGuardedRestResource {
         getSpResourceManager().manageDataProcessors().delete(elementId);
       } else if (requestor.existsDataStream(elementId)) {
         appId = requestor.getDataStreamById(elementId).getAppId();
-       getSpResourceManager().manageDataStreams().delete(elementId);
+        getSpResourceManager().manageDataStreams().delete(elementId);
       } else if (requestor.existsDataSink(elementId)) {
         appId = requestor.getDataSinkById(elementId).getAppId();
         getSpResourceManager().manageDataSinks().delete(elementId);
       } else {
         return constructErrorMessage(new Notification(NotificationType.STORAGE_ERROR.title(),
-                NotificationType.STORAGE_ERROR.description()));
+            NotificationType.STORAGE_ERROR.description()));
       }
       AssetManager.deleteAsset(appId);
     } catch (IOException e) {
       return constructErrorMessage(new Notification(NotificationType.STORAGE_ERROR.title(),
-              NotificationType.STORAGE_ERROR.description()));
+          NotificationType.STORAGE_ERROR.description()));
     }
     return constructSuccessMessage(NotificationType.STORAGE_SUCCESS.uiNotification());
   }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/UserGroupResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/UserGroupResource.java
index 125569428..cd2c35de4 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/UserGroupResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/UserGroupResource.java
@@ -21,10 +21,16 @@ import org.apache.streampipes.model.client.user.Group;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.storage.api.IUserGroupStorage;
+
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.core.Response;
 
 @Path("/v2/usergroups")
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 069551da9..5eb759a28 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
@@ -26,6 +26,7 @@ import org.apache.streampipes.model.message.Notifications;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.management.StorageDispatcher;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/DescriptionResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/DescriptionResource.java
index 56819527e..3c2eeb21b 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/DescriptionResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/DescriptionResource.java
@@ -1,18 +1,19 @@
 /*
- *   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
+ * 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
+ *    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.
  *
- *   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.rest.impl.connect;
@@ -25,142 +26,148 @@ import org.apache.streampipes.connect.container.master.management.WorkerUrlProvi
 import org.apache.streampipes.model.connect.adapter.AdapterDescription;
 import org.apache.streampipes.model.connect.grounding.FormatDescription;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 import java.util.Optional;
 
 @Path("/v2/connect/master/description")
 public class DescriptionResource extends AbstractAdapterResource<DescriptionManagement> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(DescriptionResource.class);
-    private WorkerUrlProvider workerUrlProvider;
-
-    public DescriptionResource() {
-        super(DescriptionManagement::new);
-        workerUrlProvider = new WorkerUrlProvider();
-    }
-
-    @GET
-    @JacksonSerialized
-    @Path("/formats")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getFormats() {
-        List<FormatDescription> result = managementService.getFormats();
-
+  private static final Logger LOG = LoggerFactory.getLogger(DescriptionResource.class);
+  private WorkerUrlProvider workerUrlProvider;
+
+  public DescriptionResource() {
+    super(DescriptionManagement::new);
+    workerUrlProvider = new WorkerUrlProvider();
+  }
+
+  @GET
+  @JacksonSerialized
+  @Path("/formats")
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response getFormats() {
+    List<FormatDescription> result = managementService.getFormats();
+
+    return ok(result);
+  }
+
+  @GET
+  @JacksonSerialized
+  @Path("/adapters")
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response getAdapters() {
+    List<AdapterDescription> result = managementService.getAdapters();
+
+    return ok(result);
+  }
+
+  @GET
+  @Path("/{id}/assets")
+  @Produces("application/zip")
+  public Response getAdapterAssets(@PathParam("id") String id) {
+    try {
+      String result = null;
+
+      Optional<AdapterDescription> adapterDescriptionOptional = managementService.getAdapter(id);
+      if (adapterDescriptionOptional.isPresent()) {
+        AdapterDescription adapterDescription = adapterDescriptionOptional.get();
+        String workerUrl = workerUrlProvider.getWorkerUrl(adapterDescription.getAppId());
+
+        result = managementService.getAssets(workerUrl);
+      }
+
+      if (result == null) {
+        LOG.error("Not found adapter with id " + id);
+        return fail();
+      } else {
         return ok(result);
+      }
+    } catch (AdapterException e) {
+      LOG.error("Not found adapter with id " + id, e);
+      return fail();
+    } catch (NoServiceEndpointsAvailableException e) {
+      return fail();
     }
+  }
 
-    @GET
-    @JacksonSerialized
-    @Path("/adapters")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getAdapters() {
-        List<AdapterDescription> result = managementService.getAdapters();
+  @GET
+  @Path("/{id}/assets/icon")
+  @Produces("image/png")
+  public Response getAdapterIconAsset(@PathParam("id") String id) {
+    try {
 
-        return ok(result);
-    }
+      byte[] result = null;
 
-    @GET
-    @Path("/{id}/assets")
-    @Produces("application/zip")
-    public Response getAdapterAssets(@PathParam("id") String id) {
-        try {
-            String result = null;
-
-            Optional<AdapterDescription> adapterDescriptionOptional = managementService.getAdapter(id);
-            if (adapterDescriptionOptional.isPresent()) {
-                AdapterDescription adapterDescription = adapterDescriptionOptional.get();
-                String workerUrl = workerUrlProvider.getWorkerUrl(adapterDescription.getAppId());
-
-                result = managementService.getAssets(workerUrl);
-            }
-
-            if (result == null) {
-                LOG.error("Not found adapter with id " + id);
-                return fail();
-            } else {
-                return ok(result);
-            }
-        } catch (AdapterException e) {
-            LOG.error("Not found adapter with id " + id, e);
-            return fail();
-        } catch (NoServiceEndpointsAvailableException e) {
-            return fail();
-        }
-    }
+      Optional<AdapterDescription> adapterDescriptionOptional = managementService.getAdapter(id);
+      if (adapterDescriptionOptional.isPresent()) {
+        AdapterDescription adapterDescription = adapterDescriptionOptional.get();
+        String workerUrl = workerUrlProvider.getWorkerUrl(adapterDescription.getAppId());
 
-    @GET
-    @Path("/{id}/assets/icon")
-    @Produces("image/png")
-    public Response getAdapterIconAsset(@PathParam("id") String id) {
-        try {
-
-            byte[] result = null;
-
-            Optional<AdapterDescription> adapterDescriptionOptional = managementService.getAdapter(id);
-            if (adapterDescriptionOptional.isPresent()) {
-                AdapterDescription adapterDescription = adapterDescriptionOptional.get();
-                String workerUrl = workerUrlProvider.getWorkerUrl(adapterDescription.getAppId());
-
-                result = managementService.getIconAsset(workerUrl);
-            }
-
-            if (result == null) {
-                LOG.error("Not found adapter with id " + id);
-                return fail();
-            } else {
-                return ok(result);
-            }
-        } catch (AdapterException e) {
-            LOG.error("Not found adapter with id " + id);
-            return fail();
-        } catch (NoServiceEndpointsAvailableException e) {
-            return fail();
-        }
-    }
+        result = managementService.getIconAsset(workerUrl);
+      }
 
-    @GET
-    @Path("/{id}/assets/documentation")
-    @Produces(MediaType.TEXT_PLAIN)
-    public Response getAdapterDocumentationAsset(@PathParam("id") String id) {
-        try {
-            String result = null;
-
-            Optional<AdapterDescription> adapterDescriptionOptional = managementService.getAdapter(id);
-            if (adapterDescriptionOptional.isPresent()) {
-                AdapterDescription adapterDescription = adapterDescriptionOptional.get();
-                String workerUrl = workerUrlProvider.getWorkerUrl(adapterDescription.getAppId());
-
-                result =  managementService.getDocumentationAsset(workerUrl);
-            }
-
-            if (result == null) {
-                LOG.error("Not found adapter with id " + id);
-                return fail();
-            } else {
-                return ok(result);
-            }
-        } catch (AdapterException e) {
-            LOG.error("Not found adapter with id " + id, e);
-            return fail();
-        } catch (NoServiceEndpointsAvailableException e) {
-            return fail();
-        }
+      if (result == null) {
+        LOG.error("Not found adapter with id " + id);
+        return fail();
+      } else {
+        return ok(result);
+      }
+    } catch (AdapterException e) {
+      LOG.error("Not found adapter with id " + id);
+      return fail();
+    } catch (NoServiceEndpointsAvailableException e) {
+      return fail();
     }
-
-    @DELETE
-    @Path("{adapterId}")
-    public Response deleteAdapter(@PathParam("adapterId") String adapterId) {
-        try {
-            this.managementService.deleteAdapterDescription(adapterId);
-            return ok();
-        } catch (SpRuntimeException e) {
-            return badRequest(e);
-        }
+  }
+
+  @GET
+  @Path("/{id}/assets/documentation")
+  @Produces(MediaType.TEXT_PLAIN)
+  public Response getAdapterDocumentationAsset(@PathParam("id") String id) {
+    try {
+      String result = null;
+
+      Optional<AdapterDescription> adapterDescriptionOptional = managementService.getAdapter(id);
+      if (adapterDescriptionOptional.isPresent()) {
+        AdapterDescription adapterDescription = adapterDescriptionOptional.get();
+        String workerUrl = workerUrlProvider.getWorkerUrl(adapterDescription.getAppId());
+
+        result = managementService.getDocumentationAsset(workerUrl);
+      }
+
+      if (result == null) {
+        LOG.error("Not found adapter with id " + id);
+        return fail();
+      } else {
+        return ok(result);
+      }
+    } catch (AdapterException e) {
+      LOG.error("Not found adapter with id " + id, e);
+      return fail();
+    } catch (NoServiceEndpointsAvailableException e) {
+      return fail();
+    }
+  }
+
+  @DELETE
+  @Path("{adapterId}")
+  public Response deleteAdapter(@PathParam("adapterId") String adapterId) {
+    try {
+      this.managementService.deleteAdapterDescription(adapterId);
+      return ok();
+    } catch (SpRuntimeException e) {
+      return badRequest(e);
     }
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java
index b678b9eab..96ef1fddd 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java
@@ -27,6 +27,7 @@ import org.apache.streampipes.model.connect.adapter.AdapterDescription;
 import org.apache.streampipes.model.connect.guess.AdapterEventPreview;
 import org.apache.streampipes.model.connect.guess.GuessSchema;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,6 +37,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.io.IOException;
 
 
@@ -54,19 +56,19 @@ public class GuessResource extends AbstractAdapterResource<GuessManagement> {
   @Produces(MediaType.APPLICATION_JSON)
   public Response guessSchema(AdapterDescription adapterDescription) {
 
-      try {
-          GuessSchema result = managementService.guessSchema(adapterDescription);
+    try {
+      GuessSchema result = managementService.guessSchema(adapterDescription);
 
-          return ok(result);
-      } catch (ParseException e) {
-          LOG.error("Error while parsing events: ", e);
-          return badRequest(StreamPipesErrorMessage.from(e));
-      } catch (WorkerAdapterException e) {
-          return serverError(StreamPipesErrorMessage.from(e));
-      } catch (NoServiceEndpointsAvailableException | IOException e) {
-        LOG.error(e.getMessage());
-        return serverError(StreamPipesErrorMessage.from(e));
-      }
+      return ok(result);
+    } catch (ParseException e) {
+      LOG.error("Error while parsing events: ", e);
+      return badRequest(StreamPipesErrorMessage.from(e));
+    } catch (WorkerAdapterException e) {
+      return serverError(StreamPipesErrorMessage.from(e));
+    } catch (NoServiceEndpointsAvailableException | IOException e) {
+      LOG.error(e.getMessage());
+      return serverError(StreamPipesErrorMessage.from(e));
+    }
   }
 
   @POST
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java
index 5f3fe1f67..773b8e099 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java
@@ -28,50 +28,55 @@ import org.apache.streampipes.model.StreamPipesErrorMessage;
 import org.apache.streampipes.model.runtime.RuntimeOptionsRequest;
 import org.apache.streampipes.model.runtime.RuntimeOptionsResponse;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 @Path("/v2/connect/master/resolvable")
 public class RuntimeResolvableResource extends AbstractAdapterResource<WorkerAdministrationManagement> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(RuntimeResolvableResource.class);
+  private static final Logger LOG = LoggerFactory.getLogger(RuntimeResolvableResource.class);
 
-    private final WorkerUrlProvider workerUrlProvider;
+  private final WorkerUrlProvider workerUrlProvider;
 
-    public RuntimeResolvableResource() {
-        super(WorkerAdministrationManagement::new);
-        this.workerUrlProvider = new WorkerUrlProvider();
-    }
+  public RuntimeResolvableResource() {
+    super(WorkerAdministrationManagement::new);
+    this.workerUrlProvider = new WorkerUrlProvider();
+  }
 
-    @POST
-    @Path("{id}/configurations")
-    @JacksonSerialized
-    @Produces(MediaType.APPLICATION_JSON)
-    @Consumes(MediaType.APPLICATION_JSON)
-    public Response fetchConfigurations(@PathParam("id") String appId,
-                                        RuntimeOptionsRequest runtimeOptionsRequest) {
+  @POST
+  @Path("{id}/configurations")
+  @JacksonSerialized
+  @Produces(MediaType.APPLICATION_JSON)
+  @Consumes(MediaType.APPLICATION_JSON)
+  public Response fetchConfigurations(@PathParam("id") String appId,
+                                      RuntimeOptionsRequest runtimeOptionsRequest) {
 
-        // TODO add solution for formats
+    // TODO add solution for formats
 
-        try {
-            String workerEndpoint = workerUrlProvider.getWorkerBaseUrl(appId);
-            RuntimeOptionsResponse result = WorkerRestClient.getConfiguration(workerEndpoint, appId, runtimeOptionsRequest);
+    try {
+      String workerEndpoint = workerUrlProvider.getWorkerBaseUrl(appId);
+      RuntimeOptionsResponse result = WorkerRestClient.getConfiguration(workerEndpoint, appId, runtimeOptionsRequest);
 
-            return ok(result);
-        } catch (AdapterException e) {
-            LOG.error("Adapter exception occurred", e);
-            return serverError(StreamPipesErrorMessage.from(e));
-        } catch (NoServiceEndpointsAvailableException e) {
-            LOG.error("Could not find service endpoint for {} while fetching configuration", appId);
-            return serverError(StreamPipesErrorMessage.from(e));
-        } catch (SpConfigurationException e) {
-            LOG.error("Tried to fetch a runtime configuration with insufficient settings");
-            return badRequest(StreamPipesErrorMessage.from(e));
-        }
+      return ok(result);
+    } catch (AdapterException e) {
+      LOG.error("Adapter exception occurred", e);
+      return serverError(StreamPipesErrorMessage.from(e));
+    } catch (NoServiceEndpointsAvailableException e) {
+      LOG.error("Could not find service endpoint for {} while fetching configuration", appId);
+      return serverError(StreamPipesErrorMessage.from(e));
+    } catch (SpConfigurationException e) {
+      LOG.error("Tried to fetch a runtime configuration with insufficient settings");
+      return badRequest(StreamPipesErrorMessage.from(e));
     }
+  }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/SourcesResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/SourcesResource.java
index 69542d7e7..463b10dda 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/SourcesResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/SourcesResource.java
@@ -23,52 +23,59 @@ import org.apache.streampipes.connect.api.exception.AdapterException;
 import org.apache.streampipes.connect.container.master.management.SourcesManagement;
 import org.apache.streampipes.model.SpDataSet;
 import org.apache.streampipes.model.message.Notifications;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 @Path("/v2/connect/master/sources")
 public class SourcesResource extends AbstractAdapterResource<SourcesManagement> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SourcesResource.class);
-
-    public SourcesResource() {
-        super(SourcesManagement::new);
-    }
+  private static final Logger LOG = LoggerFactory.getLogger(SourcesResource.class);
 
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response addSetAdapter(SpDataSet dataSet) {
+  public SourcesResource() {
+    super(SourcesManagement::new);
+  }
 
-        String responseMessage = "Instance of data set " + dataSet.getElementId() + " successfully started";
+  @POST
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response addSetAdapter(SpDataSet dataSet) {
 
-        try {
-            managementService.addSetAdapter(dataSet);
-        } catch (AdapterException | NoServiceEndpointsAvailableException e) {
-            LOG.error("Could not set data set instance: " + dataSet.getElementId(), e);
-            return ok(Notifications.error("Could not set data set instance: " + dataSet.getElementId()));
-        }
+    String responseMessage = "Instance of data set " + dataSet.getElementId() + " successfully started";
 
-        return ok(Notifications.success(responseMessage));
+    try {
+      managementService.addSetAdapter(dataSet);
+    } catch (AdapterException | NoServiceEndpointsAvailableException e) {
+      LOG.error("Could not set data set instance: " + dataSet.getElementId(), e);
+      return ok(Notifications.error("Could not set data set instance: " + dataSet.getElementId()));
     }
 
-    @DELETE
-    @Path("{adapterId}/{runningInstanceId}")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response detach(@PathParam("adapterId") String elementId, @PathParam("runningInstanceId") String runningInstanceId) {
-        String responseMessage = "Instance id: "+ runningInstanceId + " successfully started";
+    return ok(Notifications.success(responseMessage));
+  }
 
-        try {
-            managementService.detachAdapter(elementId, runningInstanceId);
-        } catch (AdapterException | NoServiceEndpointsAvailableException e) {
-            LOG.error("Could not detach instance id: "+ runningInstanceId, e);
-            return fail();
-        }
+  @DELETE
+  @Path("{adapterId}/{runningInstanceId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response detach(@PathParam("adapterId") String elementId,
+                         @PathParam("runningInstanceId") String runningInstanceId) {
+    String responseMessage = "Instance id: " + runningInstanceId + " successfully started";
 
-        return ok(Notifications.success(responseMessage));
+    try {
+      managementService.detachAdapter(elementId, runningInstanceId);
+    } catch (AdapterException | NoServiceEndpointsAvailableException e) {
+      LOG.error("Could not detach instance id: " + runningInstanceId, e);
+      return fail();
     }
+
+    return ok(Notifications.success(responseMessage));
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/UnitResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/UnitResource.java
index d89faa51f..7c7d41870 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/UnitResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/UnitResource.java
@@ -21,6 +21,7 @@ package org.apache.streampipes.rest.impl.connect;
 import org.apache.streampipes.connect.api.exception.AdapterException;
 import org.apache.streampipes.connect.container.master.management.UnitMasterManagement;
 import org.apache.streampipes.model.connect.unit.UnitDescription;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,23 +35,23 @@ import javax.ws.rs.core.Response;
 @Path("/v2/connect/master/unit")
 public class UnitResource extends AbstractAdapterResource<UnitMasterManagement> {
 
-    private static final Logger logger = LoggerFactory.getLogger(UnitResource.class);
-
-    public UnitResource() {
-        super(UnitMasterManagement::new);
-    }
-
-    @POST
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response getFittingUnits(UnitDescription unitDescription) {
-        try {
-            String resultingJson = managementService.getFittingUnits(unitDescription);
-            return ok(resultingJson);
-        } catch (AdapterException e) {
-            logger.error("Error while getting all adapter descriptions", e);
-            return fail();
-        }
+  private static final Logger logger = LoggerFactory.getLogger(UnitResource.class);
+
+  public UnitResource() {
+    super(UnitMasterManagement::new);
+  }
+
+  @POST
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response getFittingUnits(UnitDescription unitDescription) {
+    try {
+      String resultingJson = managementService.getFittingUnits(unitDescription);
+      return ok(resultingJson);
+    } catch (AdapterException e) {
+      logger.error("Error while getting all adapter descriptions", e);
+      return fail();
     }
+  }
 
 }
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 5730300b9..2504e9df0 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
@@ -24,6 +24,7 @@ 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.couchdb.utils.CouchDbConfig;
+
 import org.rendersnake.HtmlCanvas;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -32,58 +33,59 @@ import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
+
 import java.io.IOException;
 
 
 @Path("/v2/connect")
 public class WelcomePageMaster extends AbstractAdapterResource<AdapterMasterManagement> {
 
-	private Logger LOG = LoggerFactory.getLogger(WelcomePageMaster.class);
-
-	public WelcomePageMaster() {
-		super(AdapterMasterManagement::new);
-	}
-
-	@GET
-	@Produces(MediaType.TEXT_HTML)
-	public String getWelcomePageHtml() {
-		return buildHtml();
-	}
-
-	private String buildHtml() {
-		HtmlCanvas html = new HtmlCanvas();
-		try {
-			HtmlCanvas tmp = html
-					.head()
-					.title()
-					.content("StreamPipes Connector Master Container")
-					._head()
-					.body()
-					.h1().write("Connector Master Container")._h1()
-					.h2().write("All Running Adapters")._h2()
-					.ol();
-
-			getAllRunningAdapters(tmp);
-
-			html = tmp._ol()
-					._body();
-		} catch (IOException e) {
-			LOG.error("Error in SP Connect Master Container: ", e);
-		}
-
-		return html.toHtml();
-	}
-
-	private void getAllRunningAdapters(HtmlCanvas canvas) throws IOException {
-
-		try {
-			for (AdapterDescription ad : managementService.getAllAdapterDescriptions()) {
-				canvas.li().write(ad.getElementId())._li();
-				canvas.ul().li().write("Kafka Topic: " + GroundingService.extractTopic(ad))._li()._ul();
-			}
-		} catch (AdapterException e) {
-			LOG.error("Could not connect to couchdb on URL: " + CouchDbConfig.INSTANCE.getHost(), e);
-			canvas.li().write("Error while connecting to CouchDB on Host: " + CouchDbConfig.INSTANCE.getHost())._li();
-		}
-	}
+  private static final Logger LOG = LoggerFactory.getLogger(WelcomePageMaster.class);
+
+  public WelcomePageMaster() {
+    super(AdapterMasterManagement::new);
+  }
+
+  @GET
+  @Produces(MediaType.TEXT_HTML)
+  public String getWelcomePageHtml() {
+    return buildHtml();
+  }
+
+  private String buildHtml() {
+    HtmlCanvas html = new HtmlCanvas();
+    try {
+      HtmlCanvas tmp = html
+          .head()
+          .title()
+          .content("StreamPipes Connector Master Container")
+          ._head()
+          .body()
+          .h1().write("Connector Master Container")._h1()
+          .h2().write("All Running Adapters")._h2()
+          .ol();
+
+      getAllRunningAdapters(tmp);
+
+      html = tmp._ol()
+          ._body();
+    } catch (IOException e) {
+      LOG.error("Error in SP Connect Master Container: ", e);
+    }
+
+    return html.toHtml();
+  }
+
+  private void getAllRunningAdapters(HtmlCanvas canvas) throws IOException {
+
+    try {
+      for (AdapterDescription ad : managementService.getAllAdapterDescriptions()) {
+        canvas.li().write(ad.getElementId())._li();
+        canvas.ul().li().write("Kafka Topic: " + GroundingService.extractTopic(ad))._li()._ul();
+      }
+    } catch (AdapterException e) {
+      LOG.error("Could not connect to couchdb on URL: " + CouchDbConfig.INSTANCE.getHost(), e);
+      canvas.li().write("Error while connecting to CouchDB on Host: " + CouchDbConfig.INSTANCE.getHost())._li();
+    }
+  }
 }
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 48a6a481c..ae5210eea 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
@@ -29,25 +29,26 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 
 @Path("v2/connect/master/administration")
 public class WorkerAdministrationResource extends AbstractSharedRestInterface {
 
-    private WorkerAdministrationManagement workerAdministrationManagement;
+  private WorkerAdministrationManagement workerAdministrationManagement;
 
-    public WorkerAdministrationResource() {
-        this.workerAdministrationManagement = new WorkerAdministrationManagement();
-    }
+  public WorkerAdministrationResource() {
+    this.workerAdministrationManagement = new WorkerAdministrationManagement();
+  }
 
-    @POST
-    @JacksonSerialized
-    @Produces(MediaType.APPLICATION_JSON)
-    public Response addWorkerContainer(List<AdapterDescription> availableAdapterDescription) {
+  @POST
+  @JacksonSerialized
+  @Produces(MediaType.APPLICATION_JSON)
+  public Response addWorkerContainer(List<AdapterDescription> availableAdapterDescription) {
 
-        this.workerAdministrationManagement.register(availableAdapterDescription);
+    this.workerAdministrationManagement.register(availableAdapterDescription);
 
-        return ok(Notifications.success("Worker Container successfully added"));
-    }
+    return ok(Notifications.success("Worker Container successfully added"));
+  }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractDashboardResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractDashboardResource.java
index 3638e5d4a..4cad2f9a5 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractDashboardResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractDashboardResource.java
@@ -22,12 +22,20 @@ import org.apache.streampipes.model.dashboard.DashboardModel;
 import org.apache.streampipes.resource.management.AbstractDashboardResourceManager;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.springframework.security.access.prepost.PostFilter;
 import org.springframework.security.access.prepost.PreAuthorize;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 
 public abstract class AbstractDashboardResource extends AbstractAuthGuardedRestResource {
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractPipelineExtractionResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractPipelineExtractionResource.java
index 21ea0733c..8d7eece97 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractPipelineExtractionResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/AbstractPipelineExtractionResource.java
@@ -23,6 +23,7 @@ import org.apache.streampipes.model.staticproperty.FreeTextStaticProperty;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 
 import javax.ws.rs.core.Response;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
@@ -36,20 +37,20 @@ public abstract class AbstractPipelineExtractionResource<T> extends AbstractRest
     List<T> pipelines = extract(new ArrayList<>(), appId);
 
     Optional<T> matchedPipeline =
-            pipelines
-                    .stream()
-                    .filter(pipeline -> matches(pipeline, pipelineId, fieldValue)).findFirst();
+        pipelines
+            .stream()
+            .filter(pipeline -> matches(pipeline, pipelineId, fieldValue)).findFirst();
 
     return matchedPipeline.isPresent() ? ok(matchedPipeline.get()) : fail();
   }
 
   protected List<T> extract(List<T> target, String appId) {
     getPipelineStorage()
-            .getAllPipelines()
-            .forEach(pipeline -> {
-              List<DataSinkInvocation> sinks = extractSink(pipeline, appId);
-              sinks.forEach(sink -> target.add(convert(pipeline, sink)));
-            });
+        .getAllPipelines()
+        .forEach(pipeline -> {
+          List<DataSinkInvocation> sinks = extractSink(pipeline, appId);
+          sinks.forEach(sink -> target.add(convert(pipeline, sink)));
+        });
     return target;
   }
 
@@ -57,32 +58,32 @@ public abstract class AbstractPipelineExtractionResource<T> extends AbstractRest
                                DataSinkInvocation sink);
 
   protected abstract boolean matches(T resourceToExtract,
-                            String pipelineId,
-                            String fieldValue);
+                                     String pipelineId,
+                                     String fieldValue);
 
   protected List<DataSinkInvocation> extractSink(Pipeline pipeline, String appId) {
     return pipeline
-            .getActions()
-            .stream()
-            .filter(sink -> sink.getAppId().equals(appId))
-            .collect(Collectors.toList());
+        .getActions()
+        .stream()
+        .filter(sink -> sink.getAppId().equals(appId))
+        .collect(Collectors.toList());
   }
 
   protected String extractFieldValue(DataSinkInvocation sink, String fieldName) {
     return sink.getStaticProperties()
-            .stream()
-            .filter(sp -> sp.getInternalName().equals(fieldName))
-            .map(sp -> (FreeTextStaticProperty) sp)
-            .findFirst().get().getValue();
+        .stream()
+        .filter(sp -> sp.getInternalName().equals(fieldName))
+        .map(sp -> (FreeTextStaticProperty) sp)
+        .findFirst().get().getValue();
   }
 
   protected String extractInputTopic(DataSinkInvocation sink) {
     return sink
-            .getInputStreams()
-            .get(0)
-            .getEventGrounding()
-            .getTransportProtocol()
-            .getTopicDefinition()
-            .getActualTopicName();
+        .getInputStreams()
+        .get(0)
+        .getEventGrounding()
+        .getTransportProtocol()
+        .getTopicDefinition()
+        .getActualTopicName();
   }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/Dashboard.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/Dashboard.java
index 144c7d9a7..0357625cd 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/Dashboard.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/Dashboard.java
@@ -19,34 +19,33 @@
 package org.apache.streampipes.rest.impl.dashboard;
 
 import org.apache.streampipes.model.client.user.Privilege;
-import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.resource.management.AbstractDashboardResourceManager;
+
 import org.springframework.stereotype.Component;
 
 import javax.ws.rs.Path;
-import java.util.Arrays;
 
 @Path("/v2/dashboard/dashboards")
 @Component
 public class Dashboard extends AbstractDashboardResource {
 
-    @Override
-    protected AbstractDashboardResourceManager getResourceManager() {
-        return getSpResourceManager().manageDashboards();
-    }
-
-    @Override
-    public boolean hasReadAuthority() {
-        return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_READ_DASHBOARD_VALUE);
-    }
-
-    @Override
-    public boolean hasWriteAuthority() {
-        return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_WRITE_DASHBOARD_VALUE);
-    }
-
-    @Override
-    public boolean hasDeleteAuthority() {
-        return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_DELETE_DASHBOARD_VALUE);
-    }
+  @Override
+  protected AbstractDashboardResourceManager getResourceManager() {
+    return getSpResourceManager().manageDashboards();
+  }
+
+  @Override
+  public boolean hasReadAuthority() {
+    return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_READ_DASHBOARD_VALUE);
+  }
+
+  @Override
+  public boolean hasWriteAuthority() {
+    return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_WRITE_DASHBOARD_VALUE);
+  }
+
+  @Override
+  public boolean hasDeleteAuthority() {
+    return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_DELETE_DASHBOARD_VALUE);
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java
index a3e00958b..316f28c54 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java
@@ -23,7 +23,14 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.api.IDashboardWidgetStorage;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/VisualizablePipelineResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/VisualizablePipelineResource.java
index 79ecdbd6f..ab087cf29 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/VisualizablePipelineResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/VisualizablePipelineResource.java
@@ -23,6 +23,7 @@ import org.apache.streampipes.model.graph.DataSinkInvocation;
 import org.apache.streampipes.model.pipeline.Pipeline;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.springframework.security.access.prepost.PostFilter;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
@@ -33,6 +34,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -57,7 +59,8 @@ public class VisualizablePipelineResource extends AbstractPipelineExtractionReso
   @Produces(MediaType.APPLICATION_JSON)
   @Path("{pipelineId}/{visualizationName}")
   public Response getVisualizablePipelineByPipelineIdAndVisualizationName(@PathParam("pipelineId") String pipelineId,
-                                                                          @PathParam("visualizationName") String visualizationName) {
+                                                                          @PathParam("visualizationName")
+                                                                          String visualizationName) {
     return getPipelineByIdAndFieldValue(DashboardAppId, pipelineId, visualizationName);
   }
 
@@ -70,7 +73,8 @@ public class VisualizablePipelineResource extends AbstractPipelineExtractionReso
   }
 
   @Override
-  protected org.apache.streampipes.model.dashboard.VisualizablePipeline convert(Pipeline pipeline, DataSinkInvocation sink) {
+  protected org.apache.streampipes.model.dashboard.VisualizablePipeline convert(Pipeline pipeline,
+                                                                                DataSinkInvocation sink) {
     VisualizablePipeline visualizablePipeline = new org.apache.streampipes.model.dashboard.VisualizablePipeline();
     visualizablePipeline.setPipelineId(pipeline.getPipelineId());
     visualizablePipeline.setPipelineName(pipeline.getName());
@@ -85,6 +89,6 @@ public class VisualizablePipelineResource extends AbstractPipelineExtractionReso
                             String pipelineId,
                             String visualizationName) {
     return pipeline.getPipelineId().equals(pipelineId)
-            && pipeline.getVisualizationName().equals(visualizationName);
+        && pipeline.getVisualizationName().equals(visualizationName);
   }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDashboardResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDashboardResource.java
index 6aa6a5f79..7b02a97fb 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDashboardResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeDashboardResource.java
@@ -20,9 +20,9 @@ package org.apache.streampipes.rest.impl.datalake;
 
 
 import org.apache.streampipes.model.client.user.Privilege;
-import org.apache.streampipes.model.client.user.Role;
 import org.apache.streampipes.resource.management.AbstractDashboardResourceManager;
 import org.apache.streampipes.rest.impl.dashboard.AbstractDashboardResource;
+
 import org.springframework.stereotype.Component;
 
 import javax.ws.rs.Path;
@@ -31,23 +31,23 @@ import javax.ws.rs.Path;
 @Component
 public class DataLakeDashboardResource extends AbstractDashboardResource {
 
-    @Override
-    protected AbstractDashboardResourceManager getResourceManager() {
-        return getSpResourceManager().manageDataExplorer();
-    }
-
-    @Override
-    public boolean hasReadAuthority() {
-        return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_READ_DATA_EXPLORER_VIEW_VALUE);
-    }
-
-    @Override
-    public boolean hasWriteAuthority() {
-        return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_WRITE_DATA_EXPLORER_VIEW_VALUE);
-    }
-
-    @Override
-    public boolean hasDeleteAuthority() {
-        return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_DELETE_DATA_EXPLORER_VIEW_VALUE);
-    }
+  @Override
+  protected AbstractDashboardResourceManager getResourceManager() {
+    return getSpResourceManager().manageDataExplorer();
+  }
+
+  @Override
+  public boolean hasReadAuthority() {
+    return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_READ_DATA_EXPLORER_VIEW_VALUE);
+  }
+
+  @Override
+  public boolean hasWriteAuthority() {
+    return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_WRITE_DATA_EXPLORER_VIEW_VALUE);
+  }
+
+  @Override
+  public boolean hasDeleteAuthority() {
+    return isAdminOrHasAnyAuthority(Privilege.Constants.PRIVILEGE_DELETE_DATA_EXPLORER_VIEW_VALUE);
+  }
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeWidgetResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeWidgetResource.java
index e2d7a796d..c8003ff36 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeWidgetResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeWidgetResource.java
@@ -23,7 +23,14 @@ import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.storage.api.IDataExplorerWidgetStorage;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java
index 26479f3fd..10e892c02 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/PersistedDataStreamResource.java
@@ -23,6 +23,7 @@ import org.apache.streampipes.model.pipeline.Pipeline;
 import org.apache.streampipes.rest.impl.dashboard.AbstractPipelineExtractionResource;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.springframework.security.access.prepost.PostFilter;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
@@ -33,6 +34,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -57,7 +59,8 @@ public class PersistedDataStreamResource extends AbstractPipelineExtractionResou
   @Produces(MediaType.APPLICATION_JSON)
   @Path("{pipelineId}/{measureName}")
   public Response getVisualizablePipelineByPipelineIdAndVisualizationName(@PathParam("pipelineId") String pipelineId,
-                                                                          @PathParam("measureName") String measureName) {
+                                                                          @PathParam("measureName")
+                                                                          String measureName) {
     return getPipelineByIdAndFieldValue(DataLakeAppId, pipelineId, measureName);
   }
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/nouser/PipelineElementImportNoUser.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/nouser/PipelineElementImportNoUser.java
index a405fd031..6e9ad373f 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/nouser/PipelineElementImportNoUser.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/nouser/PipelineElementImportNoUser.java
@@ -25,10 +25,15 @@ import org.apache.streampipes.model.message.Notification;
 import org.apache.streampipes.model.message.NotificationType;
 import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
 import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorageCache;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.*;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -74,7 +79,8 @@ public class PipelineElementImportNoUser extends AbstractRestResource {
       userService.deleteOwnSource(username, uri);
       requestor.refreshDataSourceCache();
     } else {
-      return constructErrorMessage(new Notification(NotificationType.STORAGE_ERROR.title(), NotificationType.STORAGE_ERROR.description()));
+      return constructErrorMessage(
+          new Notification(NotificationType.STORAGE_ERROR.title(), NotificationType.STORAGE_ERROR.description()));
     }
     return constructSuccessMessage(NotificationType.STORAGE_SUCCESS.uiNotification());
   }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataProcessorResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataProcessorResource.java
index a04e4b4ef..316b6e734 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataProcessorResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataProcessorResource.java
@@ -25,60 +25,66 @@ import org.apache.streampipes.resource.management.DataProcessorResourceManager;
 import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource;
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+
 import org.springframework.security.access.prepost.PostFilter;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 
 @Path("/v2/sepas")
 @Component
 public class DataProcessorResource extends AbstractAuthGuardedRestResource {
 
-	@GET
-	@Path("/available")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	@PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
-	@PostFilter("hasPermission(filterObject.elementId, 'READ')")
-	public List<DataProcessorDescription> getAvailable() {
-		return getDataProcessorResourceManager().findAll();
-	}
+  @GET
+  @Path("/available")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  @PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
+  @PostFilter("hasPermission(filterObject.elementId, 'READ')")
+  public List<DataProcessorDescription> getAvailable() {
+    return getDataProcessorResourceManager().findAll();
+  }
+
+  @GET
+  @Path("/own")
+  @JacksonSerialized
+  @Produces({MediaType.APPLICATION_JSON})
+  @PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
+  @PostFilter("hasPermission(filterObject.belongsTo, 'READ')")
+  public List<DataProcessorInvocation> getOwn() {
+    return getDataProcessorResourceManager().findAllAsInvocation();
+  }
 
-	@GET
-	@Path("/own")
-	@JacksonSerialized
-	@Produces({MediaType.APPLICATION_JSON})
-	@PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
-	@PostFilter("hasPermission(filterObject.belongsTo, 'READ')")
-	public List<DataProcessorInvocation> getOwn() {
-		return getDataProcessorResourceManager().findAllAsInvocation();
-	}
-	
-	@DELETE
-	@Path("/own/{elementId}")
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	@PreAuthorize(AuthConstants.HAS_DELETE_PIPELINE_ELEMENT_PRIVILEGE)
-	public Response removeOwn(@PathParam("elementId") String elementId) {
-		getDataProcessorResourceManager().delete(elementId);
-		return constructSuccessMessage(NotificationType.STORAGE_SUCCESS.uiNotification());
-	}
+  @DELETE
+  @Path("/own/{elementId}")
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  @PreAuthorize(AuthConstants.HAS_DELETE_PIPELINE_ELEMENT_PRIVILEGE)
+  public Response removeOwn(@PathParam("elementId") String elementId) {
+    getDataProcessorResourceManager().delete(elementId);
+    return constructSuccessMessage(NotificationType.STORAGE_SUCCESS.uiNotification());
+  }
 
-	@Path("/{elementId}")
-	@GET
-	@Produces(MediaType.APPLICATION_JSON)
-	@JacksonSerialized
-	@PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
-	public DataProcessorInvocation getElement(@PathParam("elementId") String elementId) {
-		return getDataProcessorResourceManager().findAsInvocation(elementId);
-	}
+  @Path("/{elementId}")
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @JacksonSerialized
+  @PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
+  public DataProcessorInvocation getElement(@PathParam("elementId") String elementId) {
+    return getDataProcessorResourceManager().findAsInvocation(elementId);
+  }
 
-	private DataProcessorResourceManager getDataProcessorResourceManager() {
-		return getSpResourceManager().manageDataProcessors();
-	}
+  private DataProcessorResourceManager getDataProcessorResourceManager() {
+    return getSpResourceManager().manageDataProcessors();
+  }
 
 }
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataSinkResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataSinkResource.java
index 9cc4daf6b..d890ae1d8 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataSinkResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataSinkResource.java
@@ -26,13 +26,19 @@ import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResourc
 import org.apache.streampipes.rest.security.AuthConstants;
 import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
 import org.apache.streampipes.rest.shared.util.SpMediaType;
+
 import org.springframework.security.access.prepost.PostFilter;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 
-import javax.ws.rs.*;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+
 import java.util.List;
 
 @Path("/v2/actions")
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/AuthConstants.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/AuthConstants.java
index 8bf2d81a8..325cb2752 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/AuthConstants.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/AuthConstants.java
@@ -17,8 +17,29 @@
  */
 package org.apache.streampipes.rest.security;
 
-import static org.apache.streampipes.model.client.user.Privilege.Constants.*;
-import static org.apache.streampipes.model.client.user.Role.Constants.*;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_DELETE_ADAPTER_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_DELETE_PIPELINE_ELEMENT_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_DELETE_PIPELINE_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_ADAPTER_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_ASSETS_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_DASHBOARD_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_DATA_EXPLORER_VIEW_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_FILES_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_GENERIC_STORAGE_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_PIPELINE_ELEMENT_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_READ_PIPELINE_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_WRITE_ADAPTER_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_WRITE_ASSETS_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_WRITE_DASHBOARD_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_WRITE_DATA_EXPLORER_VIEW_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_WRITE_GENERIC_STORAGE_VALUE;
+import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVILEGE_WRITE_PIPELINE_VALUE;
+import static org.apache.streampipes.model.client.user.Role.Constants.ROLE_ADMIN_VALUE;
+import static org.apache.streampipes.model.client.user.Role.Constants.ROLE_DASHBOARD_ADMIN_VALUE;
+import static org.apache.streampipes.model.client.user.Role.Constants.ROLE_DASHBOARD_USER_VALUE;
+import static org.apache.streampipes.model.client.user.Role.Constants.ROLE_PIPELINE_ADMIN_VALUE;
+import static org.apache.streampipes.model.client.user.Role.Constants.ROLE_PIPELINE_USER_VALUE;
+import static org.apache.streampipes.model.client.user.Role.Constants.ROLE_SERVICE_ADMIN_VALUE;
 
 public class AuthConstants {
 
@@ -30,7 +51,8 @@ public class AuthConstants {
   private static final String BE2 = "))";
   private static final String OR = " or ";
 
-  public static final String IS_ADMIN_ROLE = HAS_ANY_AUTHORITY + ROLE_ADMIN_VALUE + Q + ", '" + ROLE_SERVICE_ADMIN_VALUE +Q + BE;
+  public static final String IS_ADMIN_ROLE =
+      HAS_ANY_AUTHORITY + ROLE_ADMIN_VALUE + Q + ", '" + ROLE_SERVICE_ADMIN_VALUE + Q + BE;
 
   public static final String IS_PIPELINE_ADMIN_ROLE = HAS_ANY_ROLE + ROLE_PIPELINE_ADMIN_VALUE + Q + BE;
   public static final String IS_PIPELINE_USER_ROLE = HAS_ANY_ROLE + ROLE_PIPELINE_USER_VALUE + Q + BE;
@@ -38,30 +60,47 @@ public class AuthConstants {
   public static final String IS_DASHBOARD_ADMIN_ROLE = HAS_ANY_ROLE + ROLE_DASHBOARD_ADMIN_VALUE + Q + BE;
   public static final String IS_DASHBOARD_USER_ROLE = HAS_ANY_ROLE + ROLE_DASHBOARD_USER_VALUE + Q + BE;
 
-  public static final String HAS_READ_PIPELINE_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_PIPELINE_VALUE + Q + BE2;
-  public static final String HAS_WRITE_PIPELINE_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_PIPELINE_VALUE + Q + BE2;
-  public static final String HAS_DELETE_PIPELINE_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_DELETE_PIPELINE_VALUE + Q + BE2;
-
-  public static final String HAS_READ_PIPELINE_ELEMENT_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_PIPELINE_ELEMENT_VALUE + Q + BE2;
-  public static final String HAS_DELETE_PIPELINE_ELEMENT_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_DELETE_PIPELINE_ELEMENT_VALUE + Q + BE2;
-
-  public static final String HAS_WRITE_ADAPTER_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_ADAPTER_VALUE + Q + BE2;
-  public static final String HAS_READ_ADAPTER_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_ADAPTER_VALUE + Q + BE2;
-  public static final String HAS_DELETE_ADAPTER_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_DELETE_ADAPTER_VALUE + Q + BE2;
-
-  public static final String HAS_WRITE_DATA_EXPLORER_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_DATA_EXPLORER_VIEW_VALUE + Q + BE2;
-  public static final String HAS_READ_DATA_EXPLORER_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_DATA_EXPLORER_VIEW_VALUE + Q + BE2;
-
-  public static final String HAS_WRITE_DASHBOARD_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_DASHBOARD_VALUE + Q + BE2;
-  public static final String HAS_READ_DASHBOARD_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_DASHBOARD_VALUE + Q + BE2;
-
-  public static final String HAS_READ_FILE_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_FILES_VALUE + Q + BE2;
-
-  public static final String HAS_READ_ASSETS_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_ASSETS_VALUE + Q + BE2;
-  public static final String HAS_WRITE_ASSETS_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_ASSETS_VALUE + Q + BE2;
-
-  public static final String HAS_READ_GENERIC_STORAGE_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_GENERIC_STORAGE_VALUE + Q + BE2;
-  public static final String HAS_WRITE_GENERIC_STORAGE_PRIVILEGE = BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_GENERIC_STORAGE_VALUE + Q + BE2;
+  public static final String HAS_READ_PIPELINE_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_PIPELINE_VALUE + Q + BE2;
+  public static final String HAS_WRITE_PIPELINE_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_PIPELINE_VALUE + Q + BE2;
+  public static final String HAS_DELETE_PIPELINE_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_DELETE_PIPELINE_VALUE + Q + BE2;
+
+  public static final String HAS_READ_PIPELINE_ELEMENT_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_PIPELINE_ELEMENT_VALUE + Q + BE2;
+  public static final String HAS_DELETE_PIPELINE_ELEMENT_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_DELETE_PIPELINE_ELEMENT_VALUE + Q + BE2;
+
+  public static final String HAS_WRITE_ADAPTER_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_ADAPTER_VALUE + Q + BE2;
+  public static final String HAS_READ_ADAPTER_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_ADAPTER_VALUE + Q + BE2;
+  public static final String HAS_DELETE_ADAPTER_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_DELETE_ADAPTER_VALUE + Q + BE2;
+
+  public static final String HAS_WRITE_DATA_EXPLORER_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_DATA_EXPLORER_VIEW_VALUE + Q + BE2;
+  public static final String HAS_READ_DATA_EXPLORER_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_DATA_EXPLORER_VIEW_VALUE + Q + BE2;
+
+  public static final String HAS_WRITE_DASHBOARD_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_DASHBOARD_VALUE + Q + BE2;
+  public static final String HAS_READ_DASHBOARD_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_DASHBOARD_VALUE + Q + BE2;
+
+  public static final String HAS_READ_FILE_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_FILES_VALUE + Q + BE2;
+
+  public static final String HAS_READ_ASSETS_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_ASSETS_VALUE + Q + BE2;
+  public static final String HAS_WRITE_ASSETS_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_ASSETS_VALUE + Q + BE2;
+
+  public static final String HAS_READ_GENERIC_STORAGE_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_READ_GENERIC_STORAGE_VALUE + Q + BE2;
+  public static final String HAS_WRITE_GENERIC_STORAGE_PRIVILEGE =
+      BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_GENERIC_STORAGE_VALUE + Q + BE2;
 
   public static final String IS_AUTHENTICATED = "isAuthenticated()";
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/SpPermissionEvaluator.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/SpPermissionEvaluator.java
index a39cf58dc..62364a984 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/SpPermissionEvaluator.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/security/SpPermissionEvaluator.java
@@ -23,6 +23,7 @@ import org.apache.streampipes.model.pipeline.PipelineElementRecommendation;
 import org.apache.streampipes.model.pipeline.PipelineElementRecommendationMessage;
 import org.apache.streampipes.storage.management.StorageDispatcher;
 import org.apache.streampipes.user.management.model.PrincipalUserDetails;
+
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.access.PermissionEvaluator;
 import org.springframework.security.core.Authentication;
@@ -66,7 +67,8 @@ public class SpPermissionEvaluator implements PermissionEvaluator {
   }
 
   private boolean hasPermission(Authentication auth, String objectInstanceId) {
-    return isPublicElement(objectInstanceId) || getUserDetails(auth).getAllObjectPermissions().contains(objectInstanceId);
+    return isPublicElement(objectInstanceId)
+        || getUserDetails(auth).getAllObjectPermissions().contains(objectInstanceId);
   }
 
   private PrincipalUserDetails<?> getUserDetails(Authentication authentication) {
@@ -74,14 +76,15 @@ public class SpPermissionEvaluator implements PermissionEvaluator {
   }
 
   private boolean isPublicElement(String objectInstanceId) {
-    List<Permission> permissions = StorageDispatcher.INSTANCE.getNoSqlStore().getPermissionStorage().getUserPermissionsForObject(objectInstanceId);
+    List<Permission> permissions =
+        StorageDispatcher.INSTANCE.getNoSqlStore().getPermissionStorage().getUserPermissionsForObject(objectInstanceId);
     return permissions.size() > 0 && permissions.get(0).isPublicElement();
   }
 
   private boolean isAdmin(PrincipalUserDetails<?> userDetails) {
     return userDetails
-            .getAuthorities()
-            .stream()
-            .anyMatch(a -> a.getAuthority().equals(Role.Constants.ROLE_ADMIN_VALUE));
+        .getAuthorities()
+        .stream()
+        .anyMatch(a -> a.getAuthority().equals(Role.Constants.ROLE_ADMIN_VALUE));
   }
 }
diff --git a/streampipes-rest/src/test/java/org/apache/streampipes/dataexplorer/v4/params/WhereStatementParamsTest.java b/streampipes-rest/src/test/java/org/apache/streampipes/dataexplorer/v4/params/WhereStatementParamsTest.java
index c58f6f204..694af5369 100644
--- a/streampipes-rest/src/test/java/org/apache/streampipes/dataexplorer/v4/params/WhereStatementParamsTest.java
+++ b/streampipes-rest/src/test/java/org/apache/streampipes/dataexplorer/v4/params/WhereStatementParamsTest.java
@@ -15,6 +15,7 @@
  * limitations under the License.
  *
  */
+
 package org.apache.streampipes.dataexplorer.v4.params;
 
 import org.junit.Test;
@@ -22,36 +23,37 @@ import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 
 public class WhereStatementParamsTest {
-    @Test
-    public void filterNumber() {
-        WhereStatementParams result = WhereStatementParams.from("", "[fieldName;=;6]");
-        WhereCondition expected = new WhereCondition("fieldName", "=", "6");
-
-        assertWhereCondition(result, expected);
-    }
-
-    @Test
-    public void filterBoolean() {
-        WhereStatementParams result = WhereStatementParams.from("", "[fieldName;=;true]");
-        WhereCondition expected = new WhereCondition("fieldName", "=", "true");
-
-        assertWhereCondition(result, expected);
-    }
-
-    @Test
-    public void filterString() {
-        WhereStatementParams result = WhereStatementParams.from("", "[fieldName;=;a]");
-        WhereCondition expected = new WhereCondition("fieldName", "=", "'a'");
-
-        assertWhereCondition(result, expected);
-    }
-    private void assertWhereCondition(WhereStatementParams result, WhereCondition expected) {
-        assertEquals(1, result.getWhereConditions().size());
-        WhereCondition resultingWhereCondition = result.getWhereConditions().get(0);
-        assertEquals(expected.getField(), resultingWhereCondition.getField());
-        assertEquals(expected.getOperator(), resultingWhereCondition.getOperator());
-        assertEquals(expected.getCondition(), resultingWhereCondition.getCondition());
-    }
-
-
-}
\ No newline at end of file
+  @Test
+  public void filterNumber() {
+    WhereStatementParams result = WhereStatementParams.from("", "[fieldName;=;6]");
+    WhereCondition expected = new WhereCondition("fieldName", "=", "6");
+
+    assertWhereCondition(result, expected);
+  }
+
+  @Test
+  public void filterBoolean() {
+    WhereStatementParams result = WhereStatementParams.from("", "[fieldName;=;true]");
+    WhereCondition expected = new WhereCondition("fieldName", "=", "true");
+
+    assertWhereCondition(result, expected);
+  }
+
+  @Test
+  public void filterString() {
+    WhereStatementParams result = WhereStatementParams.from("", "[fieldName;=;a]");
+    WhereCondition expected = new WhereCondition("fieldName", "=", "'a'");
+
+    assertWhereCondition(result, expected);
+  }
+
+  private void assertWhereCondition(WhereStatementParams result, WhereCondition expected) {
+    assertEquals(1, result.getWhereConditions().size());
+    WhereCondition resultingWhereCondition = result.getWhereConditions().get(0);
+    assertEquals(expected.getField(), resultingWhereCondition.getField());
+    assertEquals(expected.getOperator(), resultingWhereCondition.getOperator());
+    assertEquals(expected.getCondition(), resultingWhereCondition.getCondition());
+  }
+
+
+}