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 cd75759  EMPIREDB-362 bugfix
cd75759 is described below

commit cd75759ad0dd10f948d045cc8288bead139a00f6
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Feb 7 11:03:15 2022 +0100

    EMPIREDB-362 bugfix
---
 .../org/apache/empire/jsf2/app/WebDBContext.java    |  4 +---
 .../src/main/java/org/apache/empire/db/DBQuery.java |  9 +--------
 .../main/java/org/apache/empire/db/DBRowSet.java    | 21 +++++++++++++++++++--
 3 files changed, 21 insertions(+), 13 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
index 63bb0ed..8013ebc 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
@@ -99,8 +99,7 @@ public class WebDBContext<DB extends DBDatabase> extends 
DBContextBase implement
     }
 
     /**
-     * Unclear weather this is any useful
-     * Do not call, as the connections are managed by the Application
+     * Unclear weather this is any useful here
      */
     @Override
     public void discard()
@@ -111,7 +110,6 @@ public class WebDBContext<DB extends DBDatabase> extends 
DBContextBase implement
         // discard
         super.discard();
         */
-        throw new NotSupportedException(this, "discard");
     }
 
     @Override
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java 
b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
index 1fc514d..4107318 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
@@ -403,14 +403,7 @@ public class DBQuery extends DBRowSet
             cmd.where(keyColumns[i].is(value));
         }    
         // Read Record
-        try {
-            // Read Record
-            readRecord(record, cmd);
-            // setRowsetData(rec, key.clone()); /* not required */
-        } catch (QueryNoResultException e) {
-            // Record not found
-            throw new RecordNotFoundException(this, key);
-        }
+        readRecord(record, cmd);
     }
 
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java 
b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index ad443dc..3fac2fa 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -45,6 +45,7 @@ import 
org.apache.empire.db.exceptions.RecordNotFoundException;
 import org.apache.empire.db.exceptions.RecordUpdateFailedException;
 import org.apache.empire.db.exceptions.RecordUpdateInvalidException;
 import org.apache.empire.db.expr.column.DBCountExpr;
+import org.apache.empire.db.expr.compare.DBCompareColExpr;
 import org.apache.empire.db.expr.compare.DBCompareExpr;
 import org.apache.empire.db.list.DBBeanFactoryCache;
 import org.apache.empire.db.list.DBBeanListFactory;
@@ -756,8 +757,24 @@ public abstract class DBRowSet extends DBExpr implements 
Entity
             reader.getRecordData(cmd);
             initRecord(record, reader);
         } catch (QueryNoResultException e) {
-            // Translate exception
-            Object[] key = ((getKeyColumns()!=null) ? record.getKey() : null);
+            // extract key from command 
+            Object key[] = cmd.getParamValues();
+            if (key==null)
+            {   // extract key from where clause
+                List<DBCompareExpr> where = cmd.getWhereConstraints();
+                key = new Object[where.size()];
+                int i=0;
+                for (DBCompareExpr expr : where)
+                {   // get value of compare expr
+                    if (expr instanceof DBCompareColExpr)
+                        key[i] = ((DBCompareColExpr)expr).getValue();
+                    else
+                        key[i] = "?"; // unknown
+                    i++;
+                }
+            }
+            log.warn("Record [{}] not found in {}", StringUtils.toString(key, 
cmd.getSelect()), getName());
+            // throw RecordNotFoundException
             throw new RecordNotFoundException(this, key);
         } finally {
             reader.close();

Reply via email to