ListPageElement fix for invertSelection
diff --git a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/pageelements/ListPageElement.java b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/pageelements/ListPageElement.java
index 87be305..8e1e50d 100644
--- a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/pageelements/ListPageElement.java
+++ b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/pageelements/ListPageElement.java
@@ -19,6 +19,7 @@
 package org.apache.empire.jakarta.pageelements;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
@@ -95,11 +96,28 @@
         @Override
         public boolean add(Object[] e)
         {
+            if (!singleSelection && isInvertSelection()) 
+            {   // invert
+                if (this.contains(e))
+                    put(e);
+                return true;
+            }
+            // normal
             if (singleSelection)
                 return false;
             return super.add(e);
         }
 
+        public void put(Object[] key)
+        {
+            fastAdd(key);
+        }
+
+        public void putAll(Collection<Object[]> list)
+        {
+            addAll(list);
+        }
+
         @Override
         public boolean remove(Object o)
         {
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java
index 76ee7f8..3a2ea31 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java
@@ -19,6 +19,7 @@
 package org.apache.empire.jsf2.pageelements;

 

 import java.util.ArrayList;

+import java.util.Collection;

 import java.util.List;

 import java.util.Set;

 

@@ -95,11 +96,28 @@
         @Override

         public boolean add(Object[] e)

         {

+            if (!singleSelection && isInvertSelection()) 

+            {   // invert

+                if (this.contains(e))

+                    put(e);

+                return true;

+            }

+            // normal

             if (singleSelection)

                 return false;

             return super.add(e);

         }

 

+        public void put(Object[] key)

+        {

+            fastAdd(key);

+        }

+

+        public void putAll(Collection<Object[]> list)

+        {

+            addAll(list);

+        }

+

         @Override

         public boolean remove(Object o)

         {