diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..0c09fbd01 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,36 @@ + +name: Build + +on: [push, pull_request] + +jobs: + build: + + runs-on: ${{ matrix.os }} + permissions: + contents: read + packages: write + strategy: + fail-fast: false + matrix: + java_version: [8] + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v2 + - name: Set up Java + uses: actions/setup-java@v2 + with: + java-version: ${{ matrix.java_version }} + distribution: 'adopt' + - name: Maven cache + uses: actions/cache@v2 + env: + cache-name: maven-cache + with: + path: + ~/.m2 + key: build-${{ env.cache-name }} + - name: Build with Maven + run: mvn package + diff --git a/README.md b/README.md index b707f9a92..b92e5f720 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/ebean-orm/ebean.svg?branch=master)](https://travis-ci.org/ebean-orm/ebean) +[![Build](https://github.com/ebean-orm/ebean/actions/workflows/build.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/build.yml) [![Maven Central : ebean](https://maven-badges.herokuapp.com/maven-central/io.ebean/ebean/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.ebean/ebean) # Sponsors diff --git a/ebean-api/pom.xml b/ebean-api/pom.xml index e62657572..5e0b9430a 100644 --- a/ebean-api/pom.xml +++ b/ebean-api/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean api @@ -49,7 +49,7 @@ io.ebean ebean-annotation - 7.4-SNAPSHOT + 7.3 diff --git a/ebean-autotune/pom.xml b/ebean-autotune/pom.xml index 4e681b92a..71f390c01 100644 --- a/ebean-autotune/pom.xml +++ b/ebean-autotune/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT @@ -26,7 +26,7 @@ io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided diff --git a/ebean-bom/pom.xml b/ebean-bom/pom.xml index fb5ea29ea..34f8c9564 100644 --- a/ebean-bom/pom.xml +++ b/ebean-bom/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean bom @@ -71,88 +71,88 @@ io.ebean ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-core-type - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-ddl-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-externalmapping-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-externalmapping-xml - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-autotune - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-querybean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean querybean-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided io.ebean kotlin-querybean-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided io.ebean ebean-test - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test io.ebean ebean-postgis - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-redis - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT diff --git a/ebean-core-type/pom.xml b/ebean-core-type/pom.xml index 35296dca7..09009283c 100644 --- a/ebean-core-type/pom.xml +++ b/ebean-core-type/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean-core-type @@ -16,7 +16,7 @@ io.ebean ebean-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT diff --git a/ebean-core/pom.xml b/ebean-core/pom.xml index ee80bef5f..ccef24355 100644 --- a/ebean-core/pom.xml +++ b/ebean-core/pom.xml @@ -3,7 +3,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean-core @@ -41,19 +41,19 @@ io.ebean ebean-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-core-type - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-externalmapping-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultPersistenceContext.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultPersistenceContext.java index d10d92ab2..3ede05de1 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultPersistenceContext.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultPersistenceContext.java @@ -275,12 +275,18 @@ public final class DefaultPersistenceContext implements SpiPersistenceContext { return null; } - private void put(Object id, Object b) { + private void put(Object id, Object bean) { + Object existing; if (useReferences) { weakCount++; - map.put(id, new BeanRef(this, id, b, queue)); + existing = map.put(id, new BeanRef(this, id, bean, queue)); } else { - map.put(id, b); + existing = map.put(id, bean); + } + if (existing instanceof BeanRef) { + // when a BeanRef is replaced, its expunge() must NOT remove an entry + ((BeanRef) existing).setReplaced(); + weakCount--; } } @@ -330,6 +336,7 @@ public final class DefaultPersistenceContext implements SpiPersistenceContext { private final ClassContext classContext; private final Object key; + private boolean replaced; private BeanRef(ClassContext classContext, Object key, Object referent, ReferenceQueue q) { super(referent, q); @@ -337,8 +344,14 @@ public final class DefaultPersistenceContext implements SpiPersistenceContext { this.key = key; } + private void setReplaced() { + replaced = true; + } + private void expunge() { - classContext.remove(key); + if (!replaced) { + classContext.remove(key); + } } } diff --git a/ebean-ddl-generator/pom.xml b/ebean-ddl-generator/pom.xml index 8e1acc59e..b2479c256 100644 --- a/ebean-ddl-generator/pom.xml +++ b/ebean-ddl-generator/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean ddl generation @@ -28,14 +28,14 @@ io.ebean ebean-core-type - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided diff --git a/ebean-externalmapping-api/pom.xml b/ebean-externalmapping-api/pom.xml index eeed011c7..16adb312f 100644 --- a/ebean-externalmapping-api/pom.xml +++ b/ebean-externalmapping-api/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean external mapping api diff --git a/ebean-externalmapping-xml/pom.xml b/ebean-externalmapping-xml/pom.xml index 57144e7f9..2bab5aa0b 100644 --- a/ebean-externalmapping-xml/pom.xml +++ b/ebean-externalmapping-xml/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT @@ -33,7 +33,7 @@ io.ebean ebean-externalmapping-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT @@ -59,14 +59,14 @@ io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test io.ebean ebean-ddl-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test diff --git a/ebean-postgis/pom.xml b/ebean-postgis/pom.xml index c185d6a16..74dad99da 100644 --- a/ebean-postgis/pom.xml +++ b/ebean-postgis/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean postgis @@ -23,7 +23,7 @@ io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided @@ -74,7 +74,7 @@ io.ebean ebean-test - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test diff --git a/ebean-querybean/pom.xml b/ebean-querybean/pom.xml index 4874ab549..bc07795b5 100644 --- a/ebean-querybean/pom.xml +++ b/ebean-querybean/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean querybean @@ -17,7 +17,7 @@ io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided @@ -56,21 +56,21 @@ io.ebean ebean-ddl-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test io.ebean querybean-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test io.ebean ebean-test - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test diff --git a/ebean-redis/pom.xml b/ebean-redis/pom.xml index c2156066b..9956949b3 100644 --- a/ebean-redis/pom.xml +++ b/ebean-redis/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean-redis @@ -22,35 +22,35 @@ io.ebean ebean-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided io.ebean ebean-querybean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test io.ebean querybean-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test io.ebean ebean-test - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test diff --git a/ebean-test/pom.xml b/ebean-test/pom.xml index 712755eca..6a2a5679f 100644 --- a/ebean-test/pom.xml +++ b/ebean-test/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean test @@ -29,14 +29,14 @@ io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT provided io.ebean ebean-ddl-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT diff --git a/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java b/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java index 86e0425a6..82788d8a0 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java +++ b/ebean-test/src/test/java/org/tests/basic/TestPersistenceContext.java @@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.*; class TestPersistenceContext extends BaseTestCase { - @Test void testReload() { ResetBasicData.reset(); @@ -34,7 +33,7 @@ class TestPersistenceContext extends BaseTestCase { assertThat(notes.get(0).getTitle()).isEqualTo("FooBar"); } } - + @Test void test() { ResetBasicData.reset(); @@ -191,4 +190,30 @@ class TestPersistenceContext extends BaseTestCase { assertThat(pc.toString()).contains("Customer=size:200 (0 weak)"); } } + + @Disabled // run manually + @Test + void testPcScopes_with_findEachFindList() { + for (int i = 0; i < 5000; i++) { + Customer c = new Customer(); + c.setName("Customer #" + i); + DB.save(c); + Order o = new Order(); + o.setCustomer(c); + DB.save(o); + } + + for (int i = 0; i < 1000; i++) { + try (Transaction txn = DB.beginTransaction()) { + List customers = new ArrayList<>(); + DB.find(Customer.class).select("id").findEach(customers::add); + SpiPersistenceContext pc = ((SpiTransaction) txn).getPersistenceContext(); + assertThat(pc.toString()).contains("Customer=size:5000 (5000 weak)"); + customers.clear(); + customers = DB.find(Customer.class).select("id").findList(); + + assertThat(pc.toString()).contains("Customer=size:5000"); // We expect ALWAYS 5000 entries in the PC + } + } + } } diff --git a/ebean-test/src/test/java/org/tests/basic/type/TestExtraScalarTypes.java b/ebean-test/src/test/java/org/tests/basic/type/TestExtraScalarTypes.java index 133adada4..d5ee6435a 100644 --- a/ebean-test/src/test/java/org/tests/basic/type/TestExtraScalarTypes.java +++ b/ebean-test/src/test/java/org/tests/basic/type/TestExtraScalarTypes.java @@ -10,16 +10,16 @@ import java.util.List; import java.util.Locale; import java.util.TimeZone; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -public class TestExtraScalarTypes extends BaseTestCase { +class TestExtraScalarTypes extends BaseTestCase { @Test - public void test() { + void test() { - Locale locale = Locale.getDefault(); - Currency currency = Currency.getInstance(locale); + Locale locale = Locale.ENGLISH; + Currency currency = Currency.getInstance(Locale.US); TimeZone tz = TimeZone.getDefault(); ESomeType e = new ESomeType(); @@ -29,20 +29,20 @@ public class TestExtraScalarTypes extends BaseTestCase { DB.save(e); - ESomeType e2 = DB.find(ESomeType.class).setAutoTune(false).setId(e.getId()).findOne(); + ESomeType e2 = DB.find(ESomeType.class).setId(e.getId()).findOne(); assertNotNull(e2.getCurrency()); assertNotNull(e2.getLocale()); assertNotNull(e2.getTimeZone()); List list = DB.find(ESomeType.class) - .setAutoTune(false).where() + .where() .eq("locale", locale) .eq("timeZone", tz.getID()) .eq("currency", currency) .findList(); - assertTrue(!list.isEmpty()); + assertThat(list).isNotEmpty(); } } diff --git a/ebean/pom.xml b/ebean/pom.xml index b92ba41a1..398c3a3a3 100644 --- a/ebean/pom.xml +++ b/ebean/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT ebean composite @@ -22,20 +22,20 @@ io.ebean ebean-api - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT io.ebean ebean-querybean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT diff --git a/kotlin-querybean-generator/pom.xml b/kotlin-querybean-generator/pom.xml index 95e4b2221..b2e022c98 100644 --- a/kotlin-querybean-generator/pom.xml +++ b/kotlin-querybean-generator/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT kotlin querybean generator @@ -29,7 +29,7 @@ io.ebean ebean-querybean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test @@ -43,7 +43,7 @@ io.ebean ebean-core - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test @@ -64,7 +64,7 @@ io.ebean ebean-ddl-generator - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT test diff --git a/pom.xml b/pom.xml index c391e227a..5cf92e7fe 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ io.ebean ebean-parent - 12.12.4-FOC1-SNAPSHOT + 12.13.1-FOC1-SNAPSHOT pom ebean parent @@ -45,8 +45,8 @@ 12.12.1 4.2 7.3 - 12.12.3-FOC1-SNAPSHOT - 12.12.3-FOC1-SNAPSHOT + 12.13.0-FOC1-SNAPSHOT + 12.13.0-FOC1-SNAPSHOT diff --git a/querybean-generator/pom.xml b/querybean-generator/pom.xml index 8c3b20f14..51de4c806 100644 --- a/querybean-generator/pom.xml +++ b/querybean-generator/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.12.4-FOC1-SNAPSHOT + 12.13.1-SNAPSHOT querybean generator diff --git a/tests/test-java16/pom.xml b/tests/test-java16/pom.xml index fe18418ab..4a416d12e 100644 --- a/tests/test-java16/pom.xml +++ b/tests/test-java16/pom.xml @@ -20,7 +20,7 @@ io.ebean ebean - 12.12.3-SNAPSHOT + 12.13.0-SNAPSHOT @@ -32,7 +32,7 @@ io.ebean ebean-test - 12.12.3-SNAPSHOT + 12.13.0-SNAPSHOT test @@ -58,7 +58,7 @@ io.ebean querybean-generator - 12.12.3-SNAPSHOT + 12.13.0-SNAPSHOT diff --git a/tests/test-kotlin/pom.xml b/tests/test-kotlin/pom.xml index 828aaf996..1321332b8 100644 --- a/tests/test-kotlin/pom.xml +++ b/tests/test-kotlin/pom.xml @@ -18,7 +18,7 @@ 11 11 - 12.12.1 + 12.13.0 1.5.31 2.12.1 true @@ -35,14 +35,14 @@ io.ebean ebean-test - 12.12.3-SNAPSHOT + 12.13.0-SNAPSHOT test io.ebean ebean-core - 12.12.3-SNAPSHOT + 12.13.0-SNAPSHOT test