Skip to content

Commit f1e9a1c

Browse files
authored
Merge pull request #4 from protegeproject/extensible-capabilities
Editable roles
2 parents 22397f6 + fa041d3 commit f1e9a1c

19 files changed

+165
-11
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>edu.stanford.protege</groupId>
88
<artifactId>webprotege-authorization</artifactId>
9-
<version>2.0.1</version>
9+
<version>2.1.0-SNAPSHOT</version>
1010
<parent>
1111
<groupId>org.springframework.boot</groupId>
1212
<artifactId>spring-boot-starter-parent</artifactId>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonTypeName;
5+
import edu.stanford.protege.webprotege.common.ProjectId;
6+
import edu.stanford.protege.webprotege.common.ProjectRequest;
7+
8+
@JsonTypeName(GetProjectRoleAssignmentsRequest.CHANNEL)
9+
public record GetProjectRoleAssignmentsRequest(@JsonProperty("projectId") ProjectId projectId) implements ProjectRequest<GetProjectRoleAssignmentsResponse> {
10+
11+
public static final String CHANNEL = "webprotege.authorization.GetProjectRoleAssignments";
12+
13+
@Override
14+
public String getChannel() {
15+
return CHANNEL;
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.annotation.JsonTypeName;
6+
import edu.stanford.protege.webprotege.common.Response;
7+
8+
import java.util.Objects;
9+
10+
@JsonTypeName(GetProjectRoleAssignmentsRequest.CHANNEL)
11+
public record GetProjectRoleAssignmentsResponse(@JsonProperty("assignments") ProjectRoleAssignments assignments) implements Response {
12+
13+
@JsonCreator
14+
public GetProjectRoleAssignmentsResponse(@JsonProperty("assignments") ProjectRoleAssignments assignments) {
15+
this.assignments = Objects.requireNonNull(assignments);
16+
}
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
6+
import java.util.List;
7+
import java.util.Objects;
8+
9+
public record ProjectRoleAssignments(@JsonProperty("userAssignments") List<UserRoleAssignment> userAssignments) {
10+
11+
@JsonCreator
12+
public ProjectRoleAssignments(@JsonProperty("userAssignments" ) List<UserRoleAssignment> userAssignments) {
13+
this.userAssignments = Objects.requireNonNull(userAssignments);
14+
}
15+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonTypeName;
5+
import edu.stanford.protege.webprotege.common.ProjectId;
6+
import edu.stanford.protege.webprotege.common.ProjectRequest;
7+
8+
import static edu.stanford.protege.webprotege.authorization.ResetProjectRoleDefinitionsRequest.CHANNEL;
9+
10+
@JsonTypeName(CHANNEL)
11+
public record ResetProjectRoleDefinitionsRequest(@JsonProperty("projectId") ProjectId projectId) implements ProjectRequest<ResetProjectRoleDefinitionsResponse> {
12+
13+
public static final String CHANNEL = "webprotege.authorization.ResetProjectRoleDefinitions";
14+
15+
@Override
16+
public String getChannel() {
17+
return CHANNEL;
18+
}
19+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonTypeName;
5+
import edu.stanford.protege.webprotege.common.Response;
6+
7+
import java.util.List;
8+
import java.util.Objects;
9+
10+
@JsonTypeName(ResetProjectRoleDefinitionsRequest.CHANNEL)
11+
public record ResetProjectRoleDefinitionsResponse(@JsonProperty("roleDefinitions") List<RoleDefinition> roleDefinitions) implements Response {
12+
13+
public ResetProjectRoleDefinitionsResponse(@JsonProperty("roleDefinitions" ) List<RoleDefinition> roleDefinitions) {
14+
this.roleDefinitions = List.copyOf(Objects.requireNonNull(roleDefinitions));
15+
}
16+
}

src/main/java/edu/stanford/protege/webprotege/authorization/RoleDefinition.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonProperty;
55

66
import javax.annotation.Nonnull;
7+
import javax.annotation.Nullable;
78
import java.util.*;
89
import java.util.function.Predicate;
910
import java.util.stream.Collectors;
@@ -14,17 +15,20 @@ public record RoleDefinition(@Nonnull @JsonProperty("roleId") RoleId roleId,
1415
@Nonnull @JsonProperty("roleType") RoleType roleType,
1516
@Nonnull @JsonProperty("parentRoles") Set<RoleId> parentRoles,
1617
@Nonnull @JsonProperty("roleCapabilities") Set<Capability> roleCapabilities,
18+
@Nonnull @JsonProperty("label") String label,
1719
@Nonnull @JsonProperty("description") String description) {
1820

1921
public RoleDefinition(@Nonnull @JsonProperty("roleId") RoleId roleId,
2022
@Nonnull @JsonProperty("roleType") RoleType roleType,
2123
@Nonnull @JsonProperty("parentRoles") Set<RoleId> parentRoles,
2224
@Nonnull @JsonProperty("roleCapabilities") Set<Capability> roleCapabilities,
25+
@Nonnull @JsonProperty("label") String label,
2326
@Nonnull @JsonProperty("description") String description) {
2427
this.roleId = Objects.requireNonNull(roleId);
2528
this.roleType = Objects.requireNonNull(roleType);
2629
this.parentRoles = Set.copyOf(Objects.requireNonNull(parentRoles));
2730
this.roleCapabilities = Set.copyOf(Objects.requireNonNull(roleCapabilities));
31+
this.label = Objects.requireNonNull(label);
2832
this.description = Objects.requireNonNull(description);
2933
}
3034

@@ -33,19 +37,22 @@ public static RoleDefinition get(@JsonProperty("roleId") RoleId roleId,
3337
@JsonProperty("roleType") RoleType roleType,
3438
@JsonProperty("parentRoles") Set<RoleId> parentRoles,
3539
@JsonProperty("roleCapabilities") Set<Capability> roleCapabilities,
40+
@JsonProperty("label") String label,
3641
@JsonProperty("description") String description) {
37-
return new RoleDefinition(roleId, roleType, parentRoles, roleCapabilities, description);
42+
return new RoleDefinition(roleId, roleType, parentRoles, roleCapabilities,
43+
Objects.requireNonNullElse(label, ""),
44+
description);
3845
}
3946

4047

4148
public RoleDefinition withoutCapabilities(Predicate<Capability> filter) {
4249
var remainingCapabilities = roleCapabilities.stream().filter(not(filter)).collect(Collectors.toSet());
43-
return new RoleDefinition(roleId, roleType, parentRoles, remainingCapabilities, description);
50+
return new RoleDefinition(roleId, roleType, parentRoles, remainingCapabilities, label, description);
4451
}
4552

4653
public RoleDefinition addCapabilities(Collection<? extends Capability> capabilities) {
4754
var combinedCapabilities = new LinkedHashSet<>(this.roleCapabilities);
4855
combinedCapabilities.addAll(capabilities);
49-
return new RoleDefinition(roleId, roleType, parentRoles, combinedCapabilities, description);
56+
return new RoleDefinition(roleId, roleType, parentRoles, combinedCapabilities, label, description);
5057
}
5158
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonTypeName;
5+
import edu.stanford.protege.webprotege.common.ProjectId;
6+
import edu.stanford.protege.webprotege.common.Request;
7+
8+
import java.util.Objects;
9+
10+
import static edu.stanford.protege.webprotege.authorization.SetProjectRoleAssignmentsRequest.CHANNEL;
11+
12+
@JsonTypeName(CHANNEL)
13+
public record SetProjectRoleAssignmentsRequest(@JsonProperty("projectId") ProjectId projectId,
14+
@JsonProperty("assignments") ProjectRoleAssignments assignments) implements Request<SetProjectRoleAssignmentsResponse> {
15+
16+
public static final String CHANNEL = "webprotege.authorization.SetProjectRoleAssignments";
17+
18+
public SetProjectRoleAssignmentsRequest(@JsonProperty("projectId" ) ProjectId projectId, @JsonProperty("assignments" ) ProjectRoleAssignments assignments) {
19+
this.projectId = Objects.requireNonNull(projectId);
20+
this.assignments = Objects.requireNonNull(assignments);
21+
}
22+
23+
@Override
24+
public String getChannel() {
25+
return CHANNEL;
26+
}
27+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package edu.stanford.protege.webprotege.authorization;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonTypeName;
5+
import edu.stanford.protege.webprotege.common.Response;
6+
7+
import java.util.Objects;
8+
9+
@JsonTypeName(SetProjectRoleAssignmentsRequest.CHANNEL)
10+
public record SetProjectRoleAssignmentsResponse(@JsonProperty("assignments") ProjectRoleAssignments assignments) implements Response {
11+
12+
public SetProjectRoleAssignmentsResponse(@JsonProperty("assignments" ) ProjectRoleAssignments assignments) {
13+
this.assignments = Objects.requireNonNull(assignments);
14+
}
15+
}

src/main/java/edu/stanford/protege/webprotege/authorization/SetProjectRoleDefinitionsRequest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
import static com.fasterxml.jackson.annotation.JsonTypeInfo.*;
1515

16-
@JsonTypeInfo(use = Id.NAME)
1716
@JsonTypeName(SetProjectRoleDefinitionsRequest.CHANNEL)
1817
public record SetProjectRoleDefinitionsRequest(@JsonProperty("projectId") ProjectId projectId,
1918
@JsonProperty("roleDefinitions") List<RoleDefinition> roleDefinitions) implements Request<SetProjectRoleDefinitionsResponse> {

0 commit comments

Comments
 (0)