Skip to content

Commit 43004f9

Browse files
committed
update array matching logic to work with delimiter instead of JSON array as EDC does not support this
1 parent d29cd14 commit 43004f9

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

policy-extension/src/main/java/org/eclipse/edc/extension/possiblepolicy/ConnectorIdConstraintFunction.java

+11-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.eclipse.edc.spi.agent.ParticipantAgent;
99
import org.eclipse.edc.spi.monitor.Monitor;
1010

11+
import java.util.Arrays;
1112
import java.util.Collection;
1213
import java.util.Map;
1314
import java.util.Objects;
@@ -24,6 +25,12 @@ public ConnectorIdConstraintFunction(Monitor monitor) {
2425

2526
@Override
2627
public boolean evaluate(Operator operator, Object rightValue, R rule, PolicyContext context) {
28+
29+
if (!(rightValue instanceof String)) {
30+
context.reportProblem("Right-value expected to be String but was " + rightValue.getClass());
31+
return false;
32+
}
33+
2734
var contextData = context.getContextData(ParticipantAgent.class);
2835
if (contextData == null) {
2936
return false;
@@ -37,18 +44,19 @@ public boolean evaluate(Operator operator, Object rightValue, R rule, PolicyCont
3744
monitor.info(format("Found attribute %s : %s", e.getKey(), e.getValue()));
3845
}
3946

40-
var clientIdClaim = contextData.getClaims().get("client_id");
47+
String clientIdClaim = (String) contextData.getClaims().get("client_id");
4148

4249
if (clientIdClaim == null) {
4350
return false;
4451
}
4552

46-
monitor.info(format("Evaluating constraint: connectorId %s %s %s", clientIdClaim, operator, rightValue.toString()));
53+
monitor.info(format("Evaluating constraint: connectorId %s %s %s", clientIdClaim, operator, rightValue));
4754

4855
return switch (operator) {
4956
case EQ -> Objects.equals(clientIdClaim, rightValue);
5057
case NEQ -> !Objects.equals(clientIdClaim, rightValue);
51-
case IN -> ((Collection<?>) rightValue).contains(clientIdClaim);
58+
case IN, IS_ANY_OF -> Arrays.asList(((String) rightValue).split(",")).contains(clientIdClaim);
59+
case IS_NONE_OF -> !Arrays.asList(((String) rightValue).split(",")).contains(clientIdClaim);
5260
default -> false;
5361
};
5462
}

0 commit comments

Comments
 (0)