aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-25 17:58:56 +0000
committerMichael Williamson <mike@zwobble.org>2015-10-25 17:58:56 +0000
commit2fe122bedcf87e2317ec53d351116ade43c09336 (patch)
treee64a489981027f2eed05273f6f039d997d468f03 /src/main/java/org
parent6f829beb148b7bd4c19b72e307a8b11b5c139b03 (diff)
Remove lombok from ClassNode
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNode.java96
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java2
2 files changed, 90 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNode.java b/src/main/java/org/zwobble/couscous/ast/ClassNode.java
index d0598d8..d2c64f5 100644
--- a/src/main/java/org/zwobble/couscous/ast/ClassNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/ClassNode.java
@@ -4,18 +4,50 @@ import java.util.List;
import org.zwobble.couscous.ast.visitors.NodeVisitor;
-import lombok.Value;
-
-@Value
public class ClassNode implements Node {
public static ClassNodeBuilder builder(String name) {
return new ClassNodeBuilder(name);
}
- TypeName name;
- List<FieldDeclarationNode> fields;
- ConstructorNode constructor;
- List<MethodNode> methods;
+ public static ClassNode declareClass(
+ TypeName name,
+ List<FieldDeclarationNode> fields,
+ ConstructorNode constructor,
+ List<MethodNode> methods) {
+ return new ClassNode(name, fields, constructor, methods);
+ }
+
+ private final TypeName name;
+ private final List<FieldDeclarationNode> fields;
+ private final ConstructorNode constructor;
+ private final List<MethodNode> methods;
+
+ private ClassNode(
+ TypeName name,
+ List<FieldDeclarationNode> fields,
+ ConstructorNode constructor,
+ List<MethodNode> methodNodes) {
+ this.name = name;
+ this.fields = fields;
+ this.constructor = constructor;
+ methods = methodNodes;
+ }
+
+ public TypeName getName() {
+ return name;
+ }
+
+ public List<FieldDeclarationNode> getFields() {
+ return fields;
+ }
+
+ public ConstructorNode getConstructor() {
+ return constructor;
+ }
+
+ public List<MethodNode> getMethods() {
+ return methods;
+ }
public String getSimpleName() {
return name.getSimpleName();
@@ -25,4 +57,54 @@ public class ClassNode implements Node {
public void accept(NodeVisitor visitor) {
visitor.visit(this);
}
+
+ @Override
+ public String toString() {
+ return "ClassNode(name=" + name + ", fields=" + fields
+ + ", constructor=" + constructor + ", methods=" + methods + ")";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((constructor == null) ? 0 : constructor.hashCode());
+ result = prime * result + ((fields == null) ? 0 : fields.hashCode());
+ result = prime * result + ((methods == null) ? 0 : methods.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ClassNode other = (ClassNode) obj;
+ if (constructor == null) {
+ if (other.constructor != null)
+ return false;
+ } else if (!constructor.equals(other.constructor))
+ return false;
+ if (fields == null) {
+ if (other.fields != null)
+ return false;
+ } else if (!fields.equals(other.fields))
+ return false;
+ if (methods == null) {
+ if (other.methods != null)
+ return false;
+ } else if (!methods.equals(other.methods))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ return true;
+ }
}
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
index 1b8aea3..b4e3891 100644
--- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
+++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
@@ -67,7 +67,7 @@ public class ClassNodeBuilder {
}
public ClassNode build() {
- return new ClassNode(
+ return ClassNode.declareClass(
name,
fields.build(),
constructor.orElse(constructorBuilder().build()),