diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-02 19:11:03 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-02 19:11:03 +0100 |
| commit | 90dae189f638148a7b72add782023088cf22e847 (patch) | |
| tree | 47aca5460b245111a7c592d362898d2f6062581b /src/main/java/org | |
| parent | c02fac3e8b50b1941a8d3f35a033212c1e51d5d4 (diff) | |
Use the name of the class node when adding classes to project
Diffstat (limited to 'src/main/java/org')
4 files changed, 29 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/couscous/JavaProject.java b/src/main/java/org/zwobble/couscous/JavaProject.java index 49e9355..e9d2ba4 100644 --- a/src/main/java/org/zwobble/couscous/JavaProject.java +++ b/src/main/java/org/zwobble/couscous/JavaProject.java @@ -3,8 +3,8 @@ package org.zwobble.couscous; import org.zwobble.couscous.values.IntegerValue; public class JavaProject { - public static MapBackedProject.MapBackedProjectBuilder builder() { + public static MapBackedProject.Builder builder() { return MapBackedProject.builder() - .addClass("java.lang.Integer", IntegerValue.TYPE); + .addClass(IntegerValue.TYPE); } } diff --git a/src/main/java/org/zwobble/couscous/MapBackedProject.java b/src/main/java/org/zwobble/couscous/MapBackedProject.java index 66b3681..f8e457f 100644 --- a/src/main/java/org/zwobble/couscous/MapBackedProject.java +++ b/src/main/java/org/zwobble/couscous/MapBackedProject.java @@ -4,12 +4,30 @@ import java.util.Map; import org.zwobble.couscous.values.ConcreteType; -import lombok.Builder; -import lombok.Singular; +import com.google.common.collect.ImmutableMap; -@Builder public class MapBackedProject implements Project { - @Singular(value="addClass") + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private final ImmutableMap.Builder<String, ConcreteType<?>> classes; + + private Builder() { + classes = ImmutableMap.builder(); + } + + public Builder addClass(ConcreteType<?> clazz) { + classes.put(clazz.getName(), clazz); + return this; + } + + public Project build() { + return new MapBackedProject(classes.build()); + } + } + private Map<String, ConcreteType<?>> classes; public MapBackedProject(Map<String, ConcreteType<?>> classes) { diff --git a/src/main/java/org/zwobble/couscous/values/ConcreteType.java b/src/main/java/org/zwobble/couscous/values/ConcreteType.java index 43016d1..9b08d9e 100644 --- a/src/main/java/org/zwobble/couscous/values/ConcreteType.java +++ b/src/main/java/org/zwobble/couscous/values/ConcreteType.java @@ -86,6 +86,10 @@ public class ConcreteType<T> { this.methods = methods; this.staticMethods = staticMethods; } + + public String getName() { + return name; + } public static <T> ConcreteType.Builder<T> builder(String name) { return new Builder<>(name); diff --git a/src/main/java/org/zwobble/couscous/values/IntegerValue.java b/src/main/java/org/zwobble/couscous/values/IntegerValue.java index 76d0c59..1f8a699 100644 --- a/src/main/java/org/zwobble/couscous/values/IntegerValue.java +++ b/src/main/java/org/zwobble/couscous/values/IntegerValue.java @@ -7,7 +7,7 @@ import lombok.val; @Value public class IntegerValue implements InterpreterValue { - public static final ConcreteType<?> TYPE = ConcreteType.<IntegerValue>builder("Integer") + public static final ConcreteType<?> TYPE = ConcreteType.<IntegerValue>builder("java.lang.Integer") .staticMethod("parseInt", () -> asList(StringValue.TYPE), (environment, arguments) -> { val value = (StringValue)arguments.get(0); |
