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/20 14:25:33 UTC
[streampipes] branch SP-1133 updated: Extend client API to add data streams (#1133)
This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch SP-1133
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to refs/heads/SP-1133 by this push:
new 109ea0263 Extend client API to add data streams (#1133)
109ea0263 is described below
commit 109ea0263f35982ab52da1a310093ebacf2121ae
Author: Dominik Riemer <do...@gmail.com>
AuthorDate: Fri Jan 20 15:25:22 2023 +0100
Extend client API to add data streams (#1133)
---
.../org/apache/streampipes/client/api/DataStreamApi.java | 9 +++++++--
.../AbstractPipelineElementResourceManager.java | 12 ++++++++++++
.../streampipes/rest/impl/pe/DataStreamResource.java | 16 ++++++++++++++++
.../apache/streampipes/rest/security/AuthConstants.java | 4 ++++
.../extensions/function/StreamPipesFunctionHandler.java | 2 ++
5 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/streampipes-client/src/main/java/org/apache/streampipes/client/api/DataStreamApi.java b/streampipes-client/src/main/java/org/apache/streampipes/client/api/DataStreamApi.java
index ddfab7942..935c474ff 100644
--- a/streampipes-client/src/main/java/org/apache/streampipes/client/api/DataStreamApi.java
+++ b/streampipes-client/src/main/java/org/apache/streampipes/client/api/DataStreamApi.java
@@ -51,9 +51,14 @@ public class DataStreamApi extends AbstractTypedClientApi<SpDataStream> implemen
return getAll(getBaseResourcePath());
}
+ /**
+ * Directly install a new data stream
+ *
+ * @param stream The data stream to add
+ */
@Override
- public void create(SpDataStream element) {
-
+ public void create(SpDataStream stream) {
+ post(StreamPipesApiPath.fromBaseApiPath().addToPath("streams"), stream);
}
/**
diff --git a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AbstractPipelineElementResourceManager.java b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AbstractPipelineElementResourceManager.java
index ed67ee914..7dacac05e 100644
--- a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AbstractPipelineElementResourceManager.java
+++ b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/AbstractPipelineElementResourceManager.java
@@ -17,6 +17,7 @@
*/
package org.apache.streampipes.resource.management;
+import org.apache.streampipes.model.SpDataStream;
import org.apache.streampipes.model.base.NamedStreamPipesEntity;
import org.apache.streampipes.model.client.user.Permission;
import org.apache.streampipes.storage.api.CRUDStorage;
@@ -62,6 +63,17 @@ public abstract class AbstractPipelineElementResourceManager<T extends CRUDStora
}
}
+ public void add(W pipelineElement, String principalSid) throws IllegalArgumentException {
+ W existing = find(pipelineElement.getElementId());
+ if (existing == null) {
+ this.db.createElement(pipelineElement);
+ new PermissionResourceManager()
+ .createDefault(pipelineElement.getElementId(), SpDataStream.class, principalSid, false);
+ } else {
+ throw new IllegalArgumentException("This pipeline element already exists");
+ }
+ }
+
private void deleteAssetsAndPermissions(W description) {
SpResourceManager manager = new SpResourceManager();
List<Permission> permissions = manager.managePermissions().findForObjectId(description.getElementId());
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..8574a6d19 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
@@ -30,8 +30,10 @@ import org.springframework.security.access.prepost.PostFilter;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Component;
+import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
@@ -105,6 +107,20 @@ public class DataStreamResource extends AbstractAuthGuardedRestResource {
return getDataStreamResourceManager().findAsInvocation(elementId);
}
+ @POST
+ @Produces(MediaType.APPLICATION_JSON)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @JacksonSerialized
+ @PreAuthorize(AuthConstants.HAS_WRITE_PIPELINE_ELEMENT_PRIVILEGE)
+ public Response addDataStream(SpDataStream dataStream) {
+ try {
+ getDataStreamResourceManager().add(dataStream, getAuthenticatedUserSid());
+ return ok();
+ } catch (IllegalArgumentException e) {
+ return badRequest(e.getMessage());
+ }
+ }
+
private DataStreamResourceManager getDataStreamResourceManager() {
return getSpResourceManager().manageDataStreams();
}
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 325cb2752..124a074ea 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
@@ -33,6 +33,7 @@ import static org.apache.streampipes.model.client.user.Privilege.Constants.PRIVI
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_ELEMENT_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;
@@ -69,6 +70,9 @@ public class AuthConstants {
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_WRITE_PIPELINE_ELEMENT_PRIVILEGE =
+ BS + IS_ADMIN_ROLE + OR + HAS_ANY_AUTHORITY + PRIVILEGE_WRITE_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;
diff --git a/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/function/StreamPipesFunctionHandler.java b/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/function/StreamPipesFunctionHandler.java
index a9ec6cc25..ea1897838 100644
--- a/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/function/StreamPipesFunctionHandler.java
+++ b/streampipes-service-extensions/src/main/java/org/apache/streampipes/service/extensions/function/StreamPipesFunctionHandler.java
@@ -77,6 +77,8 @@ public enum StreamPipesFunctionHandler {
return false;
}
});
+
+ client.streams().create(ds);
});
});
}