diff --git a/jOOQ-test/src/org/jooq/test/BaseTest.java b/jOOQ-test/src/org/jooq/test/BaseTest.java index 61b35f9a13..333c7feaf0 100644 --- a/jOOQ-test/src/org/jooq/test/BaseTest.java +++ b/jOOQ-test/src/org/jooq/test/BaseTest.java @@ -378,6 +378,18 @@ public abstract class BaseTest< return delegate.TAuthorDao(); } + protected Class TAuthorPojo() { + return delegate.TAuthorPojo(); + } + + protected Class TBookPojo() { + return delegate.TBookPojo(); + } + + protected Class TBooleansPojo() { + return delegate.TBooleansPojo(); + } + protected UpdatableTable TAuthor() { return delegate.TAuthor(); } diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/EnumTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/EnumTests.java index fd6e284d8e..0c19bdd2e1 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/EnumTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/EnumTests.java @@ -55,8 +55,6 @@ import org.jooq.test._.converters.Boolean_YES_NO_LC; import org.jooq.test._.converters.Boolean_YES_NO_UC; import org.jooq.test._.converters.Boolean_YN_LC; import org.jooq.test._.converters.Boolean_YN_UC; -import org.jooq.tools.reflect.Reflect; -import org.jooq.tools.reflect.ReflectException; import org.junit.Test; @@ -209,13 +207,14 @@ extends BaseTest b = create().selectFrom(TBooleans()) .orderBy(TBooleans_ID().asc()) - .fetchInto((Class) booleans.get()); + .fetchInto(TBooleansPojo()); assertEquals(2, b.size()); assertEquals(1, on(b.get(0)).call("getId").get()); @@ -242,10 +241,6 @@ extends BaseTest books = - create().selectFrom(TBook()) - .orderBy(TBook_ID()) - .fetchInto((Class) book.get()); - - assertEquals(4, books.size()); - for (int i = 0; i < 4; i++) { - assertEquals(BOOK_IDS.get(i), on(books.get(i)).call("getId").get()); - assertEquals(BOOK_AUTHOR_IDS.get(i), on(books.get(i)).call("getAuthorId").get()); - assertEquals(BOOK_TITLES.get(i), on(books.get(i)).call("getTitle").get()); - } - } - catch (ReflectException e) { + if (TAuthorPojo() == null) { log.info("SKIPPING", "Generated POJO tests"); + return; + } + + List books = + create().selectFrom(TBook()) + .orderBy(TBook_ID()) + .fetchInto(TBookPojo()); + + assertEquals(4, books.size()); + for (int i = 0; i < 4; i++) { + assertEquals(BOOK_IDS.get(i), on(books.get(i)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(i), on(books.get(i)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(i), on(books.get(i)).call("getTitle").get()); } } @@ -1503,65 +1499,61 @@ extends BaseTest> map1 = - create().selectFrom(TBook()) - .orderBy(TBook_ID()) - .fetchIntoGroups(TBook_ID(), (Class) book.get()); - - assertEquals(4, map1.size()); - assertEquals(BOOK_IDS, new ArrayList(map1.keySet())); - - List>> entries = - new ArrayList>>(map1.entrySet()); - - for (int i = 0; i < map1.size(); i++) { - Entry> entry = entries.get(i); - assertEquals(1, entry.getValue().size()); - - assertEquals(BOOK_IDS.get(i), on(entry.getValue().get(0)).call("getId").get()); - assertEquals(BOOK_AUTHOR_IDS.get(i), on(entry.getValue().get(0)).call("getAuthorId").get()); - assertEquals(BOOK_TITLES.get(i), on(entry.getValue().get(0)).call("getTitle").get()); - } - - // Group by BOOK.AUTHOR_ID - Map> map2 = - create().selectFrom(TBook()) - .orderBy(TBook_ID()) - .fetchIntoGroups(TBook_AUTHOR_ID(), (Class) book.get()); - - assertEquals(2, map2.size()); - assertEquals(AUTHOR_IDS, new ArrayList(map2.keySet())); - - Iterator>> it = map2.entrySet().iterator(); - Entry> entry21 = it.next(); - assertEquals(2, entry21.getValue().size()); - assertEquals(BOOK_IDS.get(0), on(entry21.getValue().get(0)).call("getId").get()); - assertEquals(BOOK_AUTHOR_IDS.get(0), on(entry21.getValue().get(0)).call("getAuthorId").get()); - assertEquals(BOOK_TITLES.get(0), on(entry21.getValue().get(0)).call("getTitle").get()); - assertEquals(BOOK_IDS.get(1), on(entry21.getValue().get(1)).call("getId").get()); - assertEquals(BOOK_AUTHOR_IDS.get(1), on(entry21.getValue().get(1)).call("getAuthorId").get()); - assertEquals(BOOK_TITLES.get(1), on(entry21.getValue().get(1)).call("getTitle").get()); - - Entry> entry22 = it.next(); - assertEquals(2, entry22.getValue().size()); - assertEquals(BOOK_IDS.get(2), on(entry22.getValue().get(0)).call("getId").get()); - assertEquals(BOOK_AUTHOR_IDS.get(2), on(entry22.getValue().get(0)).call("getAuthorId").get()); - assertEquals(BOOK_TITLES.get(2), on(entry22.getValue().get(0)).call("getTitle").get()); - assertEquals(BOOK_IDS.get(3), on(entry22.getValue().get(1)).call("getId").get()); - assertEquals(BOOK_AUTHOR_IDS.get(3), on(entry22.getValue().get(1)).call("getAuthorId").get()); - assertEquals(BOOK_TITLES.get(3), on(entry22.getValue().get(1)).call("getTitle").get()); - - assertFalse(it.hasNext()); - } - catch (ReflectException e) { + if (TBookPojo() == null) { log.info("SKIPPING", "Generated POJO tests"); + return; } + + // Group by BOOK.ID + Map> map1 = + create().selectFrom(TBook()) + .orderBy(TBook_ID()) + .fetchIntoGroups(TBook_ID(), TBookPojo()); + + assertEquals(4, map1.size()); + assertEquals(BOOK_IDS, new ArrayList(map1.keySet())); + + List>> entries = + new ArrayList>>(map1.entrySet()); + + for (int i = 0; i < map1.size(); i++) { + Entry> entry = entries.get(i); + assertEquals(1, entry.getValue().size()); + + assertEquals(BOOK_IDS.get(i), on(entry.getValue().get(0)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(i), on(entry.getValue().get(0)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(i), on(entry.getValue().get(0)).call("getTitle").get()); + } + + // Group by BOOK.AUTHOR_ID + Map> map2 = + create().selectFrom(TBook()) + .orderBy(TBook_ID()) + .fetchIntoGroups(TBook_AUTHOR_ID(), TBookPojo()); + + assertEquals(2, map2.size()); + assertEquals(AUTHOR_IDS, new ArrayList(map2.keySet())); + + Iterator>> it = map2.entrySet().iterator(); + Entry> entry21 = it.next(); + assertEquals(2, entry21.getValue().size()); + assertEquals(BOOK_IDS.get(0), on(entry21.getValue().get(0)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(0), on(entry21.getValue().get(0)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(0), on(entry21.getValue().get(0)).call("getTitle").get()); + assertEquals(BOOK_IDS.get(1), on(entry21.getValue().get(1)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(1), on(entry21.getValue().get(1)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(1), on(entry21.getValue().get(1)).call("getTitle").get()); + + Entry> entry22 = it.next(); + assertEquals(2, entry22.getValue().size()); + assertEquals(BOOK_IDS.get(2), on(entry22.getValue().get(0)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(2), on(entry22.getValue().get(0)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(2), on(entry22.getValue().get(0)).call("getTitle").get()); + assertEquals(BOOK_IDS.get(3), on(entry22.getValue().get(1)).call("getId").get()); + assertEquals(BOOK_AUTHOR_IDS.get(3), on(entry22.getValue().get(1)).call("getAuthorId").get()); + assertEquals(BOOK_TITLES.get(3), on(entry22.getValue().get(1)).call("getTitle").get()); + + assertFalse(it.hasNext()); } } diff --git a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java index 37b2698e70..802a302193 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java @@ -38,6 +38,7 @@ package org.jooq.test; import static junit.framework.Assert.assertEquals; import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.tools.reflect.Reflect.on; import java.io.File; import java.io.InputStream; @@ -119,6 +120,7 @@ import org.jooq.test._.testcases.ThreadSafetyTests; import org.jooq.tools.JooqLogger; import org.jooq.tools.StopWatch; import org.jooq.tools.StringUtils; +import org.jooq.tools.reflect.ReflectException; import org.jooq.tools.unsigned.UByte; import org.jooq.tools.unsigned.UInteger; import org.jooq.tools.unsigned.ULong; @@ -589,6 +591,39 @@ public abstract class jOOQAbstractTest< return null; } + protected final Class TAuthorPojo() { + + // Not all test configurations have generated POJOs. Discover them dynamically + try { + return on(TBook().getClass().getPackage().getName() + ".pojos." + TAuthor().getClass().getSimpleName()).get(); + } + catch (ReflectException ignore) { + return null; + } + } + + protected final Class TBookPojo() { + + // Not all test configurations have generated POJOs. Discover them dynamically + try { + return on(TBook().getClass().getPackage().getName() + ".pojos." + TBook().getClass().getSimpleName()).get(); + } + catch (ReflectException ignore) { + return null; + } + } + + protected final Class TBooleansPojo() { + + // Not all test configurations have generated POJOs. Discover them dynamically + try { + return on(TBook().getClass().getPackage().getName() + ".pojos." + TBooleans().getClass().getSimpleName()).get(); + } + catch (ReflectException ignore) { + return null; + } + } + protected abstract UpdatableTable TAuthor(); protected abstract TableField TAuthor_LAST_NAME(); protected abstract TableField TAuthor_FIRST_NAME();