From e78c0a1e4a4ebc71502dceccc9ae640862b7ce9e Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 11 Aug 2013 22:35:02 +0200 Subject: o Overhauling inheritance, adding a decent start of support for @MappedSuperclass. --- .../container/compiler/EntityHandlerTest.java | 2 +- .../trygvis/container/compiler/ProcessorTest.java | 71 ++++++++++++++++------ .../io/trygvis/persistence/EntityMirrorTest.java | 8 +-- .../resources/io/trygvis/persistence/test/Car.java | 8 --- .../io/trygvis/persistence/test/ChildEntity.java | 34 ----------- .../io/trygvis/persistence/test/ParentEntity.java | 22 ------- .../io/trygvis/persistence/test/Person.java | 39 ------------ .../io/trygvis/persistence/test/basic/Car.java | 8 +++ .../persistence/test/basic/ChildEntity.java | 34 +++++++++++ .../persistence/test/basic/ParentEntity.java | 24 ++++++++ .../io/trygvis/persistence/test/basic/Person.java | 39 ++++++++++++ .../persistence/test/basic/package-info.java | 4 ++ .../io/trygvis/persistence/test/inheritance/A.java | 40 ++++++++++++ .../persistence/test/inheritance/package-info.java | 4 ++ .../io/trygvis/persistence/test/package-info.java | 4 -- 15 files changed, 210 insertions(+), 131 deletions(-) delete mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Car.java delete mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ChildEntity.java delete mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ParentEntity.java delete mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Person.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Car.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ChildEntity.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ParentEntity.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Person.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/package-info.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/A.java create mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/package-info.java delete mode 100644 container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/package-info.java (limited to 'container-compiler-plugin/src/test') diff --git a/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/EntityHandlerTest.java b/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/EntityHandlerTest.java index e24a362..bfe2d89 100644 --- a/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/EntityHandlerTest.java +++ b/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/EntityHandlerTest.java @@ -3,7 +3,7 @@ package io.trygvis.container.compiler; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; -import static io.trygvis.container.compiler.EntityHandler.sqlName; +import static io.trygvis.container.compiler.Utils.sqlName; import static org.fest.assertions.Assertions.assertThat; @Test(singleThreaded = false) diff --git a/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/ProcessorTest.java b/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/ProcessorTest.java index f8cecac..4fa9e87 100644 --- a/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/ProcessorTest.java +++ b/container-compiler-plugin/src/test/java/io/trygvis/container/compiler/ProcessorTest.java @@ -1,6 +1,8 @@ package io.trygvis.container.compiler; import org.apache.commons.io.IOUtils; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import javax.tools.Diagnostic; @@ -12,18 +14,58 @@ import javax.tools.ToolProvider; import java.io.IOException; import java.net.URL; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Map; import static java.util.Arrays.asList; +import static javax.tools.JavaCompiler.CompilationTask; import static org.fest.assertions.Assertions.assertThat; public class ProcessorTest { Charset UTF_8 = Charset.forName("utf-8"); - @Test - public void testBasic() throws Exception { + @BeforeMethod + private void before() { + + } + + @DataProvider(name = "data", parallel = true) + public static Object[][] data() { + return new Object[][]{new Object[]{ + new String[]{ + "io.trygvis.persistence.test.basic.package-info", + "io.trygvis.persistence.test.basic.Person", + "io.trygvis.persistence.test.basic.ParentEntity", + "io.trygvis.persistence.test.basic.ChildEntity", + }, + new String[]{ + "io.trygvis.persistence.test.basic.Sequences", + "io.trygvis.persistence.test.basic.BasicSqlSession", + "io.trygvis.persistence.test.basic.BasicSqlSessionFactory", + "io.trygvis.persistence.test.basic.PersonDao", + "io.trygvis.persistence.test.basic.PersonRow", + "io.trygvis.persistence.test.basic.ChildEntityDao", + "io.trygvis.persistence.test.basic.ChildEntityRow", + } + }, new Object[]{ + new String[]{ + "io.trygvis.persistence.test.inheritance.package-info", + "io.trygvis.persistence.test.inheritance.A",}, + new String[]{ + "io.trygvis.persistence.test.inheritance.Sequences", + "io.trygvis.persistence.test.inheritance.InheritanceSqlSession", + "io.trygvis.persistence.test.inheritance.InheritanceSqlSessionFactory", + "io.trygvis.persistence.test.inheritance.DDao", + "io.trygvis.persistence.test.inheritance.DRow", + } + }, + }; + } + + @Test(dataProvider = "data") + public void testBasic(String[] files, String[] classes) throws Exception { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); DiagnosticCollector collector = new DiagnosticCollector<>(); @@ -31,14 +73,12 @@ public class ProcessorTest { InMemoryJavaFileManager fileManager = new InMemoryJavaFileManager(standardFileManager); - List sources = asList((JavaSourceFromString[])new JavaSourceFromString[]{ - loadJava("io.trygvis.persistence.test.package-info"), - loadJava("io.trygvis.persistence.test.Person"), - loadJava("io.trygvis.persistence.test.ParentEntity"), - loadJava("io.trygvis.persistence.test.ChildEntity"), - }); + List sources = new ArrayList<>(); + for (String file : files) { + sources.add(loadJava(file)); + } - JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, collector, null, null, sources); + CompilationTask task = compiler.getTask(null, fileManager, collector, null, null, sources); task.setProcessors(asList(new MyProcessor())); @@ -50,8 +90,8 @@ public class ProcessorTest { if (source != null) { error += source.toUri().getPath(); } - error += ":" + diagnostic.getLineNumber() + ":" + diagnostic.getColumnNumber(); - System.out.println(error + ":" + diagnostic.getMessage(Locale.ENGLISH)); + error += ":" + diagnostic.getLineNumber() + ":" + diagnostic.getColumnNumber(); + System.out.println(error + ": " + diagnostic.getMessage(Locale.ENGLISH)); } } @@ -60,14 +100,7 @@ public class ProcessorTest { System.out.println(entry.getValue()); } - assertThat(fileManager.codes.keySet()).containsOnly( - "io.trygvis.persistence.test.Sequences", - "io.trygvis.persistence.test.TestSqlSession", - "io.trygvis.persistence.test.TestSqlSessionFactory", - "io.trygvis.persistence.test.PersonDao", - "io.trygvis.persistence.test.PersonRow", - "io.trygvis.persistence.test.ChildEntityDao", - "io.trygvis.persistence.test.ChildEntityRow"); + assertThat(fileManager.codes.keySet()).containsOnly((Object[]) classes); assertThat(collector.getDiagnostics()).isEmpty(); assertThat(result).isTrue(); diff --git a/container-compiler-plugin/src/test/java/io/trygvis/persistence/EntityMirrorTest.java b/container-compiler-plugin/src/test/java/io/trygvis/persistence/EntityMirrorTest.java index fc63a8a..c978ec9 100644 --- a/container-compiler-plugin/src/test/java/io/trygvis/persistence/EntityMirrorTest.java +++ b/container-compiler-plugin/src/test/java/io/trygvis/persistence/EntityMirrorTest.java @@ -78,7 +78,7 @@ public class EntityMirrorTest { @Test(dataProvider = "insertIntoSql") public void testInsertIntoSql(FieldMirror[] fields, String insert, String delete, String create) throws Exception { - EntityMirror myTable = new EntityMirror(new GeneratorConfiguration(), entityType, "my_table"); + EntityMirror myTable = new EntityMirror(new GeneratorConfiguration(), entityType, true, null, "my_table"); for (FieldMirror field : fields) { myTable.add(field); } @@ -127,7 +127,7 @@ public class EntityMirrorTest { } private MethodRef insertInto(FieldMirror... fields) { - EntityMirror myTable = new EntityMirror(generatorConfiguration, entityType, "my_table"); + EntityMirror myTable = new EntityMirror(generatorConfiguration, entityType, true, null, "my_table"); myTable.add(fields); SqlUnitModel unit = new SqlUnitModel().add(myTable); return new DaoUtilsGenerator(unit, generatorConfiguration, myTable).insertInto(new Imports()); @@ -151,7 +151,7 @@ public class EntityMirrorTest { } private MethodRef delete(FieldMirror... fields) { - EntityMirror myTable = new EntityMirror(new GeneratorConfiguration(), entityType, "my_table"); + EntityMirror myTable = new EntityMirror(new GeneratorConfiguration(), entityType, true, null, "my_table"); myTable.add(fields); SqlUnitModel unit = new SqlUnitModel().add(myTable); return new DaoUtilsGenerator(unit, generatorConfiguration, myTable).delete(new Imports()); @@ -181,7 +181,7 @@ public class EntityMirrorTest { } private MethodRef deleteById(FieldMirror... fields) { - EntityMirror myTable = new EntityMirror(new GeneratorConfiguration(), entityType, "my_table"); + EntityMirror myTable = new EntityMirror(new GeneratorConfiguration(), entityType, true, null, "my_table"); myTable.add(fields); SqlUnitModel unit = new SqlUnitModel().add(myTable); return new DaoUtilsGenerator(unit, generatorConfiguration, myTable).deleteById(new Imports()); diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Car.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Car.java deleted file mode 100644 index 4b80afc..0000000 --- a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Car.java +++ /dev/null @@ -1,8 +0,0 @@ -package io.trygvis.persistence.test; - -import javax.persistence.Entity; - -@Entity -public class Car { - private int year; -} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ChildEntity.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ChildEntity.java deleted file mode 100644 index ff91680..0000000 --- a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ChildEntity.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.trygvis.persistence.test; - -import javax.persistence.Entity; - -@Entity -public class ChildEntity extends ParentEntity { - public final String name; - - public final int favoriteNumber; - - public ChildEntity(Long id, String name, int favoriteNumber) { - super(id); - this.name = name; - this.favoriteNumber = favoriteNumber; - } - - // ----------------------------------------------------------------------- - // These static versions shouldn't affect anything - // ----------------------------------------------------------------------- - - public static void setSetterOnly(int x) { - } - - public static int getAccessorPair() { - return 0; - } - - public static void setAccessorPair(int x) { - } - - public static int getGetterOnly() { - return 0; - } -} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ParentEntity.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ParentEntity.java deleted file mode 100644 index 9925f7e..0000000 --- a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/ParentEntity.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.trygvis.persistence.test; - -import javax.persistence.Id; - -public class ParentEntity { - @Id - public Long id; - - private Integer age; - - public ParentEntity(Long id) { - this.id = id; - } - - public Integer getAge() { - return age; - } - - public void setAge(Integer age) { - this.age = age; - } -} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Person.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Person.java deleted file mode 100644 index 47a2fdd..0000000 --- a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/Person.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.trygvis.persistence.test; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.ManyToOne; -import javax.persistence.SequenceGenerator; -import java.util.Date; - -@Entity -@SequenceGenerator(name = "id_seq") -public class Person { - @Id - public Long id; - - public Date birthDate; - - @ManyToOne - public Person mother; - - enum Gender { - MALE, FEMALE - } - - public final Gender gender; - -// @ManyToOne -// public Person father; - -// @OneToMany(mappedBy = "id") -// @OrderBy("birthDate asc") -// private List children = new ArrayList<>(); - - public Person(Long id, Date birthDate, Person mother, Gender gender) { - this.id = id; - this.birthDate = birthDate; - this.mother = mother; - this.gender = gender; - } -} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Car.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Car.java new file mode 100644 index 0000000..2781712 --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Car.java @@ -0,0 +1,8 @@ +package io.trygvis.persistence.test.basic; + +import javax.persistence.Entity; + +@Entity +public class Car { + private int year; +} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ChildEntity.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ChildEntity.java new file mode 100644 index 0000000..208ee9a --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ChildEntity.java @@ -0,0 +1,34 @@ +package io.trygvis.persistence.test.basic; + +import javax.persistence.Entity; + +@Entity +public class ChildEntity extends ParentEntity { + public final String name; + + public final int favoriteNumber; + + public ChildEntity(Long id, String name, int favoriteNumber) { + super(id); + this.name = name; + this.favoriteNumber = favoriteNumber; + } + + // ----------------------------------------------------------------------- + // These static versions shouldn't affect anything + // ----------------------------------------------------------------------- + + public static void setSetterOnly(int x) { + } + + public static int getAccessorPair() { + return 0; + } + + public static void setAccessorPair(int x) { + } + + public static int getGetterOnly() { + return 0; + } +} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ParentEntity.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ParentEntity.java new file mode 100644 index 0000000..3dd2375 --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/ParentEntity.java @@ -0,0 +1,24 @@ +package io.trygvis.persistence.test.basic; + +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class ParentEntity { + @Id + public Long id; + + private Integer age; + + public ParentEntity(Long id) { + this.id = id; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } +} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Person.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Person.java new file mode 100644 index 0000000..3cbdb84 --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/Person.java @@ -0,0 +1,39 @@ +package io.trygvis.persistence.test.basic; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import java.util.Date; + +@Entity +@SequenceGenerator(name = "id_seq") +public class Person { + @Id + public Long id; + + public Date birthDate; + + @ManyToOne + public Person mother; + + enum Gender { + MALE, FEMALE + } + + public final Gender gender; + +// @ManyToOne +// public Person father; + +// @OneToMany(mappedBy = "id") +// @OrderBy("birthDate asc") +// private List children = new ArrayList<>(); + + public Person(Long id, Date birthDate, Person mother, Gender gender) { + this.id = id; + this.birthDate = birthDate; + this.mother = mother; + this.gender = gender; + } +} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/package-info.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/package-info.java new file mode 100644 index 0000000..780fae5 --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/basic/package-info.java @@ -0,0 +1,4 @@ +@SqlEntitySet(name = "Basic") +package io.trygvis.persistence.test.basic; + +import io.trygvis.persistence.SqlEntitySet; diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/A.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/A.java new file mode 100644 index 0000000..99770da --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/A.java @@ -0,0 +1,40 @@ +package io.trygvis.persistence.test.inheritance; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.MappedSuperclass; +import javax.persistence.SequenceGenerator; + +public class A { + public Integer a; +} + +@SequenceGenerator(name = "id", sequenceName = "id_seq") +@MappedSuperclass +class B extends A { + public Integer b; +} + +class C extends B { + public Integer c; +} + +@Entity +class D extends C { + @Id + public Integer d; + + private int d2; + + public Integer getD2() { + return d2; + } + + public void setD2(Integer d2) { + this.d2 = d2; + } +} + +class E extends D { + public int e; +} diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/package-info.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/package-info.java new file mode 100644 index 0000000..7382c7a --- /dev/null +++ b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/inheritance/package-info.java @@ -0,0 +1,4 @@ +@SqlEntitySet(name = "Inheritance") +package io.trygvis.persistence.test.inheritance; + +import io.trygvis.persistence.SqlEntitySet; diff --git a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/package-info.java b/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/package-info.java deleted file mode 100644 index 5a80282..0000000 --- a/container-compiler-plugin/src/test/resources/io/trygvis/persistence/test/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -@SqlEntitySet(name = "Test") -package io.trygvis.persistence.test; - -import io.trygvis.persistence.SqlEntitySet; -- cgit v1.2.3