This is an automated email from the ASF dual-hosted git repository. riemer pushed a commit to branch streampipes-rest-cleanup-1 in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit 1c372318640331defd49f9558b77542ab70c4e6c Author: Dominik Riemer <[email protected]> AuthorDate: Tue Mar 3 23:29:22 2026 +0100 chore: Cleanup some code in streampipes-rest --- .../shared/exception/SpRestExceptionHandler.java | 18 +++++++--- .../rest/impl/connect/CompactAdapterResource.java | 23 +++---------- .../impl/connect/ConnectRestExceptionHandler.java | 25 ++++---------- .../rest/impl/connect/DescriptionResource.java | 40 ++++++++++------------ .../rest/impl/connect/GuessResource.java | 36 ------------------- .../impl/connect/RuntimeResolvableResource.java | 7 ++-- .../TransformationScriptLanguageResource.java | 14 -------- 7 files changed, 45 insertions(+), 118 deletions(-) diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java index 8b74981166..785f7964df 100644 --- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java +++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java @@ -18,6 +18,7 @@ package org.apache.streampipes.rest.shared.exception; +import org.apache.streampipes.commons.exceptions.NoServiceEndpointsAvailableException; import org.apache.streampipes.commons.exceptions.connect.AdapterException; import org.apache.streampipes.model.monitoring.SpLogMessage; @@ -32,15 +33,24 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExcep public class SpRestExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler(value = {AdapterException.class}) - private ResponseEntity<Object> handleAdapterException(RuntimeException ex, WebRequest request) { - var spLogMessageException = new SpLogMessageException(HttpStatus.INTERNAL_SERVER_ERROR, SpLogMessage.from(ex)); + private ResponseEntity<Object> handleAdapterException(AdapterException ex, WebRequest request) { + var spLogMessageException = new SpLogMessageException(HttpStatus.INTERNAL_SERVER_ERROR, SpLogMessage.from(ex)); + return handleSpLogMessageException(spLogMessageException, request); + } + + @ExceptionHandler(value = {NoServiceEndpointsAvailableException.class}) + private ResponseEntity<Object> handleNoServiceEndpointsAvailableException( + NoServiceEndpointsAvailableException ex, + WebRequest request) { + var spLogMessageException = new SpLogMessageException(HttpStatus.INTERNAL_SERVER_ERROR, SpLogMessage.from(ex)); return handleSpLogMessageException(spLogMessageException, request); } @ExceptionHandler(value = {SpLogMessageException.class}) protected ResponseEntity<Object> handleSpLogMessageException( - RuntimeException ex, WebRequest request) { - var exception = (SpLogMessageException) ex; + SpLogMessageException ex, + WebRequest request) { + var exception = ex; return ResponseEntity .status(exception.getStatus()) .body(exception.getSpMessage()); diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java index 8ba5dd7675..2101cb3fe6 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java @@ -26,7 +26,6 @@ import org.apache.streampipes.connect.management.management.AdapterMasterManagem import org.apache.streampipes.connect.management.management.AdapterUpdateManagement; import org.apache.streampipes.connect.management.management.CompactAdapterManagement; import org.apache.streampipes.manager.pipeline.compact.CompactPipelineManagement; -import org.apache.streampipes.model.connect.adapter.AdapterDescription; import org.apache.streampipes.model.connect.adapter.compact.CompactAdapter; import org.apache.streampipes.model.message.Notifications; import org.apache.streampipes.resource.management.SpResourceManager; @@ -52,7 +51,7 @@ import org.springframework.web.bind.annotation.RestController; public class CompactAdapterResource extends AbstractAdapterResource<AdapterMasterManagement> { private static final Logger LOG = LoggerFactory.getLogger(CompactAdapterResource.class); - private final AdapterGenerationSteps adapterGenerationSteps; + private final CompactAdapterManagement compactAdapterManagement; private final AdapterUpdateManagement adapterUpdateManagement; public CompactAdapterResource() { @@ -63,7 +62,7 @@ public class CompactAdapterResource extends AbstractAdapterResource<AdapterMaste new SpResourceManager().manageDataStreams(), AdapterMetricsManager.INSTANCE.getAdapterMetrics() )); - this.adapterGenerationSteps = new AdapterGenerationSteps(); + this.compactAdapterManagement = new CompactAdapterManagement(new AdapterGenerationSteps().getGenerators()); this.adapterUpdateManagement = new AdapterUpdateManagement(managementService); } @@ -79,7 +78,7 @@ public class CompactAdapterResource extends AbstractAdapterResource<AdapterMaste @RequestBody CompactAdapter compactAdapter ) throws Exception { - var adapterDescription = getGeneratedAdapterDescription(compactAdapter); + var adapterDescription = compactAdapterManagement.convertToAdapterDescription(compactAdapter); var principalSid = getAuthenticatedUserSid(); var adapterId = adapterDescription.getElementId(); @@ -136,7 +135,7 @@ public class CompactAdapterResource extends AbstractAdapterResource<AdapterMaste var existingAdapter = managementService.getAdapter(elementId); if (existingAdapter != null) { - var adapterDescription = getGeneratedAdapterDescription(compactAdapter, existingAdapter); + var adapterDescription = compactAdapterManagement.convertToAdapterDescription(compactAdapter, existingAdapter); try { adapterUpdateManagement.updateAdapter(adapterDescription); @@ -150,18 +149,4 @@ public class CompactAdapterResource extends AbstractAdapterResource<AdapterMaste throw new BadRequestException(String.format("Adapter with id %s not found", elementId)); } } - - private AdapterDescription getGeneratedAdapterDescription(CompactAdapter compactAdapter) throws Exception { - var generators = adapterGenerationSteps.getGenerators(); - return new CompactAdapterManagement(generators).convertToAdapterDescription(compactAdapter); - } - - private AdapterDescription getGeneratedAdapterDescription( - CompactAdapter compactAdapter, - AdapterDescription existingAdapter - ) throws Exception { - var generators = adapterGenerationSteps.getGenerators(); - return new CompactAdapterManagement(generators).convertToAdapterDescription(compactAdapter, existingAdapter); - } - } diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/ConnectRestExceptionHandler.java similarity index 50% copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java copy to streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/ConnectRestExceptionHandler.java index 8b74981166..76ab51c468 100644 --- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/exception/SpRestExceptionHandler.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/ConnectRestExceptionHandler.java @@ -16,33 +16,22 @@ * */ -package org.apache.streampipes.rest.shared.exception; +package org.apache.streampipes.rest.impl.connect; -import org.apache.streampipes.commons.exceptions.connect.AdapterException; -import org.apache.streampipes.model.monitoring.SpLogMessage; +import org.apache.streampipes.extensions.api.connect.exception.WorkerAdapterException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.context.request.WebRequest; -import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; @ControllerAdvice -public class SpRestExceptionHandler extends ResponseEntityExceptionHandler { +public class ConnectRestExceptionHandler { - @ExceptionHandler(value = {AdapterException.class}) - private ResponseEntity<Object> handleAdapterException(RuntimeException ex, WebRequest request) { - var spLogMessageException = new SpLogMessageException(HttpStatus.INTERNAL_SERVER_ERROR, SpLogMessage.from(ex)); - return handleSpLogMessageException(spLogMessageException, request); - } - - @ExceptionHandler(value = {SpLogMessageException.class}) - protected ResponseEntity<Object> handleSpLogMessageException( - RuntimeException ex, WebRequest request) { - var exception = (SpLogMessageException) ex; + @ExceptionHandler(value = {WorkerAdapterException.class}) + private ResponseEntity<Object> handleWorkerAdapterException(WorkerAdapterException ex) { return ResponseEntity - .status(exception.getStatus()) - .body(exception.getSpMessage()); + .status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(ex.getExceptionMessage()); } } 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 d26eaf951a..780799712a 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 @@ -56,9 +56,7 @@ public class DescriptionResource extends AbstractAdapterResource<DescriptionMana @GetMapping(path = "/adapters", produces = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("this.hasReadAuthority()") public ResponseEntity<List<AdapterDescription>> getAdapters() { - List<AdapterDescription> result = managementService.getAdapters(); - - return ok(result); + return ok(managementService.getAdapters()); } @GetMapping(path = "/{id}/assets", produces = "application/zip") @@ -76,15 +74,12 @@ public class DescriptionResource extends AbstractAdapterResource<DescriptionMana } if (result == null) { - LOG.error("Not found adapter with id " + id); + 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 ok(result); + } catch (AdapterException | NoServiceEndpointsAvailableException e) { + LOG.error("Not found adapter with id {}", id, e); return fail(); } } @@ -105,15 +100,19 @@ public class DescriptionResource extends AbstractAdapterResource<DescriptionMana } if (result == null) { - LOG.error("Not found adapter with id " + id); + LOG.error("Not found adapter with id {}", id); return fail(); +<<<<<<< Updated upstream } else { return ok(result); +======= +>>>>>>> Stashed changes } - } catch (AdapterException e) { - LOG.error("Not found adapter with id " + id); - return fail(); - } catch (NoServiceEndpointsAvailableException e) { + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(ImageMimeTypeDetector.detect(result))) + .body(result); + } catch (AdapterException | NoServiceEndpointsAvailableException e) { + LOG.error("Not found adapter with id {}", id, e); return fail(); } } @@ -133,15 +132,12 @@ public class DescriptionResource extends AbstractAdapterResource<DescriptionMana } if (result == null) { - LOG.error("Not found adapter with id " + id); + 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 ok(result); + } catch (AdapterException | NoServiceEndpointsAvailableException e) { + LOG.error("Not found adapter with id {}", id, e); return fail(); } } 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 1b62fc8ed6..921fb565cd 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 @@ -22,24 +22,19 @@ import org.apache.streampipes.commons.exceptions.NoServiceEndpointsAvailableExce import org.apache.streampipes.commons.exceptions.connect.AdapterException; import org.apache.streampipes.connect.management.management.GuessManagement; import org.apache.streampipes.extensions.api.connect.exception.WorkerAdapterException; -import org.apache.streampipes.model.client.user.DefaultPrivilege; import org.apache.streampipes.model.connect.adapter.AdapterDescription; import org.apache.streampipes.model.monitoring.SpLogMessage; import org.apache.streampipes.model.schema.EventSchema; -import org.apache.streampipes.rest.shared.exception.SpLogMessageException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.context.request.WebRequest; import java.io.IOException; @@ -103,35 +98,4 @@ public class GuessResource extends AbstractAdapterResource<GuessManagement> { return ok(managementService.performAdapterEventPreview(adapterDescription)); } - - /** - * required by Spring expression - */ - public boolean hasWriteAuthority() { - return isAdminOrHasAnyAuthority(DefaultPrivilege.Constants.PRIVILEGE_WRITE_ADAPTER_VALUE); - } - - // TODO move these ExceptionHandlers to another place - @ExceptionHandler(value = {WorkerAdapterException.class}) - private ResponseEntity<Object> handleAdapterException(WorkerAdapterException ex, WebRequest request) { - var spLogMessageException = ex.getExceptionMessage(); - return ResponseEntity - .status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(spLogMessageException); - } - @ExceptionHandler(value = {AdapterException.class}) - private ResponseEntity<Object> handleAdapterException(AdapterException ex, WebRequest request) { - var spLogMessageException = new SpLogMessageException(HttpStatus.INTERNAL_SERVER_ERROR, SpLogMessage.from(ex)); - return handleSpLogMessageException(spLogMessageException, request); - } - @ExceptionHandler(value = {SpLogMessageException.class}) - protected ResponseEntity<Object> handleSpLogMessageException( - RuntimeException ex, WebRequest request) { - var exception = (SpLogMessageException) ex; - return ResponseEntity - .status(exception.getStatus()) - .body(exception.getSpMessage()); - } - } - 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 d5d1cd1942..fddde0f7a9 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 @@ -72,11 +72,8 @@ public class RuntimeResolvableResource extends AbstractAdapterResource<Void> { RuntimeOptionsResponse result = WorkerRestClient.getConfiguration(baseUrl, appId, runtimeOptionsRequest); return ok(result); - } catch (AdapterException e) { - LOG.error("Adapter exception occurred", e); - return serverError(SpLogMessage.from(e)); - } catch (NoServiceEndpointsAvailableException e) { - LOG.error("Could not find service endpoint for {} while fetching configuration", appId); + } catch (AdapterException | NoServiceEndpointsAvailableException e) { + LOG.error("Could not fetch runtime configuration for {}", appId, e); return serverError(SpLogMessage.from(e)); } catch (SpConfigurationException e) { LOG.error("Tried to fetch a runtime configuration with insufficient settings"); diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/TransformationScriptLanguageResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/TransformationScriptLanguageResource.java index 0780f040fb..18fe0c7f0d 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/TransformationScriptLanguageResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/TransformationScriptLanguageResource.java @@ -23,16 +23,11 @@ import org.apache.streampipes.connect.transformer.api.TransformationEngines; import org.apache.streampipes.manager.execution.endpoint.ExtensionsServiceEndpointUtils; import org.apache.streampipes.model.connect.ScriptMetadata; import org.apache.streampipes.model.connect.adapter.AdapterDescription; -import org.apache.streampipes.model.monitoring.SpLogMessage; -import org.apache.streampipes.rest.shared.exception.SpLogMessageException; import org.apache.streampipes.svcdiscovery.SpServiceDiscovery; import org.apache.streampipes.svcdiscovery.api.model.DefaultSpServiceTypes; import org.apache.streampipes.svcdiscovery.api.model.SpServiceUrlProvider; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -75,13 +70,4 @@ public class TransformationScriptLanguageResource { } } - - // TODO move these ExceptionHandlers to another place - @ExceptionHandler(value = {NoServiceEndpointsAvailableException.class}) - private ResponseEntity<Object> handleAdapterException(NoServiceEndpointsAvailableException ex) { - var spLogMessageException = new SpLogMessageException(HttpStatus.INTERNAL_SERVER_ERROR, SpLogMessage.from(ex)); - return ResponseEntity - .status(spLogMessageException.getStatus()) - .body(spLogMessageException.getSpMessage()); - } }
