You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2023/01/13 11:02:46 UTC

[streampipes] 01/01: Reduce warnings at startup, improve structure of resource configs (#1091)

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

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

commit bf50b15e9bf33be5dd428917ef6c7ad0c0040939
Author: Dominik Riemer <do...@gmail.com>
AuthorDate: Fri Jan 13 12:02:21 2023 +0100

    Reduce warnings at startup, improve structure of resource configs (#1091)
---
 .../streampipes/ps/DataLakeMeasureResourceV4.java  |   1 -
 .../streampipes/rest/impl/PipelineResource.java    |   1 -
 .../rest/impl/pe/DataStreamResource.java           |   1 -
 .../service/base/rest/BaseResourceConfig.java      |  20 ++-
 .../service/core/StreamPipesResourceConfig.java    | 167 +++++++++++----------
 .../extensions/ExtensionsResourceConfig.java       |  40 +++--
 6 files changed, 116 insertions(+), 114 deletions(-)

diff --git a/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java b/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java
index 03d2b9dfa..a59ce31ac 100644
--- a/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java
+++ b/streampipes-platform-services/src/main/java/org/apache/streampipes/ps/DataLakeMeasureResourceV4.java
@@ -47,7 +47,6 @@ public class DataLakeMeasureResourceV4 extends AbstractAuthGuardedRestResource {
   @JacksonSerialized
   @Produces(MediaType.APPLICATION_JSON)
   @Consumes(MediaType.APPLICATION_JSON)
-  @Path("/")
   public Response addDataLake(DataLakeMeasure dataLakeMeasure) {
     DataLakeMeasure result = this.dataLakeManagement.addDataLake(dataLakeMeasure);
     return ok(result);
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 be3ee329a..5cb020986 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
@@ -75,7 +75,6 @@ public class PipelineResource extends AbstractAuthGuardedRestResource {
 
   @GET
   @Produces(MediaType.APPLICATION_JSON)
-  @Path("/")
   @JacksonSerialized
   @Operation(summary = "Get all pipelines of the current user",
       tags = {"Pipeline"},
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataStreamResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataStreamResource.java
index 76f0b16bf..4cd90e99c 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataStreamResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/pe/DataStreamResource.java
@@ -55,7 +55,6 @@ public class DataStreamResource extends AbstractAuthGuardedRestResource {
   }
 
   @GET
-  @Path("/")
   @Produces({MediaType.APPLICATION_JSON, SpMediaType.JSONLD})
   @JacksonSerialized
   @PreAuthorize(AuthConstants.HAS_READ_PIPELINE_ELEMENT_PRIVILEGE)
diff --git a/streampipes-service-base/src/main/java/org/apache/streampipes/service/base/rest/BaseResourceConfig.java b/streampipes-service-base/src/main/java/org/apache/streampipes/service/base/rest/BaseResourceConfig.java
index 3eb8c9279..64c8f043b 100644
--- a/streampipes-service-base/src/main/java/org/apache/streampipes/service/base/rest/BaseResourceConfig.java
+++ b/streampipes-service-base/src/main/java/org/apache/streampipes/service/base/rest/BaseResourceConfig.java
@@ -18,19 +18,25 @@
 package org.apache.streampipes.service.base.rest;
 
 import org.glassfish.jersey.server.ResourceConfig;
-import org.glassfish.jersey.servlet.ServletProperties;
+import org.glassfish.jersey.server.ServerProperties;
 
-import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
 
 public abstract class BaseResourceConfig extends ResourceConfig {
 
   public BaseResourceConfig() {
-    property(ServletProperties.FILTER_FORWARD_ON_404, true);
-    getClassesToRegister()
-        .forEach(set -> set.forEach(this::register));
-    register(ServiceHealthResource.class);
+    var customConfigs = new HashMap<String, Object>();
+    addAdditionalConfigs(customConfigs);
+    property(ServerProperties.WADL_FEATURE_DISABLE, true);
+    addProperties(customConfigs);
+    getClassesToRegister().forEach(this::register);
+
   }
 
-  public abstract List<List<Class<?>>> getClassesToRegister();
+  public abstract Set<Class<?>> getClassesToRegister();
+
+  public abstract void addAdditionalConfigs(Map<String, Object> configs);
 
 }
diff --git a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/StreamPipesResourceConfig.java b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/StreamPipesResourceConfig.java
index 67dd94273..1a4f253b7 100644
--- a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/StreamPipesResourceConfig.java
+++ b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/StreamPipesResourceConfig.java
@@ -83,104 +83,107 @@ import org.apache.streampipes.rest.impl.pe.DataProcessorResource;
 import org.apache.streampipes.rest.impl.pe.DataSinkResource;
 import org.apache.streampipes.rest.impl.pe.DataStreamResource;
 import org.apache.streampipes.rest.shared.serializer.JacksonSerializationProvider;
+import org.apache.streampipes.service.base.rest.BaseResourceConfig;
 import org.apache.streampipes.service.base.rest.ServiceHealthResource;
 
 import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
 import org.glassfish.jersey.media.multipart.MultiPartFeature;
-import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.server.ServerProperties;
 import org.springframework.context.annotation.Configuration;
 
 import jakarta.ws.rs.ApplicationPath;
 
-import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
 
 @Configuration
 @ApplicationPath("/api")
-public class StreamPipesResourceConfig extends ResourceConfig {
+public class StreamPipesResourceConfig extends BaseResourceConfig {
 
-  public StreamPipesResourceConfig() {
-    setProperties(Collections.singletonMap("jersey.config.server.response.setStatusOverSendError", true));
-    register(AccountActivationResource.class);
-    register(AdapterMonitoringResource.class);
-    register(Authentication.class);
-    register(AssetDashboardResource.class);
-    register(AssetManagementResource.class);
-    register(AutoComplete.class);
-    register(CategoryResource.class);
-    register(ConsulConfig.class);
-    register(ContainerProvidedOptions.class);
-    register(DashboardWidget.class);
-    register(Dashboard.class);
-    register(DataExportResource.class);
-    register(DataImportResource.class);
-    register(DataLakeImageResource.class);
-    register(DataLakeResourceV3.class);
-    register(DataLakeMeasureResourceV3.class);
-    register(DataLakeMeasureResourceV4.class);
-    register(DataStream.class);
-    register(EmailConfigurationResource.class);
-    register(EmailResource.class);
-    register(ExtensionsServiceEndpointResource.class);
-    register(FunctionsResource.class);
-    register(GeneralConfigurationResource.class);
-    register(GenericStorageResource.class);
-    register(LabelResource.class);
-    register(MeasurementUnitResource.class);
-    register(Notification.class);
-    register(OntologyMeasurementUnit.class);
-    register(PermissionResource.class);
-    register(PersistedDataStreamResource.class);
-    register(PipelineCanvasMetadataCache.class);
-    register(PipelineCanvasMetadataResource.class);
-    register(PipelineCache.class);
-    register(PipelineCategory.class);
-    register(PipelineElementAsset.class);
-    register(PipelineElementCategory.class);
-    register(PipelineElementFile.class);
-    register(PipelineElementImport.class);
-    register(PipelineElementPreview.class);
-    register(PipelineElementRuntimeInfo.class);
-    register(PipelineMonitoring.class);
-    register(PipelineResource.class);
-    register(PipelineTemplate.class);
-    register(DataSinkResource.class);
-    register(DataProcessorResource.class);
-    register(DataStreamResource.class);
-    register(Setup.class);
-    register(ResetResource.class);
-    register(RestorePasswordResource.class);
-    register(ServiceHealthResource.class);
-    register(UserResource.class);
-    register(Version.class);
-    register(PipelineElementAsset.class);
-    register(DataLakeDashboardResource.class);
-    register(DataLakeWidgetResource.class);
-    register(DataLakeResourceV3.class);
-    register(PipelineElementFile.class);
-    register(DashboardWidget.class);
-    register(Dashboard.class);
-    register(VisualizablePipelineResource.class);
-    register(UserGroupResource.class);
+  @Override
+  public Set<Class<?>> getClassesToRegister() {
+    return Set.of(
+        AccountActivationResource.class,
+        AdapterMonitoringResource.class,
+        Authentication.class,
+        AssetDashboardResource.class,
+        AssetManagementResource.class,
+        AutoComplete.class,
+        CategoryResource.class,
+        ConsulConfig.class,
+        ContainerProvidedOptions.class,
+        DashboardWidget.class,
+        Dashboard.class,
+        DataExportResource.class,
+        DataImportResource.class,
+        DataLakeDashboardResource.class,
+        DataLakeWidgetResource.class,
+        DataLakeImageResource.class,
+        DataLakeResourceV3.class,
+        DataLakeMeasureResourceV3.class,
+        DataLakeMeasureResourceV4.class,
+        DataStream.class,
+        EmailConfigurationResource.class,
+        EmailResource.class,
+        ExtensionsServiceEndpointResource.class,
+        FunctionsResource.class,
+        GeneralConfigurationResource.class,
+        GenericStorageResource.class,
+        LabelResource.class,
+        MeasurementUnitResource.class,
+        Notification.class,
+        OntologyMeasurementUnit.class,
+        PermissionResource.class,
+        PersistedDataStreamResource.class,
+        PipelineCanvasMetadataCache.class,
+        PipelineCanvasMetadataResource.class,
+        PipelineCache.class,
+        PipelineCategory.class,
+        PipelineElementAsset.class,
+        PipelineElementCategory.class,
+        PipelineElementFile.class,
+        PipelineElementImport.class,
+        PipelineElementPreview.class,
+        PipelineElementRuntimeInfo.class,
+        PipelineMonitoring.class,
+        PipelineResource.class,
+        PipelineTemplate.class,
+        DataSinkResource.class,
+        DataProcessorResource.class,
+        DataStreamResource.class,
+        Setup.class,
+        ResetResource.class,
+        RestorePasswordResource.class,
+        ServiceHealthResource.class,
+        UserResource.class,
+        Version.class,
 
-    // Serializers
-    register(JacksonSerializationProvider.class);
-    register(MultiPartFeature.class);
+        VisualizablePipelineResource.class,
+        UserGroupResource.class,
 
-    // Platform Services
-    register(PipelineElementTemplateResource.class);
-    register(DataLakeResourceV4.class);
-    register(OpenApiResource.class);
+        // Serializers
+        JacksonSerializationProvider.class,
+        MultiPartFeature.class,
 
+        // Platform Services
+        PipelineElementTemplateResource.class,
+        DataLakeResourceV4.class,
+        OpenApiResource.class,
 
-    // Connect Master
-    register(AdapterResource.class);
-    register(DescriptionResource.class);
-    register(SourcesResource.class);
-    register(GuessResource.class);
-//    register(MultiPartFeature.class);
-    register(UnitResource.class);
-    register(WorkerAdministrationResource.class);
-    register(RuntimeResolvableResource.class);
+        // Connect Master
+        AdapterResource.class,
+        DescriptionResource.class,
+        SourcesResource.class,
+        GuessResource.class,
+
+        UnitResource.class,
+        WorkerAdministrationResource.class,
+        RuntimeResolvableResource.class
+    );
   }
 
+  @Override
+  public void addAdditionalConfigs(Map<String, Object> configs) {
+    configs.put(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true);
+  }
 }
diff --git a/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/ExtensionsResourceConfig.java b/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/ExtensionsResourceConfig.java
index e03725d57..beaba5392 100644
--- a/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/ExtensionsResourceConfig.java
+++ b/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/ExtensionsResourceConfig.java
@@ -31,46 +31,42 @@ import org.apache.streampipes.rest.extensions.pe.DataStreamPipelineElementResour
 import org.apache.streampipes.rest.extensions.pe.PipelineTemplateResource;
 import org.apache.streampipes.rest.shared.serializer.JacksonSerializationProvider;
 import org.apache.streampipes.service.base.rest.BaseResourceConfig;
+import org.apache.streampipes.service.base.rest.ServiceHealthResource;
 
 import org.glassfish.jersey.media.multipart.MultiPartFeature;
+import org.glassfish.jersey.servlet.ServletProperties;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 @Component
 public class ExtensionsResourceConfig extends BaseResourceConfig {
 
   @Override
-  public List<List<Class<?>>> getClassesToRegister() {
-    return List.of(
-        getAdapterResourceClasses(),
-        getBaseResourceClasses(),
-        getPipelineElementResourceClasses()
-    );
-  }
-
-  private List<Class<?>> getAdapterResourceClasses() {
-    return List.of(
+  public Set<Class<?>> getClassesToRegister() {
+    return Set.of(
         GuessResource.class,
         RuntimeResolvableResource.class,
         AdapterWorkerResource.class,
         MultiPartFeature.class,
         AdapterAssetResource.class,
-        HttpServerAdapterResource.class);
-  }
-
-  private List<Class<?>> getBaseResourceClasses() {
-    return List.of(
-        JacksonSerializationProvider.class,
-        MonitoringResource.class);
-  }
+        HttpServerAdapterResource.class,
 
-  private List<Class<?>> getPipelineElementResourceClasses() {
-    return List.of(
         DataSinkPipelineElementResource.class,
         DataProcessorPipelineElementResource.class,
         DataStreamPipelineElementResource.class,
         WelcomePage.class,
-        PipelineTemplateResource.class);
+        PipelineTemplateResource.class,
+
+        ServiceHealthResource.class,
+        JacksonSerializationProvider.class,
+        MonitoringResource.class
+    );
+  }
+
+  @Override
+  public void addAdditionalConfigs(Map<String, Object> configs) {
+    configs.put(ServletProperties.FILTER_FORWARD_ON_404, true);
   }
 }