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 */
     }
     
 }

Reply via email to