From 519223aae4fc1e5fdc1fc52f52a24ecdcd22acb4 Mon Sep 17 00:00:00 2001 From: Niklas Fors <niklas.fors@cs.lth.se> Date: Fri, 6 Jul 2018 10:46:35 +0200 Subject: [PATCH] Add clearX method for optionals --- spec/jastadd/Backend.jadd | 32 +++++++++++++++++--------------- test/Test.java | 4 ++-- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/spec/jastadd/Backend.jadd b/spec/jastadd/Backend.jadd index d9da1c4..e042714 100644 --- a/spec/jastadd/Backend.jadd +++ b/spec/jastadd/Backend.jadd @@ -138,11 +138,7 @@ aspect BackendDirectedAPI { public void OptionalRelationComponent.generateDirectedAPI(StringBuilder sb) { generateDirectedZeroOneAPI(sb, true); - // has - sb.append(ind(1) + "public boolean " + toTypeDecl()); - sb.append(".has" + nameCapitalized() + "() {\n"); - sb.append(ind(2) + "return " + name() + "() != null;\n"); - sb.append(ind(1) + "}\n"); + generateExtraOptAPI(sb); } public void RelationComponent.generateDirectedZeroOneAPI(StringBuilder sb, boolean optional) { // Get @@ -191,6 +187,20 @@ aspect BackendDirectedAPI { sb.append(ind(2) + "}\n"); sb.append(ind(1) + "}\n"); } + + public void RelationComponent.generateExtraOptAPI(StringBuilder sb) { + // has + sb.append(ind(1) + "public boolean " + toTypeDecl()); + sb.append(".has" + nameCapitalized() + "() {\n"); + sb.append(ind(2) + "return " + name() + "() != null;\n"); + sb.append(ind(1) + "}\n"); + + // clear + sb.append(ind(1) + "public void " + toTypeDecl()); + sb.append(".clear" + nameCapitalized() + "() {\n"); + sb.append(ind(2) + "set" + nameCapitalized() + "(null);\n"); + sb.append(ind(1) + "}\n"); + } } aspect BackendBidirectionalAPI { @@ -264,11 +274,7 @@ aspect BackendBidirectionalAPI { sb.append(ind(1) + "}\n"); if (isOpt) { - // has - sb.append(ind(1) + "public boolean " + toTypeDecl()); - sb.append(".has" + nameCapitalized() + "() {\n"); - sb.append(ind(2) + "return " + name() + "() != null;\n"); - sb.append(ind(1) + "}\n"); + generateExtraOptAPI(sb); } } @@ -397,12 +403,8 @@ aspect BackendBidirectionalAPI { } sb.append(ind(1) + "}\n"); - // has if (isOpt) { - sb.append(ind(1) + "public boolean " + toTypeDecl()); - sb.append(".has" + nameCapitalized() + "() {\n"); - sb.append(ind(2) + "return " + name() + "() != null;\n"); - sb.append(ind(1) + "}\n"); + generateExtraOptAPI(sb); } } } diff --git a/test/Test.java b/test/Test.java index 1d1a1d7..bf24395 100644 --- a/test/Test.java +++ b/test/Test.java @@ -73,7 +73,7 @@ public class Test { assertSame(a1.di2(), b2); assertSame(a2.di2(), b2); - a2.setDi2(null); + a2.clearDi2(); assertSame(a1.di2(), b2); assertNull(a2.di2()); @@ -353,7 +353,7 @@ public class Test { assertEquals(b2.bi6(), Arrays.asList()); assertEquals(b3.bi6(), Arrays.asList(a1, a3)); - a2.setBi6(null); + a2.clearBi6(); assertSame(a1.bi6(), b3); assertNull(a2.bi6()); -- GitLab