diff --git a/ebean-api/src/main/java/io/ebean/ProfileLocation.java b/ebean-api/src/main/java/io/ebean/ProfileLocation.java index 33584a0b3..20a9a0d57 100644 --- a/ebean-api/src/main/java/io/ebean/ProfileLocation.java +++ b/ebean-api/src/main/java/io/ebean/ProfileLocation.java @@ -17,15 +17,32 @@ public interface ProfileLocation { } /** - * Create and return a new ProfileLocation with a given lineNumber and label. + * Create and return a new ProfileLocation with line number. */ - static ProfileLocation create(int lineNumber, String label) { - return XServiceProvider.profileLocationFactory().create(lineNumber, label); + static ProfileLocation createWithLine() { + return XServiceProvider.profileLocationFactory().createWithLine(); } /** + * Create and return a new ProfileLocation with a given lineNumber and label. + */ + static ProfileLocation create(String label) { + return XServiceProvider.profileLocationFactory().create(label); + } + + /** + * Deprecated in favor of {@link #create(String)}. + */ + @Deprecated + static ProfileLocation create(int lineNumber, String label) { + return create(label); + } + + /** + * Deprecated for removal - not used. * Create and return a new ProfileLocation with a given location. */ + @Deprecated static ProfileLocation createAt(String location) { return XServiceProvider.profileLocationFactory().createAt(location); } diff --git a/ebean-api/src/main/java/io/ebean/service/SpiProfileLocationFactory.java b/ebean-api/src/main/java/io/ebean/service/SpiProfileLocationFactory.java index a2f269641..7c78e37d7 100644 --- a/ebean-api/src/main/java/io/ebean/service/SpiProfileLocationFactory.java +++ b/ebean-api/src/main/java/io/ebean/service/SpiProfileLocationFactory.java @@ -12,6 +12,11 @@ public interface SpiProfileLocationFactory { */ ProfileLocation create(); + /** + * Create a profile location with line numbering. + */ + ProfileLocation createWithLine(); + /** * Create with a given label - used only with {@code @Transaction}. * @@ -19,16 +24,6 @@ public interface SpiProfileLocationFactory { */ ProfileLocation create(String label); - /** - * Create a profile location with a line number. - * - * @param lineNumber always 0 - * @param label the label for the transaction - */ - default ProfileLocation create(int lineNumber, String label) { - return create(label); - } - /** * Create a known location. */ diff --git a/ebean-api/src/main/resources/META-INF/ebean-version.mf b/ebean-api/src/main/resources/META-INF/ebean-version.mf index 45259b053..5b6b424fe 100644 --- a/ebean-api/src/main/resources/META-INF/ebean-version.mf +++ b/ebean-api/src/main/resources/META-INF/ebean-version.mf @@ -1 +1 @@ -ebean-version: 142 +ebean-version: 143 diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocation.java b/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocation.java index 0f51e078a..ae0ef13a5 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocation.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocation.java @@ -12,12 +12,14 @@ class DProfileLocation implements ProfileLocation { private static final String UNKNOWN = "unknown"; + private final boolean withLine; private String fullLocation; private String location; private String label; private int traceCount; - DProfileLocation() { + DProfileLocation(boolean withLine) { + this.withLine = withLine; } @Override @@ -37,7 +39,7 @@ class DProfileLocation implements ProfileLocation { return false; } final String loc = create(); - final String location = UtilLocation.loc(loc); + final String location = UtilLocation.loc(loc, withLine); this.label = UtilLocation.label(location); this.location = location; this.fullLocation = loc; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocationFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocationFactory.java index 915a96163..9b4253624 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocationFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/profile/DProfileLocationFactory.java @@ -11,7 +11,12 @@ public final class DProfileLocationFactory implements SpiProfileLocationFactory @Override public ProfileLocation create() { - return new DProfileLocation(); + return new DProfileLocation(false); + } + + @Override + public ProfileLocation createWithLine() { + return new DProfileLocation(true); } @Override diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/profile/DTimedProfileLocation.java b/ebean-core/src/main/java/io/ebeaninternal/server/profile/DTimedProfileLocation.java index cbbf3ad8d..fcb7c2f82 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/profile/DTimedProfileLocation.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/profile/DTimedProfileLocation.java @@ -16,6 +16,7 @@ final class DTimedProfileLocation extends DProfileLocation implements TimedProfi private String reportName; DTimedProfileLocation(String label, TimedMetric timedMetric) { + super(false); this.label = label; this.timedMetric = timedMetric; this.overrideMetricName = "".equals(label); diff --git a/ebean-externalmapping-xml/src/test/resources/META-INF/ebean-version.mf b/ebean-externalmapping-xml/src/test/resources/META-INF/ebean-version.mf index 45259b053..5b6b424fe 100644 --- a/ebean-externalmapping-xml/src/test/resources/META-INF/ebean-version.mf +++ b/ebean-externalmapping-xml/src/test/resources/META-INF/ebean-version.mf @@ -1 +1 @@ -ebean-version: 142 +ebean-version: 143 diff --git a/ebean-querybean/pom.xml b/ebean-querybean/pom.xml index 085e7a884..3d693e4fe 100644 --- a/ebean-querybean/pom.xml +++ b/ebean-querybean/pom.xml @@ -107,7 +107,7 @@ true - io.ebean.tile:enhancement:13.12.0 + io.ebean.tile:enhancement:13.13.1 diff --git a/ebean-querybean/src/test/java/org/querytest/QContactTest.java b/ebean-querybean/src/test/java/org/querytest/QContactTest.java index 296aa5be6..e2cec545e 100644 --- a/ebean-querybean/src/test/java/org/querytest/QContactTest.java +++ b/ebean-querybean/src/test/java/org/querytest/QContactTest.java @@ -9,9 +9,21 @@ public class QContactTest { @Test public void test_oneToManyMap() { + findThem(); + findThem(ZonedDateTime.now()); + } + + void findThem() { new QContact() .others.fetch() .zoneDateTime.before(ZonedDateTime.now()) .findList(); } + + void findThem(ZonedDateTime dateTime) { + new QContact() + .others.fetch() + .zoneDateTime.before(dateTime) + .findList(); + } } diff --git a/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java b/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java index 0375ace45..d8f0dff38 100644 --- a/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java +++ b/ebean-querybean/src/test/java/org/querytest/QCustomerTest.java @@ -368,6 +368,17 @@ public class QCustomerTest { .findList(); } + @Test + public void testTwoDiffQueryTypes_expect_NoLineNumbers() { + new QCustomer() + .id.isIn(34L) + .findList(); + + new QContact() + .email.isNull() + .findList(); + } + @Test public void testQueryBoolean() { diff --git a/ebean-querybean/src/test/resources/application-test.properties b/ebean-querybean/src/test/resources/application-test.properties index d477b74c8..9c1b1a919 100644 --- a/ebean-querybean/src/test/resources/application-test.properties +++ b/ebean-querybean/src/test/resources/application-test.properties @@ -1,6 +1,8 @@ ebean.ddl.generate=true ebean.ddl.run=true ebean.ddl.initSql=init-db.sql +ebean.dumpMetricsOnShutdown=true +ebean.dumpMetricsOptions=sql,hash,loc datasource.default=h2 diff --git a/ebean-querybean/src/test/resources/ebean.mf b/ebean-querybean/src/test/resources/ebean.mf index 9f7856f61..6c540c433 100644 --- a/ebean-querybean/src/test/resources/ebean.mf +++ b/ebean-querybean/src/test/resources/ebean.mf @@ -1,5 +1,7 @@ entity-packages: org.example.domain querybean-packages: org.example.domain,org.querytest debug: 0 -synthetic: false +synthetic: true entity-field-access: true +profile-line-number-mode: auto + diff --git a/ebean-test/src/test/java/org/tests/profile/ProfileLocationTest.java b/ebean-test/src/test/java/org/tests/profile/ProfileLocationTest.java index b14b35963..38597e004 100644 --- a/ebean-test/src/test/java/org/tests/profile/ProfileLocationTest.java +++ b/ebean-test/src/test/java/org/tests/profile/ProfileLocationTest.java @@ -10,10 +10,12 @@ class ProfileLocationTest { private static final ProfileLocation loc = ProfileLocation.create(12, "foo"); private static final ProfileLocation locB = ProfileLocation.create(); private static final ProfileLocation loc2 = ProfileLocation.create(); - + private static final ProfileLocation locWithLine = ProfileLocation.createWithLine(); private boolean doIt() { locB.obtain(); // simulate a location moving by line number only - return loc.obtain(); + boolean result = loc.obtain(); + locWithLine.obtain(); + return result; } @Test @@ -29,6 +31,16 @@ class ProfileLocationTest { assertThat(locB.label()).isEqualTo("ProfileLocationTest.doIt"); } + @Test + void test_obtainWithLine() { + doIt(); + + // same hash even when the line number has changed + assertThat(locWithLine.fullLocation()).isEqualTo("org.tests.profile.ProfileLocationTest.doIt(ProfileLocationTest.java:17)"); + assertThat(locWithLine.location()).isEqualTo("org.tests.profile.ProfileLocationTest.doIt:17"); + assertThat(locWithLine.label()).isEqualTo("ProfileLocationTest.doIt:17"); + } + @Test void test_add() { loc.add(100); diff --git a/kotlin-querybean-generator/src/test/resources/META-INF/ebean-version.mf b/kotlin-querybean-generator/src/test/resources/META-INF/ebean-version.mf index 45259b053..5b6b424fe 100644 --- a/kotlin-querybean-generator/src/test/resources/META-INF/ebean-version.mf +++ b/kotlin-querybean-generator/src/test/resources/META-INF/ebean-version.mf @@ -1 +1 @@ -ebean-version: 142 +ebean-version: 143 diff --git a/pom.xml b/pom.xml index 4aa62b5c8..750cc81ae 100644 --- a/pom.xml +++ b/pom.xml @@ -50,8 +50,8 @@ 13.7.0 6.3 8.5 - 13.13.0 - 13.13.0 + 13.13.1 + 13.13.1 false diff --git a/tests/test-kotlin/src/test/resources/META-INF/ebean-version.mf b/tests/test-kotlin/src/test/resources/META-INF/ebean-version.mf index 45259b053..5b6b424fe 100644 --- a/tests/test-kotlin/src/test/resources/META-INF/ebean-version.mf +++ b/tests/test-kotlin/src/test/resources/META-INF/ebean-version.mf @@ -1 +1 @@ -ebean-version: 142 +ebean-version: 143