This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/version3 by this push:
new 09c6388 EMPIREDB-362 RecordLIstFactory optimization
09c6388 is described below
commit 09c6388b3c20ab186847524b41bcf9f6a7d0c3c1
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Feb 1 01:31:57 2022 +0100
EMPIREDB-362 RecordLIstFactory optimization
---
.../java/org/apache/empire/samples/db/beans/Department.java | 5 ++---
.../main/java/org/apache/empire/samples/db/beans/Employee.java | 10 ++++------
.../main/java/org/apache/empire/samples/db/beans/Payment.java | 3 +--
empire-db/src/main/java/org/apache/empire/db/DBReader.java | 3 +--
empire-db/src/main/java/org/apache/empire/db/DBRecord.java | 3 +--
empire-db/src/main/java/org/apache/empire/db/DBRecordData.java | 5 +++--
empire-db/src/main/java/org/apache/empire/db/DBUtils.java | 4 ++--
empire-db/src/main/java/org/apache/empire/db/list/Bean.java | 3 +--
.../java/org/apache/empire/db/list/DBBeanListFactoryImpl.java | 2 +-
.../org/apache/empire/db/list/DBRecordListFactoryImpl.java | 10 +++-------
10 files changed, 19 insertions(+), 29 deletions(-)
diff --git
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Department.java
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Department.java
index c23e3e5..6e305cc 100644
---
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Department.java
+++
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Department.java
@@ -21,7 +21,6 @@ package org.apache.empire.samples.db.beans;
import java.util.List;
import org.apache.empire.db.DBCommand;
-import org.apache.empire.db.DBContext;
import org.apache.empire.db.DBRecordData;
import org.apache.empire.db.list.Bean;
import org.apache.empire.samples.db.SampleDB;
@@ -65,13 +64,13 @@ public class Department implements Bean
}
@Override
- public void onBeanLoaded(DBContext context, DBRecordData dataRow, int
rownum, Object parent)
+ public void onBeanLoaded(DBRecordData dataRow, int rownum, Object parent)
{
SampleDB db = (SampleDB)dataRow.getDatabase();
DBCommand cmd = db.createCommand();
cmd.where(db.EMPLOYEES.DEPARTMENT_ID.is(this.id));
cmd.orderBy(db.EMPLOYEES.FIRSTNAME, db.EMPLOYEES.LASTNAME);
- employees = context.getUtils().queryBeanList(cmd, Employee.class,
this);
+ employees = dataRow.getContext().getUtils().queryBeanList(cmd,
Employee.class, this);
}
}
diff --git
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
index 57ea9ce..9942b8f 100644
---
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
+++
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
@@ -26,8 +26,6 @@ import java.util.Locale;
import org.apache.empire.commons.DateUtils;
import org.apache.empire.db.DBCommand;
-import org.apache.empire.db.DBContext;
-import org.apache.empire.db.DBRecord;
import org.apache.empire.db.DBRecordData;
import org.apache.empire.db.list.Bean;
import org.apache.empire.samples.db.SampleDB;
@@ -229,19 +227,19 @@ public class Employee implements Bean
}
@Override
- public void onBeanLoaded(DBContext context, DBRecordData dataRow, int
rownum, Object parent)
+ public void onBeanLoaded(DBRecordData dataRow, int rownum, Object parent)
{
if (parent instanceof Department)
department = ((Department)parent);
- else
- department = context.getUtils().queryBean(Department.class,
DBRecord.key(this.departmentId));
+ // don't!
+ // else department = context.getUtils().queryBean(Department.class,
DBRecord.key(this.departmentId));
SampleDB db = (SampleDB)dataRow.getDatabase();
DBCommand cmd = db.createCommand();
cmd.where(db.PAYMENTS.EMPLOYEE_ID.is(this.id));
cmd.orderBy(db.PAYMENTS.YEAR.desc());
cmd.orderBy(db.PAYMENTS.MONTH.desc());
- payments = context.getUtils().queryBeanList(cmd, Payment.class, this);
+ payments = dataRow.getContext().getUtils().queryBeanList(cmd,
Payment.class, this);
}
}
diff --git
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
index 2772a5c..c4f917b 100644
---
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
+++
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
@@ -20,7 +20,6 @@ package org.apache.empire.samples.db.beans;
import java.math.BigDecimal;
-import org.apache.empire.db.DBContext;
import org.apache.empire.db.DBRecordData;
import org.apache.empire.db.list.Bean;
@@ -68,7 +67,7 @@ public class Payment implements Bean
}
@Override
- public void onBeanLoaded(DBContext context, DBRecordData dataRow, int
rownum, Object parent)
+ public void onBeanLoaded(DBRecordData dataRow, int rownum, Object parent)
{
if (parent instanceof Employee)
this.employee = (Employee)parent;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
index 0eba5f7..914d4fc 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
@@ -36,7 +36,6 @@ import org.apache.empire.commons.ClassUtils;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.data.ColumnExpr;
import org.apache.empire.data.DataType;
-import org.apache.empire.db.context.DBContextAware;
import org.apache.empire.db.exceptions.EmpireSQLException;
import org.apache.empire.db.exceptions.QueryNoResultException;
import org.apache.empire.db.expr.join.DBJoinExpr;
@@ -73,7 +72,7 @@ import org.w3c.dom.Element;
*
*
*/
-public class DBReader extends DBRecordData implements DBContextAware, Closeable
+public class DBReader extends DBRecordData implements Closeable
{
// *Deprecated* private static final long serialVersionUID = 1L;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
index e7d37f7..e02f937 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
@@ -37,7 +37,6 @@ import org.apache.empire.data.Column;
import org.apache.empire.data.ColumnExpr;
import org.apache.empire.data.Record;
import org.apache.empire.db.DBRowSet.PartialMode;
-import org.apache.empire.db.context.DBContextAware;
import org.apache.empire.db.context.DBRollbackHandler;
import org.apache.empire.db.exceptions.FieldIsReadOnlyException;
import org.apache.empire.db.exceptions.FieldValueNotFetchedException;
@@ -78,7 +77,7 @@ import org.w3c.dom.Element;
*
* The record is Serializable either if the provided DBContext is
serializable, or if the Context is provided on deserialization in a derived
class.
*/
-public class DBRecord extends DBRecordData implements DBContextAware, Record,
Cloneable, Serializable
+public class DBRecord extends DBRecordData implements Record, Cloneable,
Serializable
{
private static final long serialVersionUID = 1L;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
b/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
index 55aeaec..d2b6865 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
@@ -34,6 +34,7 @@ import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.Column;
import org.apache.empire.data.ColumnExpr;
import org.apache.empire.data.RecordData;
+import org.apache.empire.db.context.DBContextAware;
import org.apache.empire.db.exceptions.FieldIllegalValueException;
import org.apache.empire.exceptions.BeanPropertySetException;
import org.apache.empire.exceptions.InvalidArgumentException;
@@ -52,8 +53,8 @@ import org.w3c.dom.Element;
* The field values are converted to the desired type if possible.
* The field values can be transferred to a classical Java-bean (aka Pojo)
*/
-public abstract class DBRecordData extends DBObject
- implements RecordData
+public abstract class DBRecordData extends DBObject
+ implements DBContextAware, RecordData
{
// *Deprecated* private static final long serialVersionUID = 1L;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
index c64d9cf..27d2c55 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
@@ -982,7 +982,7 @@ public class DBUtils implements DBContextAware
continue;
// post processing
if (item instanceof Bean)
- ((Bean)item).onBeanLoaded(context, r, rownum, parent);
+ ((Bean)item).onBeanLoaded(r, rownum, parent);
// add entry
list.add(item);
// Decrease count
@@ -1061,7 +1061,7 @@ public class DBUtils implements DBContextAware
T item = factory.newItem(-1, r);
// post processing
if (item instanceof Bean)
- ((Bean)item).onBeanLoaded(context, r, -1, null);
+ ((Bean)item).onBeanLoaded(r, -1, null);
// done
return item;
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/list/Bean.java
b/empire-db/src/main/java/org/apache/empire/db/list/Bean.java
index 8d87972..0664c58 100644
--- a/empire-db/src/main/java/org/apache/empire/db/list/Bean.java
+++ b/empire-db/src/main/java/org/apache/empire/db/list/Bean.java
@@ -18,10 +18,9 @@
*/
package org.apache.empire.db.list;
-import org.apache.empire.db.DBContext;
import org.apache.empire.db.DBRecordData;
public interface Bean
{
- void onBeanLoaded(DBContext context, DBRecordData dataRow, int rownum,
Object parent);
+ void onBeanLoaded(DBRecordData dataRow, int rownum, Object parent);
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/list/DBBeanListFactoryImpl.java
b/empire-db/src/main/java/org/apache/empire/db/list/DBBeanListFactoryImpl.java
index 05f20ab..c98c1c5 100644
---
a/empire-db/src/main/java/org/apache/empire/db/list/DBBeanListFactoryImpl.java
+++
b/empire-db/src/main/java/org/apache/empire/db/list/DBBeanListFactoryImpl.java
@@ -81,7 +81,7 @@ public class DBBeanListFactoryImpl<T> implements
DBBeanListFactory<T>
this.constructor = constructor;
this.constructorParams = constructorParams;
// Check constructor
- if (constructor.getParameterCount()>0 && (constructorParams==null ||
constructor.getParameterCount()<constructorParams.size()))
+ if (constructor!=null && constructor.getParameterCount()>0 &&
(constructorParams==null ||
constructor.getParameterCount()<constructorParams.size()))
throw new InvalidArgumentException("constructor", constructor);
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/list/DBRecordListFactoryImpl.java
b/empire-db/src/main/java/org/apache/empire/db/list/DBRecordListFactoryImpl.java
index a0e2b91..a415fa2 100644
---
a/empire-db/src/main/java/org/apache/empire/db/list/DBRecordListFactoryImpl.java
+++
b/empire-db/src/main/java/org/apache/empire/db/list/DBRecordListFactoryImpl.java
@@ -67,8 +67,6 @@ public class DBRecordListFactoryImpl<T extends DBRecord>
implements DBRecordList
*/
protected final Constructor<T> constructor;
protected final DBRowSet rowset;
-
- protected DBContext context;
/**
* Constructs a DBRecordListFactoryImpl based on an DBRecord constructor
@@ -96,8 +94,6 @@ public class DBRecordListFactoryImpl<T extends DBRecord>
implements DBRecordList
@Override
public void prepareQuery(DBCommand cmd, DBContext context)
{
- // set context
- this.context = context;
// complete select
if (cmd.hasSelectExpr())
{ // Already has select expressions.
@@ -118,7 +114,7 @@ public class DBRecordListFactoryImpl<T extends DBRecord>
implements DBRecordList
public T newRecord(int rownum, DBRecordData dataRow)
{ try
{ // create item
- T record = constructor.newInstance(context, rowset);
+ T record = constructor.newInstance(dataRow.getContext(), rowset);
rowset.initRecord(record, dataRow);
return record;
}
@@ -130,8 +126,8 @@ public class DBRecordListFactoryImpl<T extends DBRecord>
implements DBRecordList
@Override
public void completeQuery(List<T> list)
- { // set context
- this.context = null;
+ {
+ /* Nothing */
}
}