Author: toad
Date: 2009-03-13 14:10:17 +0000 (Fri, 13 Mar 2009)
New Revision: 26017

Added:
   branches/db4o/freenet/src/freenet/client/async/Db4oBugs.java
Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
Workaround a bug in db4o 7.4.84.12673


Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2009-03-13 13:33:21 UTC (rev 26016)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2009-03-13 14:10:17 UTC (rev 26017)
@@ -142,7 +142,7 @@
        
        public static void loadKeyListeners(final ObjectContainer container, 
ClientContext context) {
                ObjectSet<HasKeyListener> results =
-                       container.query(HasKeyListener.class);
+                       Db4oBugs.query(container, HasKeyListener.class);
                for(HasKeyListener l : results) {
                        container.activate(l, 1);
                        try {

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2009-03-13 13:33:21 UTC (rev 26016)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2009-03-13 14:10:17 UTC (rev 26017)
@@ -235,8 +235,7 @@
        }
        
        private void loadKeyListeners(final ObjectContainer container, 
ClientContext context) {
-               ObjectSet<HasKeyListener> results =
-                       container.query(HasKeyListener.class);
+               ObjectSet<HasKeyListener> results = Db4oBugs.query(container, 
HasKeyListener.class);
                for(HasKeyListener l : results) {
                        container.activate(l, 1);
                        try {

Added: branches/db4o/freenet/src/freenet/client/async/Db4oBugs.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/Db4oBugs.java                
                (rev 0)
+++ branches/db4o/freenet/src/freenet/client/async/Db4oBugs.java        
2009-03-13 14:10:17 UTC (rev 26017)
@@ -0,0 +1,20 @@
+package freenet.client.async;
+
+import com.db4o.ObjectContainer;
+import com.db4o.ObjectSet;
+import com.db4o.query.Query;
+
+/** A collection of bug workarounds for everyone's favourite object database! 
*/
+public class Db4oBugs {
+
+       public static<T extends Object> ObjectSet<T> query(ObjectContainer 
container, Class<T> clazz) {
+               // db4o 7.4.84.12673 throws a RuntimeException: Not supported
+               // when we use this documented API to query all elements of a 
class. Isn't that great? :(
+//             ObjectSet<HasKeyListener> results =
+//                     container.query(HasKeyListener.class);
+               Query query = container.query();
+               query.constrain(HasKeyListener.class);
+               return query.execute();
+       }
+
+}

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to