Skip to content

Commit 73dba53

Browse files
author
vkarthikeya
committed
Hactoberfest2023 : Multiple Directive Coexist validation
1 parent 66ffa9b commit 73dba53

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.intuit.graphql.orchestrator.authorization;
2+
3+
import com.intuit.graphql.graphQL.Directive;
4+
import com.intuit.graphql.orchestrator.stitching.InvalidDirectivePairingException;
5+
import org.apache.commons.collections4.CollectionUtils;
6+
7+
import java.util.Arrays;
8+
import java.util.List;
9+
import java.util.stream.Collectors;
10+
11+
public class ValidateMultipleDirectivesCoexist {
12+
13+
public void validate(List<Directive> directives) {
14+
List<String> directiveNames = directives.stream()
15+
.map(d -> d.getDefinition().getName())
16+
.collect(Collectors.toList());
17+
18+
if (CollectionUtils.containsAll(directiveNames, Arrays.asList("resolver", "external"))) {
19+
throw new InvalidDirectivePairingException("resolver", "external");
20+
}
21+
22+
if (CollectionUtils.containsAll(directiveNames, Arrays.asList("resolver", "provides"))) {
23+
throw new InvalidDirectivePairingException("resolver", "provides");
24+
}
25+
26+
if (CollectionUtils.containsAll(directiveNames, Arrays.asList("resolver", "requires"))) {
27+
throw new InvalidDirectivePairingException("resolver", "requires");
28+
}
29+
30+
}
31+
32+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
package com.intuit.graphql.orchestrator.resolverdirective;
1+
package com.intuit.graphql.orchestrator.stitching;
22

3-
public class InvalidDirectivePairingException extends ResolverDirectiveException {
3+
4+
public class InvalidDirectivePairingException extends StitchingException {
45

56
private static final String ERR_MSG = "Field %s in container type %s with resolver directive not allowed "
67
+ "to have argument definitions.";

0 commit comments

Comments
 (0)