From 9c376248c2672fc8b974e9e36a17ee1b09daf2d6 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Wed, 30 Apr 2025 10:46:00 -0700 Subject: [PATCH 1/4] Fixed bug in serialization of SetProjectRoleDefinitions request and response --- pom.xml | 2 +- .../authorization/SetProjectRoleDefinitionsRequest.java | 1 - .../authorization/SetProjectRoleDefinitionsResponse.java | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 20cdcd0..3e1d7a9 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege webprotege-authorization - 2.0.0-SNAPSHOT + 2.0.1-SNAPSHOT org.springframework.boot spring-boot-starter-parent diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequest.java b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequest.java index b6ed72b..efcd00d 100644 --- a/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequest.java +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequest.java @@ -13,7 +13,6 @@ import static com.fasterxml.jackson.annotation.JsonTypeInfo.*; -@JsonTypeInfo(use = Id.NAME) @JsonTypeName(SetProjectRoleDefinitionsRequest.CHANNEL) public record SetProjectRoleDefinitionsRequest(@JsonProperty("projectId") ProjectId projectId, @JsonProperty("roleDefinitions") List roleDefinitions) implements Request { diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponse.java b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponse.java index 06a68dc..746fb0f 100644 --- a/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponse.java +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponse.java @@ -12,7 +12,6 @@ import static com.fasterxml.jackson.annotation.JsonTypeInfo.*; -@JsonTypeInfo(use = Id.NAME) @JsonTypeName(SetProjectRoleDefinitionsRequest.CHANNEL) public record SetProjectRoleDefinitionsResponse(List roleDefinitions) implements Response { From 787c0aee4573f0f6c6c498f8ae96cbc82ce1ad89 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Wed, 30 Apr 2025 10:46:32 -0700 Subject: [PATCH 2/4] Added request and response to reset project roles --- .../ResetProjectRoleDefinitionsRequest.java | 19 +++++++++++++++++++ .../ResetProjectRoleDefinitionsResponse.java | 16 ++++++++++++++++ .../SetProjectRoleDefinitionsRequestTest.java | 2 -- ...SetProjectRoleDefinitionsResponseTest.java | 2 -- 4 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsRequest.java create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsResponse.java diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsRequest.java b/src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsRequest.java new file mode 100644 index 0000000..50ebfde --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsRequest.java @@ -0,0 +1,19 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import edu.stanford.protege.webprotege.common.ProjectId; +import edu.stanford.protege.webprotege.common.ProjectRequest; + +import static edu.stanford.protege.webprotege.authorization.ResetProjectRoleDefinitionsRequest.CHANNEL; + +@JsonTypeName(CHANNEL) +public record ResetProjectRoleDefinitionsRequest(@JsonProperty("projectId") ProjectId projectId) implements ProjectRequest { + + public static final String CHANNEL = "webprotege.authorization.ResetProjectRoleDefinitions"; + + @Override + public String getChannel() { + return CHANNEL; + } +} diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsResponse.java b/src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsResponse.java new file mode 100644 index 0000000..50632d6 --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/ResetProjectRoleDefinitionsResponse.java @@ -0,0 +1,16 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import edu.stanford.protege.webprotege.common.Response; + +import java.util.List; +import java.util.Objects; + +@JsonTypeName(ResetProjectRoleDefinitionsRequest.CHANNEL) +public record ResetProjectRoleDefinitionsResponse(@JsonProperty("roleDefinitions") List roleDefinitions) implements Response { + + public ResetProjectRoleDefinitionsResponse(@JsonProperty("roleDefinitions" ) List roleDefinitions) { + this.roleDefinitions = List.copyOf(Objects.requireNonNull(roleDefinitions)); + } +} diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java index d30bb7a..7355421 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java @@ -38,7 +38,6 @@ void shouldSerialize() throws IOException { var jsonContent = tester.write(request); - assertThat(jsonContent).extractingJsonPathStringValue("$.@type").isEqualTo("webprotege.authorization.SetProjectRoleDefinitions"); assertThat(jsonContent).extractingJsonPathStringValue("$.projectId").isEqualTo("12345678-1234-5678-1234-567812345678"); assertThat(jsonContent).extractingJsonPathArrayValue("$.roleDefinitions").hasSize(1); } @@ -47,7 +46,6 @@ void shouldSerialize() throws IOException { void shouldDeserialize() throws IOException { var jsonContent = """ { - "@type": "webprotege.authorization.SetProjectRoleDefinitions", "projectId": "12345678-1234-5678-1234-567812345678", "roleDefinitions": [ { diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java index cd63f60..b64348f 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java @@ -36,7 +36,6 @@ void shouldSerialize() throws IOException { var jsonContent = tester.write(response); - assertThat(jsonContent).extractingJsonPathStringValue("$.@type").isEqualTo("webprotege.authorization.SetProjectRoleDefinitions"); assertThat(jsonContent).extractingJsonPathArrayValue("$.roleDefinitions").hasSize(1); } @@ -44,7 +43,6 @@ void shouldSerialize() throws IOException { void shouldDeserialize() throws IOException { var jsonContent = """ { - "@type": "webprotege.authorization.SetProjectRoleDefinitions", "roleDefinitions": [ { "roleId": "test-role", From 177130c87d072536d87eb442059a2dcf297b9d9f Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Wed, 30 Apr 2025 14:57:12 -0700 Subject: [PATCH 3/4] Added a label field to role definition --- .../webprotege/authorization/RoleDefinition.java | 13 ++++++++++--- .../GetDefaultRoleDefinitionsResponseTest.java | 1 + .../GetProjectRoleDefinitionsResponseTest.java | 1 + .../authorization/RoleDefinitionTest.java | 6 +++++- .../SetDefaultRoleDefinitionsRequestTest.java | 1 + .../SetDefaultRoleDefinitionsResponseTest.java | 1 + .../SetProjectRoleDefinitionsRequestTest.java | 1 + .../SetProjectRoleDefinitionsResponseTest.java | 1 + 8 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/RoleDefinition.java b/src/main/java/edu/stanford/protege/webprotege/authorization/RoleDefinition.java index fdfbb2c..7806d3f 100644 --- a/src/main/java/edu/stanford/protege/webprotege/authorization/RoleDefinition.java +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/RoleDefinition.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -14,17 +15,20 @@ public record RoleDefinition(@Nonnull @JsonProperty("roleId") RoleId roleId, @Nonnull @JsonProperty("roleType") RoleType roleType, @Nonnull @JsonProperty("parentRoles") Set parentRoles, @Nonnull @JsonProperty("roleCapabilities") Set roleCapabilities, + @Nonnull @JsonProperty("label") String label, @Nonnull @JsonProperty("description") String description) { public RoleDefinition(@Nonnull @JsonProperty("roleId") RoleId roleId, @Nonnull @JsonProperty("roleType") RoleType roleType, @Nonnull @JsonProperty("parentRoles") Set parentRoles, @Nonnull @JsonProperty("roleCapabilities") Set roleCapabilities, + @Nonnull @JsonProperty("label") String label, @Nonnull @JsonProperty("description") String description) { this.roleId = Objects.requireNonNull(roleId); this.roleType = Objects.requireNonNull(roleType); this.parentRoles = Set.copyOf(Objects.requireNonNull(parentRoles)); this.roleCapabilities = Set.copyOf(Objects.requireNonNull(roleCapabilities)); + this.label = Objects.requireNonNull(label); this.description = Objects.requireNonNull(description); } @@ -33,19 +37,22 @@ public static RoleDefinition get(@JsonProperty("roleId") RoleId roleId, @JsonProperty("roleType") RoleType roleType, @JsonProperty("parentRoles") Set parentRoles, @JsonProperty("roleCapabilities") Set roleCapabilities, + @JsonProperty("label") String label, @JsonProperty("description") String description) { - return new RoleDefinition(roleId, roleType, parentRoles, roleCapabilities, description); + return new RoleDefinition(roleId, roleType, parentRoles, roleCapabilities, + Objects.requireNonNullElse(label, ""), + description); } public RoleDefinition withoutCapabilities(Predicate filter) { var remainingCapabilities = roleCapabilities.stream().filter(not(filter)).collect(Collectors.toSet()); - return new RoleDefinition(roleId, roleType, parentRoles, remainingCapabilities, description); + return new RoleDefinition(roleId, roleType, parentRoles, remainingCapabilities, label, description); } public RoleDefinition addCapabilities(Collection capabilities) { var combinedCapabilities = new LinkedHashSet<>(this.roleCapabilities); combinedCapabilities.addAll(capabilities); - return new RoleDefinition(roleId, roleType, parentRoles, combinedCapabilities, description); + return new RoleDefinition(roleId, roleType, parentRoles, combinedCapabilities, label, description); } } diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/GetDefaultRoleDefinitionsResponseTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/GetDefaultRoleDefinitionsResponseTest.java index f446fb6..f68580f 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/GetDefaultRoleDefinitionsResponseTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/GetDefaultRoleDefinitionsResponseTest.java @@ -29,6 +29,7 @@ void shouldSerialize() throws IOException { RoleType.PROJECT_ROLE, Set.of(RoleId.valueOf("parent-role")), Set.of(BasicCapability.valueOf("ViewProject")), + "Test label", "Test role description" ) ); diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleDefinitionsResponseTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleDefinitionsResponseTest.java index 639ac6a..e376e28 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleDefinitionsResponseTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleDefinitionsResponseTest.java @@ -30,6 +30,7 @@ void shouldSerialize() throws IOException { RoleType.PROJECT_ROLE, Set.of(RoleId.valueOf("parent-role")), Set.of(BasicCapability.valueOf("ViewProject")), + "Test label", "Test role description" ) ); diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/RoleDefinitionTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/RoleDefinitionTest.java index fdd5c43..e99fe41 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/RoleDefinitionTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/RoleDefinitionTest.java @@ -25,8 +25,9 @@ void shouldSerialize() throws IOException { var roleId = RoleId.valueOf("test-role"); var parentRoles = Set.of(RoleId.valueOf("parent-role")); var capabilities = Set.of(BasicCapability.valueOf("ViewProject")); + var label = "Test label"; var description = "Test role description"; - var roleDefinition = new RoleDefinition(roleId, RoleType.PROJECT_ROLE, parentRoles, capabilities, description); + var roleDefinition = new RoleDefinition(roleId, RoleType.PROJECT_ROLE, parentRoles, capabilities, label, description); var jsonContent = tester.write(roleDefinition); @@ -35,6 +36,7 @@ void shouldSerialize() throws IOException { assertThat(jsonContent).extractingJsonPathArrayValue("$.parentRoles").containsExactly("parent-role"); assertThat(jsonContent).extractingJsonPathStringValue("$.roleCapabilities[0].id").isEqualTo("ViewProject"); assertThat(jsonContent).extractingJsonPathStringValue("$.roleCapabilities[0].@type").isEqualTo("BasicCapability"); + assertThat(jsonContent).extractingJsonPathStringValue("$.label").isEqualTo(label); assertThat(jsonContent).extractingJsonPathStringValue("$.description").isEqualTo(description); } @@ -51,6 +53,7 @@ void shouldDeserialize() throws IOException { "id": "ViewProject" } ], + "label": "Test label", "description": "Test role description" } """; @@ -60,6 +63,7 @@ void shouldDeserialize() throws IOException { assertThat(deserialized.roleId()).isEqualTo(RoleId.valueOf("test-role")); assertThat(deserialized.parentRoles()).containsExactly(RoleId.valueOf("parent-role")); assertThat(deserialized.roleCapabilities()).containsExactly(BasicCapability.valueOf("ViewProject")); + assertThat(deserialized.label()).isEqualTo("Test label"); assertThat(deserialized.description()).isEqualTo("Test role description"); } } \ No newline at end of file diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsRequestTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsRequestTest.java index cbb3a69..ea5e250 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsRequestTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsRequestTest.java @@ -29,6 +29,7 @@ void shouldSerialize() throws IOException { RoleType.PROJECT_ROLE, Set.of(RoleId.valueOf("ParentRole")), Set.of(BasicCapability.valueOf("EditOntology")), + "Test label", "Test Description" ); var request = SetDefaultRoleDefinitionsRequest.get(List.of(roleDefinition)); diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsResponseTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsResponseTest.java index 497e1d8..3cd9abc 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsResponseTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/SetDefaultRoleDefinitionsResponseTest.java @@ -29,6 +29,7 @@ void shouldSerialize() throws IOException { RoleType.PROJECT_ROLE, Set.of(RoleId.valueOf("ParentRole")), Set.of(BasicCapability.valueOf("EditOntology")), + "Test label", "Test Description" ); var response = SetDefaultRoleDefinitionsResponse.get(List.of(roleDefinition)); diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java index 7355421..39b3dc7 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequestTest.java @@ -31,6 +31,7 @@ void shouldSerialize() throws IOException { RoleType.PROJECT_ROLE, Set.of(RoleId.valueOf("parent-role")), Set.of(BasicCapability.valueOf("ViewProject")), + "Test label", "Test role description" ) ); diff --git a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java index b64348f..3f293d1 100644 --- a/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java +++ b/src/test/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsResponseTest.java @@ -29,6 +29,7 @@ void shouldSerialize() throws IOException { RoleType.PROJECT_ROLE, Set.of(RoleId.valueOf("parent-role")), Set.of(BasicCapability.valueOf("ViewProject")), + "Test label", "Test role description" ) ); From 46d34c329eb3342c91ecb5a086e1c0fd72c62e22 Mon Sep 17 00:00:00 2001 From: Matthew Horridge Date: Thu, 8 May 2025 17:55:07 -0700 Subject: [PATCH 4/4] Added code for getting and setting project role assignments --- .../GetProjectRoleAssignmentsRequest.java | 17 ++++++++++++ .../GetProjectRoleAssignmentsResponse.java | 17 ++++++++++++ .../authorization/ProjectRoleAssignments.java | 15 +++++++++++ .../SetProjectRoleAssignmentsRequest.java | 27 +++++++++++++++++++ .../SetProjectRoleAssignmentsResponse.java | 15 +++++++++++ .../authorization/UserRoleAssignment.java | 17 ++++++++++++ 6 files changed, 108 insertions(+) create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsRequest.java create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsResponse.java create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/ProjectRoleAssignments.java create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsRequest.java create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsResponse.java create mode 100644 src/main/java/edu/stanford/protege/webprotege/authorization/UserRoleAssignment.java diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsRequest.java b/src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsRequest.java new file mode 100644 index 0000000..da1dd8d --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsRequest.java @@ -0,0 +1,17 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import edu.stanford.protege.webprotege.common.ProjectId; +import edu.stanford.protege.webprotege.common.ProjectRequest; + +@JsonTypeName(GetProjectRoleAssignmentsRequest.CHANNEL) +public record GetProjectRoleAssignmentsRequest(@JsonProperty("projectId") ProjectId projectId) implements ProjectRequest { + + public static final String CHANNEL = "webprotege.authorization.GetProjectRoleAssignments"; + + @Override + public String getChannel() { + return CHANNEL; + } +} diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsResponse.java b/src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsResponse.java new file mode 100644 index 0000000..475046b --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/GetProjectRoleAssignmentsResponse.java @@ -0,0 +1,17 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import edu.stanford.protege.webprotege.common.Response; + +import java.util.Objects; + +@JsonTypeName(GetProjectRoleAssignmentsRequest.CHANNEL) +public record GetProjectRoleAssignmentsResponse(@JsonProperty("assignments") ProjectRoleAssignments assignments) implements Response { + + @JsonCreator + public GetProjectRoleAssignmentsResponse(@JsonProperty("assignments") ProjectRoleAssignments assignments) { + this.assignments = Objects.requireNonNull(assignments); + } +} diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/ProjectRoleAssignments.java b/src/main/java/edu/stanford/protege/webprotege/authorization/ProjectRoleAssignments.java new file mode 100644 index 0000000..757af2d --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/ProjectRoleAssignments.java @@ -0,0 +1,15 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; +import java.util.Objects; + +public record ProjectRoleAssignments(@JsonProperty("userAssignments") List userAssignments) { + + @JsonCreator + public ProjectRoleAssignments(@JsonProperty("userAssignments" ) List userAssignments) { + this.userAssignments = Objects.requireNonNull(userAssignments); + } +} diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsRequest.java b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsRequest.java new file mode 100644 index 0000000..3076dc8 --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsRequest.java @@ -0,0 +1,27 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import edu.stanford.protege.webprotege.common.ProjectId; +import edu.stanford.protege.webprotege.common.Request; + +import java.util.Objects; + +import static edu.stanford.protege.webprotege.authorization.SetProjectRoleAssignmentsRequest.CHANNEL; + +@JsonTypeName(CHANNEL) +public record SetProjectRoleAssignmentsRequest(@JsonProperty("projectId") ProjectId projectId, + @JsonProperty("assignments") ProjectRoleAssignments assignments) implements Request { + + public static final String CHANNEL = "webprotege.authorization.SetProjectRoleAssignments"; + + public SetProjectRoleAssignmentsRequest(@JsonProperty("projectId" ) ProjectId projectId, @JsonProperty("assignments" ) ProjectRoleAssignments assignments) { + this.projectId = Objects.requireNonNull(projectId); + this.assignments = Objects.requireNonNull(assignments); + } + + @Override + public String getChannel() { + return CHANNEL; + } +} diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsResponse.java b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsResponse.java new file mode 100644 index 0000000..ee24796 --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleAssignmentsResponse.java @@ -0,0 +1,15 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonTypeName; +import edu.stanford.protege.webprotege.common.Response; + +import java.util.Objects; + +@JsonTypeName(SetProjectRoleAssignmentsRequest.CHANNEL) +public record SetProjectRoleAssignmentsResponse(@JsonProperty("assignments") ProjectRoleAssignments assignments) implements Response { + + public SetProjectRoleAssignmentsResponse(@JsonProperty("assignments" ) ProjectRoleAssignments assignments) { + this.assignments = Objects.requireNonNull(assignments); + } +} diff --git a/src/main/java/edu/stanford/protege/webprotege/authorization/UserRoleAssignment.java b/src/main/java/edu/stanford/protege/webprotege/authorization/UserRoleAssignment.java new file mode 100644 index 0000000..9410ea1 --- /dev/null +++ b/src/main/java/edu/stanford/protege/webprotege/authorization/UserRoleAssignment.java @@ -0,0 +1,17 @@ +package edu.stanford.protege.webprotege.authorization; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import edu.stanford.protege.webprotege.common.UserId; + +import java.util.Objects; + +public record UserRoleAssignment(@JsonProperty("userId") UserId userId, + @JsonProperty("roleId") RoleId roleId) { + + @JsonCreator + public UserRoleAssignment(@JsonProperty("userId" ) UserId userId, @JsonProperty("roleId" ) RoleId roleId) { + this.userId = Objects.requireNonNull(userId); + this.roleId = Objects.requireNonNull(roleId); + } +}