diff --git a/build.gradle.kts b/build.gradle.kts index ffb5004..ca90dac 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "org.eclipse.dataplane-core" -version = "0.0.8-SNAPSHOT" +version = "0.0.9-SNAPSHOT" repositories { mavenCentral() diff --git a/src/main/java/org/eclipse/dataplane/Dataplane.java b/src/main/java/org/eclipse/dataplane/Dataplane.java index 6ce7aa0..dfe40ec 100644 --- a/src/main/java/org/eclipse/dataplane/Dataplane.java +++ b/src/main/java/org/eclipse/dataplane/Dataplane.java @@ -352,7 +352,7 @@ private Result notifyControlPlane(String action, DataFlow dataFlow, Object controlPlaneStore.findById(dataFlow.getControlplaneId()) .compose(controlPlane -> { - var authorizationProfile = controlPlane.authorization(); + var authorizationProfile = controlPlane.getAuthorization(); if (authorizationProfile != null) { var authorization = authorizations.get(authorizationProfile.getType()); return authorization.authorizationHeader(authorizationProfile); @@ -386,9 +386,10 @@ public ControlPlaneStore controlPlaneStore() { } public Result registerControlPlane(ControlPlaneRegistrationMessage message) { - for (var auth : message.authorization()) { - if (!authorizations.containsKey(auth.getType())) { - return Result.failure(new AuthorizationNotSupported(auth)); + var authorization = message.authorization(); + if (authorization != null) { + if (!authorizations.containsKey(authorization.getType())) { + return Result.failure(new AuthorizationNotSupported(authorization)); } } diff --git a/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java b/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java index 39d04f3..10ab1e4 100644 --- a/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java +++ b/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java @@ -18,15 +18,13 @@ import org.eclipse.dataplane.domain.registration.AuthorizationProfile; import java.net.URI; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; public class ControlPlane { private String id; private URI endpoint; - private final List authorizations = new ArrayList<>(); + private AuthorizationProfile authorization; public String getId() { return id; @@ -40,12 +38,8 @@ public static ControlPlane.Builder newInstance() { return new ControlPlane.Builder(); } - public List getAuthorizations() { - return authorizations; - } - - public AuthorizationProfile authorization() { - return getAuthorizations().stream().findAny().orElse(null); + public AuthorizationProfile getAuthorization() { + return authorization; } @JsonPOJOBuilder @@ -72,8 +66,8 @@ public Builder endpoint(URI endpoint) { return this; } - public Builder authorization(List authorizations) { - controlPlane.authorizations.addAll(authorizations); + public Builder authorization(AuthorizationProfile authorization) { + controlPlane.authorization = authorization; return this; } } diff --git a/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java b/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java index 1b188dd..080bd4a 100644 --- a/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java +++ b/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java @@ -15,16 +15,13 @@ package org.eclipse.dataplane.domain.registration; import java.net.URI; -import java.util.List; - -import static java.util.Collections.emptyList; public record ControlPlaneRegistrationMessage( String controlplaneId, URI endpoint, - List authorization + AuthorizationProfile authorization ) { public ControlPlaneRegistrationMessage(String controlplaneId, URI endpoint) { - this(controlplaneId, endpoint, emptyList()); + this(controlplaneId, endpoint, null); } } diff --git a/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java b/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java index ecddc4d..0c0086a 100644 --- a/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java +++ b/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java @@ -27,7 +27,6 @@ import org.junit.jupiter.api.Test; import java.net.URI; -import java.util.List; import java.util.UUID; import static io.restassured.RestAssured.given; @@ -115,7 +114,7 @@ void shouldReplaceControlPlane_whenSecondCall() { void shouldReturnBadRequest_whenRequestedAuthMethodNotSupported() { var controlPlaneId = UUID.randomUUID().toString(); var authorization = new AuthorizationProfile("unsupported"); - var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage(controlPlaneId, controlPlaneEndpoint, List.of(authorization)); + var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage(controlPlaneId, controlPlaneEndpoint, authorization); given() .contentType(ContentType.JSON) @@ -128,12 +127,11 @@ void shouldReturnBadRequest_whenRequestedAuthMethodNotSupported() { .statusCode(400); } - @Test void shouldRegisterAuthorizationType() { var controlPlaneId = UUID.randomUUID().toString(); var authorization = new AuthorizationProfile("token"); - var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage(controlPlaneId, controlPlaneEndpoint, List.of(authorization)); + var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage(controlPlaneId, controlPlaneEndpoint, authorization); given() .contentType(ContentType.JSON) diff --git a/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java b/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java index 49bfda7..a9364b0 100644 --- a/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java +++ b/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java @@ -43,7 +43,6 @@ import java.net.URI; import java.util.Date; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.UUID; @@ -103,7 +102,7 @@ void shouldCommunicateWithControlPlaneUsingOauth2Authorization() { var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage( controlplaneId, controlPlane.consumerCallbackAddress(), - List.of(oauth2AuthorizationProfile()) + oauth2AuthorizationProfile() ); dataPlane.registerControlPlane(controlPlaneRegistrationMessage).orElseThrow(RuntimeException::new); diff --git a/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java b/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java index 470962f..4b2cb38 100644 --- a/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java +++ b/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java @@ -29,7 +29,6 @@ import org.junit.jupiter.api.Test; import java.net.URI; -import java.util.List; import java.util.UUID; import static java.util.Collections.emptyList; @@ -74,7 +73,7 @@ void shouldCommunicateWithControlPlaneUsingRegisteredAuthorization() { var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage( "control-plane-id", controlPlane.consumerCallbackAddress(), - List.of(TestAuthorization.createAuthorizationProfile("data-plane-id")) + TestAuthorization.createAuthorizationProfile("data-plane-id") ); dataPlane.registerControlPlane(controlPlaneRegistrationMessage).orElseThrow(RuntimeException::new); @@ -96,7 +95,7 @@ void shouldGetUnauthorized_whenControlPlaneIsNotAuthenticated() { var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage( "unmatching-control-plane-id", controlPlane.consumerCallbackAddress(), - List.of(TestAuthorization.createAuthorizationProfile("data-plane-id")) + TestAuthorization.createAuthorizationProfile("data-plane-id") ); dataPlane.registerControlPlane(controlPlaneRegistrationMessage).orElseThrow(RuntimeException::new); @@ -113,7 +112,7 @@ void shouldGetUnauthorized_withDataPlaneIsNotAuthenticated() { var controlPlaneRegistrationMessage = new ControlPlaneRegistrationMessage( "control-plane-id", controlPlane.consumerCallbackAddress(), - List.of(TestAuthorization.createAuthorizationProfile("data-plane-id")) + TestAuthorization.createAuthorizationProfile("data-plane-id") ); dataPlane.registerControlPlane(controlPlaneRegistrationMessage).orElseThrow(RuntimeException::new); diff --git a/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java b/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java index 87902fc..f83e610 100644 --- a/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java +++ b/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java @@ -37,7 +37,6 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; -import java.util.List; import java.util.Objects; import java.util.UUID; @@ -144,7 +143,7 @@ private class ConsumerDataPlane { ConsumerDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("consumer")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("consumer"))); try { storage = Files.createTempDirectory("consumer-storage"); } catch (IOException e) { @@ -180,7 +179,7 @@ private class ProviderDataPlane { private final int filesToBeCreated; ProviderDataPlane(int fileToBeCreated) { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("provider")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("provider"))); this.filesToBeCreated = fileToBeCreated; } diff --git a/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java b/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java index c1bc46d..d7f5f28 100644 --- a/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java +++ b/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java @@ -35,7 +35,6 @@ import java.net.URI; import java.nio.file.Files; import java.nio.file.Path; -import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; @@ -171,7 +170,7 @@ private static class ProviderDataPlane { .build(); ProviderDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("provider")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("provider"))); } private Result onStart(DataFlow dataFlow) { @@ -213,7 +212,7 @@ private static class ConsumerDataPlane { .build(); ConsumerDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("consumer")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("consumer"))); } public void completePreparation(String dataFlowId) { diff --git a/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java b/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java index 838b5c1..af21b40 100644 --- a/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java +++ b/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java @@ -40,7 +40,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.UUID; @@ -171,7 +170,7 @@ private static class ConsumerDataPlane { ConsumerDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("consumer")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("consumer"))); try { storage = Files.createTempDirectory("consumer-storage"); } catch (IOException e) { @@ -235,7 +234,7 @@ private static class ProviderDataPlane { private final Map> flows = new HashMap<>(); ProviderDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("provider")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("provider"))); } public Object controller() { diff --git a/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java b/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java index 30f6181..28c5758 100644 --- a/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java +++ b/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java @@ -34,7 +34,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.UUID; @@ -114,7 +113,7 @@ private static class ProviderDataPlane { .build(); ProviderDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("provider")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("provider"))); } private Result onStart(DataFlow dataFlow) { @@ -160,7 +159,7 @@ private static class ConsumerDataPlane { private final Map destinations = new HashMap<>(); ConsumerDataPlane() { - sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), List.of(createAuthorizationProfile("consumer")))); + sdk.registerControlPlane(new ControlPlaneRegistrationMessage("control-plane-id", URI.create("http://localhost:any"), createAuthorizationProfile("consumer"))); } private Result onPrepare(DataFlow dataFlow) {