This is an automated email from the ASF dual-hosted git repository.
dominikriemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to refs/heads/dev by this push:
new 8e47c77679 feat: Improve error messages shown for runtime-resolvable
static prop… (#4681)
8e47c77679 is described below
commit 8e47c77679122d8a0c143dd7007c62ca00e2c949
Author: Dominik Riemer <[email protected]>
AuthorDate: Fri Jul 3 10:33:34 2026 +0200
feat: Improve error messages shown for runtime-resolvable static prop…
(#4681)
---
.../remote/ContainerProvidedOptionsHandler.java | 29 +++++++++++++++++++---
.../rest/impl/ContainerProvidedOptions.java | 14 ++++++++---
2 files changed, 36 insertions(+), 7 deletions(-)
diff --git
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java
index 32badb4040..1b54cfb76a 100644
---
a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java
+++
b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java
@@ -18,6 +18,8 @@
package org.apache.streampipes.manager.remote;
import
org.apache.streampipes.commons.exceptions.NoServiceEndpointsAvailableException;
+import org.apache.streampipes.commons.exceptions.SpConfigurationException;
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import
org.apache.streampipes.manager.api.extensions.ExtensionServiceRequestManager;
import
org.apache.streampipes.manager.api.extensions.ExtensionServiceRequestTarget;
import
org.apache.streampipes.manager.api.extensions.ExtensionServiceRequestTargets;
@@ -32,6 +34,7 @@ import
org.apache.streampipes.serializers.json.JacksonSerializer;
import org.apache.streampipes.svcdiscovery.api.model.SpServiceUrlProvider;
import com.google.gson.JsonSyntaxException;
+import org.apache.http.HttpStatus;
import java.io.IOException;
import java.util.Set;
@@ -47,7 +50,8 @@ public class ContainerProvidedOptionsHandler {
this.resourceManager = resourceManager;
}
- public RuntimeOptionsResponse fetchRemoteOptions(RuntimeOptionsRequest
request) {
+ public RuntimeOptionsResponse fetchRemoteOptions(RuntimeOptionsRequest
request)
+ throws SpConfigurationException, SpRuntimeException {
try {
var payload =
JacksonSerializer.getObjectMapper().writeValueAsString(request);
@@ -56,10 +60,19 @@ public class ContainerProvidedOptionsHandler {
var response = extensionRequestManager.request(
ExtensionServiceRequests.containerProvidedOptions(requestTarget,
payload, authToken)
);
- return handleResponse(response.responseBody());
+
+ if (response.isSuccess()) {
+ return handleResponse(response.responseBody());
+ } else if (response.statusCode() == HttpStatus.SC_BAD_REQUEST) {
+ throw handleConfigurationError(response.responseBody());
+ } else {
+ throw new SpRuntimeException(
+ "Could not resolve runtime options, status code: " +
response.statusCode());
+ }
+ } catch (SpConfigurationException | SpRuntimeException e) {
+ throw e;
} catch (Exception e) {
- e.printStackTrace();
- return new RuntimeOptionsResponse();
+ throw new SpRuntimeException("Could not resolve runtime options", e);
}
}
@@ -67,6 +80,14 @@ public class ContainerProvidedOptionsHandler {
return JacksonSerializer.getObjectMapper().readValue(responseBody,
RuntimeOptionsResponse.class);
}
+ private SpConfigurationException handleConfigurationError(String
responseBody) throws IOException {
+ var exception = JacksonSerializer
+ .getObjectMapper()
+ .readValue(responseBody, SpConfigurationException.class);
+
+ return new SpConfigurationException(exception.getMessage(),
exception.getCause());
+ }
+
private ExtensionServiceRequestTarget getEndpointRequestTarget(String appId)
throws NoServiceEndpointsAvailableException {
SpServiceUrlProvider provider =
ExtensionsServiceEndpointUtils.getPipelineElementType(appId);
diff --git
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java
index b74c155537..2508aee15e 100644
---
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java
+++
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java
@@ -17,10 +17,12 @@
*/
package org.apache.streampipes.rest.impl;
+import org.apache.streampipes.commons.exceptions.SpConfigurationException;
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import
org.apache.streampipes.manager.api.extensions.ExtensionServiceRequestManager;
import org.apache.streampipes.manager.remote.ContainerProvidedOptionsHandler;
+import org.apache.streampipes.model.monitoring.SpLogMessage;
import org.apache.streampipes.model.runtime.RuntimeOptionsRequest;
-import org.apache.streampipes.model.runtime.RuntimeOptionsResponse;
import org.apache.streampipes.resource.management.SpResourceManager;
import org.apache.streampipes.rest.core.base.impl.AbstractRestResource;
@@ -48,7 +50,13 @@ public class ContainerProvidedOptions extends
AbstractRestResource {
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
- public ResponseEntity<RuntimeOptionsResponse>
fetchRemoteOptions(@RequestBody RuntimeOptionsRequest request) {
- return ok(containerProvidedOptionsHandler.fetchRemoteOptions(request));
+ public ResponseEntity<?> fetchRemoteOptions(@RequestBody
RuntimeOptionsRequest request) {
+ try {
+ return ok(containerProvidedOptionsHandler.fetchRemoteOptions(request));
+ } catch (SpConfigurationException e) {
+ return badRequest(SpLogMessage.from(e));
+ } catch (SpRuntimeException e) {
+ return serverError(SpLogMessage.from(e));
+ }
}
}