Skip to content

Commit 66ffa9b

Browse files
author
vkarthikeya
committed
Hactoberfest2023: revreting code
1 parent 6d62ae7 commit 66ffa9b

File tree

2 files changed

+45
-64
lines changed

2 files changed

+45
-64
lines changed

src/main/java/com/intuit/graphql/orchestrator/resolverdirective/FieldResolverDirectiveUtil.java

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.Objects;
2121
import java.util.Optional;
2222
import java.util.stream.Collectors;
23-
import java.util.stream.Stream;
2423

2524
import static com.intuit.graphql.orchestrator.resolverdirective.ResolverDirectiveDefinition.extractRequiredFieldsFrom;
2625
import static com.intuit.graphql.orchestrator.utils.XtextTypeUtils.getFieldDefinitions;
@@ -125,35 +124,37 @@ public static boolean isObjectOrInterfaceType(TypeDefinition typeDefinition) {
125124

126125
public static List<FieldResolverContext> createFieldResolverContexts(
127126
TypeDefinition typeDefinition, XtextGraph xtextGraph) {
128-
List<FieldDefinition> childFields = getFieldDefinitions(typeDefinition);
129127

130-
List<FieldResolverContext> contexts = childFields.stream()
131-
.flatMap(childFieldDefinition -> {
132-
List<Directive> directives = getResolverDirective(childFieldDefinition);
133-
134-
if (CollectionUtils.size(directives) < 1) {
135-
return Stream.empty();
136-
}
137-
138-
return directives.stream().map(directive -> {
139-
ResolverDirectiveDefinition resolverDirectiveDefinition = ResolverDirectiveDefinition.from(directive);
140-
141-
FieldResolverContext fieldResolverContext = FieldResolverContext.builder()
142-
//.fieldContext(new FieldContext(typeDefinition.getName(), childFieldDefinition.getName()))
143-
.fieldDefinition(childFieldDefinition)
144-
.parentTypeDefinition(typeDefinition)
145-
.requiresTypeNameInjection(xtextGraph.requiresTypenameInjection())
146-
.serviceNamespace(xtextGraph.getServiceProvider().getNameSpace())
147-
.resolverDirectiveDefinition(resolverDirectiveDefinition)
148-
.requiredFields(extractRequiredFieldsFrom(resolverDirectiveDefinition))
149-
.build();
150-
151-
return fieldResolverContext;
152-
});
153-
})
154-
.collect(Collectors.toList());
155-
156-
return contexts;
128+
List<FieldDefinition> childFields = getFieldDefinitions(typeDefinition);
129+
return childFields.stream()
130+
.map(childFieldDefinition -> {
131+
List<Directive> directives = getResolverDirective(childFieldDefinition);
132+
133+
if (CollectionUtils.size(directives) > 1) {
134+
throw new MultipleResolverDirectiveDefinition(CollectionUtils.size(directives));
135+
}
136+
137+
if (CollectionUtils.size(directives) < 1) {
138+
return Optional.<FieldResolverContext>empty();
139+
}
140+
141+
ResolverDirectiveDefinition resolverDirectiveDefinition = ResolverDirectiveDefinition.from(directives.get(0));
142+
143+
FieldResolverContext fieldResolverContext = FieldResolverContext.builder()
144+
//.fieldContext(new FieldContext(typeDefinition.getName(), childFieldDefinition.getName()))
145+
.fieldDefinition(childFieldDefinition)
146+
.parentTypeDefinition(typeDefinition)
147+
.requiresTypeNameInjection(xtextGraph.requiresTypenameInjection())
148+
.serviceNamespace(xtextGraph.getServiceProvider().getNameSpace())
149+
.resolverDirectiveDefinition(resolverDirectiveDefinition)
150+
.requiredFields(extractRequiredFieldsFrom(resolverDirectiveDefinition))
151+
.build();
152+
153+
return Optional.of(fieldResolverContext);
154+
})
155+
.filter(Optional::isPresent)
156+
.map(Optional::get)
157+
.collect(Collectors.toList());
157158
}
158159

159160
private static List<Directive> getResolverDirective(FieldDefinition fieldDefinition) {

src/main/java/com/intuit/graphql/orchestrator/schema/transform/FieldResolverTransformerPreMerge.java

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,16 @@
33
import static com.intuit.graphql.orchestrator.resolverdirective.FieldResolverDirectiveUtil.canContainFieldResolverDirective;
44
import static com.intuit.graphql.orchestrator.resolverdirective.FieldResolverDirectiveUtil.createFieldResolverContexts;
55

6-
import com.intuit.graphql.graphQL.Directive;
76
import com.intuit.graphql.graphQL.FieldDefinition;
87
import com.intuit.graphql.orchestrator.resolverdirective.ArgumentDefinitionNotAllowed;
98
import com.intuit.graphql.orchestrator.resolverdirective.FieldResolverDirectiveUtil;
10-
import com.intuit.graphql.orchestrator.resolverdirective.InvalidDirectivePairingException;
119
import com.intuit.graphql.orchestrator.resolverdirective.NotAValidLocationForFieldResolverDirective;
1210
import com.intuit.graphql.orchestrator.utils.XtextTypeUtils;
13-
import com.intuit.graphql.orchestrator.utils.XtextUtils;
1411
import com.intuit.graphql.orchestrator.xtext.XtextGraph;
1512
import java.util.ArrayList;
1613
import java.util.List;
1714
import java.util.Objects;
1815
import org.apache.commons.collections4.CollectionUtils;
19-
import org.eclipse.emf.common.util.EList;
2016
import org.eclipse.emf.ecore.EObject;
2117

2218
public class FieldResolverTransformerPreMerge implements Transformer<XtextGraph, XtextGraph> {
@@ -43,37 +39,21 @@ public XtextGraph transform(XtextGraph sourceXtextGraph) {
4339
}
4440

4541
private void validateFieldWithResolver(List<FieldResolverContext> fieldResolverContexts) {
46-
fieldResolverContexts
47-
.forEach(fieldResolverContext -> {
48-
FieldDefinition fieldDefinition = fieldResolverContext.getFieldDefinition();
49-
String fieldName = fieldDefinition.getName();
50-
String parentTypeName = XtextTypeUtils.getParentTypeName(fieldDefinition);
51-
52-
EObject parentType = fieldDefinition.eContainer();
53-
if (!(canContainFieldResolverDirective(parentType))) {
54-
throw new NotAValidLocationForFieldResolverDirective(fieldName, parentTypeName);
55-
}
56-
57-
if (hasArguments(fieldDefinition)) {
58-
throw new ArgumentDefinitionNotAllowed(fieldName, parentTypeName);
59-
}
60-
61-
EList<Directive> directives = fieldDefinition.getDirectives();
62-
63-
boolean[] properDirectivesDefs = {false};
64-
65-
XtextUtils.getDirectivesWithNameFromDefinition((FieldDefinition) directives, "external")
66-
.forEach(directive -> properDirectivesDefs[0] = true);
67-
XtextUtils.getDirectivesWithNameFromDefinition((FieldDefinition) directives, "provides")
68-
.forEach(directive -> properDirectivesDefs[0] = true);
69-
XtextUtils.getDirectivesWithNameFromDefinition((FieldDefinition) directives, "requires")
70-
.forEach(directive -> properDirectivesDefs[0] = true);
71-
72-
if(properDirectivesDefs[0]) {
73-
throw new InvalidDirectivePairingException(fieldName, parentTypeName);
74-
}
75-
76-
});
42+
fieldResolverContexts
43+
.forEach(fieldResolverContext -> {
44+
FieldDefinition fieldDefinition = fieldResolverContext.getFieldDefinition();
45+
String fieldName = fieldDefinition.getName();
46+
String parentTypeName = XtextTypeUtils.getParentTypeName(fieldDefinition);
47+
48+
EObject parentType = fieldDefinition.eContainer();
49+
if (!(canContainFieldResolverDirective(parentType))) {
50+
throw new NotAValidLocationForFieldResolverDirective(fieldName, parentTypeName);
51+
}
52+
53+
if (hasArguments(fieldDefinition)) {
54+
throw new ArgumentDefinitionNotAllowed(fieldName, parentTypeName);
55+
}
56+
});
7757
}
7858

7959
private boolean hasArguments(FieldDefinition fieldDefinition) {

0 commit comments

Comments
 (0)