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