-
Notifications
You must be signed in to change notification settings - Fork 188
/
AxiomItemBuilder.java
37 lines (28 loc) · 1.01 KB
/
AxiomItemBuilder.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
package com.evolveum.axiom.api;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Supplier;
import com.evolveum.axiom.api.schema.AxiomItemDefinition;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
public class AxiomItemBuilder<V extends AxiomValue<?>> implements Supplier<AxiomItem<V>> {
Collection<Supplier<? extends V>> values = new ArrayList<>();
private AxiomItemDefinition definition;
public AxiomItemBuilder(AxiomItemDefinition definition) {
this.definition = definition;
}
public AxiomItemDefinition definition() {
return definition;
}
public void addValue(Supplier<? extends V> value) {
values.add(value);
}
@Override
public AxiomItem<V> get() {
Builder<V> result = ImmutableList.builder();
for(Supplier<? extends V> value : values) {
result.add(value.get());
}
return AxiomItem.from(definition, result.build());
}
}