diff --git a/spec/jastadd/Backend.jadd b/spec/jastadd/Backend.jadd index d9da1c4ef99e9ff0d081994bcd326aebfc00075d..e0427142ce76675290b38b5560a4497c3e442bd6 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 1d1a1d7233cdbeea11fec5560be5dd7a327fe715..bf24395a361fdc9d59fff5f00c052381f452bede 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());