-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
NullValue.java
135 lines (106 loc) · 3.79 KB
/
NullValue.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package graphql.language;
import com.google.common.collect.ImmutableList;
import graphql.Internal;
import graphql.PublicApi;
import graphql.util.TraversalControl;
import graphql.util.TraverserContext;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import static graphql.Assert.assertNotNull;
import static graphql.collect.ImmutableKit.emptyList;
import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer;
import static graphql.language.NodeUtil.assertNewChildrenAreEmpty;
@PublicApi
public class NullValue extends AbstractNode<NullValue> implements Value<NullValue> {
@Internal
protected NullValue(SourceLocation sourceLocation, List<Comment> comments, IgnoredChars ignoredChars, Map<String, String> additionalData) {
super(sourceLocation, comments, ignoredChars, additionalData);
}
public static NullValue of() {
return NullValue.newNullValue().build();
}
@Override
public List<Node> getChildren() {
return Collections.emptyList();
}
@Override
public NodeChildrenContainer getNamedChildren() {
return newNodeChildrenContainer().build();
}
@Override
public NullValue withNewChildren(NodeChildrenContainer newChildren) {
assertNewChildrenAreEmpty(newChildren);
return this;
}
@Override
public boolean isEqualTo(Node o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
return true;
}
@Override
public NullValue deepCopy() {
return this;
}
@Override
public String toString() {
return "NullValue{" +
'}';
}
@Override
public TraversalControl accept(TraverserContext<Node> context, NodeVisitor visitor) {
return visitor.visitNullValue(this, context);
}
public static Builder newNullValue() {
return new Builder();
}
public NullValue transform(Consumer<Builder> builderConsumer) {
Builder builder = new Builder(this);
builderConsumer.accept(builder);
return builder.build();
}
public static final class Builder implements NodeBuilder {
private SourceLocation sourceLocation;
private ImmutableList<Comment> comments = emptyList();
private IgnoredChars ignoredChars = IgnoredChars.EMPTY;
private Map<String, String> additionalData = new LinkedHashMap<>();
private Builder(NullValue existing) {
this.sourceLocation = existing.getSourceLocation();
this.comments = ImmutableList.copyOf(existing.getComments());
this.ignoredChars = existing.getIgnoredChars();
this.additionalData = new LinkedHashMap<>(existing.getAdditionalData());
}
private Builder() {
}
public Builder sourceLocation(SourceLocation sourceLocation) {
this.sourceLocation = sourceLocation;
return this;
}
public Builder comments(List<Comment> comments) {
this.comments = ImmutableList.copyOf(comments);
return this;
}
public Builder ignoredChars(IgnoredChars ignoredChars) {
this.ignoredChars = ignoredChars;
return this;
}
public Builder additionalData(Map<String, String> additionalData) {
this.additionalData = assertNotNull(additionalData);
return this;
}
public Builder additionalData(String key, String value) {
this.additionalData.put(key, value);
return this;
}
public NullValue build() {
return new NullValue(sourceLocation, comments, ignoredChars, additionalData);
}
}
}