Implemented visitor-exception pattern
diff --git a/extensions/entitystore-coherence/qi4j-entitystore-coherence.iml b/extensions/entitystore-coherence/qi4j-entitystore-coherence.iml
deleted file mode 100644
index 6b59e3d..0000000
--- a/extensions/entitystore-coherence/qi4j-entitystore-coherence.iml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module MavenProjectsManager.isMavenModule="true" org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" relativePaths="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" exported="" name="Maven: org.qi4j.core:qi4j-core-spi:1.0-RC3-SNAPSHOT" level="project" />
-    <orderEntry type="library" exported="" name="Maven: org.qi4j.core:qi4j-core-api:1.0-RC3-SNAPSHOT" level="project" />
-    <orderEntry type="library" exported="" name="Maven: org.qi4j.core:qi4j-core-bootstrap:1.0-RC3-SNAPSHOT" level="project" />
-    <orderEntry type="library" exported="" name="Maven: org.qi4j.library:qi4j-lib-locking:1.0-RC3-SNAPSHOT" level="project" />
-    <orderEntry type="library" exported="" name="Maven: com.tangosol:coherence:3.5.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.qi4j.core:qi4j-core-testsupport:1.0-RC3-SNAPSHOT" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.5" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.qi4j.core:qi4j-core-runtime:1.0-RC3-SNAPSHOT" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: cglib:cglib-nodep:2.1_3" level="project" />
-  </component>
-</module>
-
diff --git a/extensions/entitystore-javaspaces/src/main/java/org/qi4j/entitystore/javaspaces/JavaSpacesEntityStoreMixin.java b/extensions/entitystore-javaspaces/src/main/java/org/qi4j/entitystore/javaspaces/JavaSpacesEntityStoreMixin.java
index 3199143..9b8ff39 100644
--- a/extensions/entitystore-javaspaces/src/main/java/org/qi4j/entitystore/javaspaces/JavaSpacesEntityStoreMixin.java
+++ b/extensions/entitystore-javaspaces/src/main/java/org/qi4j/entitystore/javaspaces/JavaSpacesEntityStoreMixin.java
@@ -50,7 +50,8 @@
         return new StringReader( jsonData );
     }
 
-    public void visitMap( MapEntityStoreVisitor visitor )
+    public <ThrowableType extends Exception> void visitMap( MapEntityStoreVisitor<ThrowableType> visitor )
+        throws ThrowableType
     {
         for( String json : space )
         {
diff --git a/extensions/entitystore-jgroups/src/main/java/org/qi4j/entitystore/jgroups/JGroupsEntityStoreMixin.java b/extensions/entitystore-jgroups/src/main/java/org/qi4j/entitystore/jgroups/JGroupsEntityStoreMixin.java
index fe9cfbd..87bd771 100644
--- a/extensions/entitystore-jgroups/src/main/java/org/qi4j/entitystore/jgroups/JGroupsEntityStoreMixin.java
+++ b/extensions/entitystore-jgroups/src/main/java/org/qi4j/entitystore/jgroups/JGroupsEntityStoreMixin.java
@@ -72,18 +72,12 @@
         }
     }
 
-    public void visitMap( MapEntityStoreVisitor visitor )
+    public <ThrowableType extends Exception> void visitMap( MapEntityStoreVisitor<ThrowableType> visitor )
+        throws ThrowableType
     {
-        try
+        for( Map.Entry<String, String> key : replicatedMap.entrySet() )
         {
-            for( Map.Entry<String, String> key : replicatedMap.entrySet() )
-            {
-                visitor.visitEntity( new StringReader( key.getValue() ) );
-            }
-        }
-        catch( RuntimeException e )
-        {
-            throw new EntityStoreException( e );
+            visitor.visitEntity( new StringReader( key.getValue() ) );
         }
     }
 
diff --git a/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/DataStore.java b/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/DataStore.java
index 2b5237d..efb9ae1 100644
--- a/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/DataStore.java
+++ b/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/DataStore.java
@@ -387,7 +387,8 @@
         }
     }
 
-    public void visitMap( MapEntityStore.MapEntityStoreVisitor visitor )
+    public <ThrowableType extends Exception> void visitMap( MapEntityStore.MapEntityStoreVisitor<ThrowableType> visitor )
+        throws ThrowableType
     {
         try
         {
diff --git a/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/RecordManager.java b/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/RecordManager.java
index 0c42133..e17c8dd 100644
--- a/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/RecordManager.java
+++ b/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/RecordManager.java
@@ -188,7 +188,8 @@
         }
     }
 
-    public void visitMap( MapEntityStore.MapEntityStoreVisitor visitor )
+    public <ThrowableType extends Exception> void visitMap( MapEntityStore.MapEntityStoreVisitor<ThrowableType> visitor )
+        throws ThrowableType
     {
         dataStore.visitMap( visitor );
     }
diff --git a/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/SwiftEntityStoreMixin.java b/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/SwiftEntityStoreMixin.java
index 0f2cf55..5c783ef 100644
--- a/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/SwiftEntityStoreMixin.java
+++ b/extensions/entitystore-swift/src/main/java/org/qi4j/entitystore/swift/SwiftEntityStoreMixin.java
@@ -89,7 +89,8 @@
         }
     }
 
-    public void visitMap( MapEntityStoreVisitor visitor )
+    public <ThrowableType extends Exception> void visitMap( MapEntityStoreVisitor<ThrowableType> visitor )
+        throws ThrowableType
     {
         recordManager.visitMap( visitor );
     }
diff --git a/libraries/jini/lookup/src/test/java/org/qi4j/library/jini/lookup/ReggieStartTest.java b/libraries/jini/lookup/src/test/java/org/qi4j/library/jini/lookup/ReggieStartTest.java
index d2f3922..5444ead 100644
--- a/libraries/jini/lookup/src/test/java/org/qi4j/library/jini/lookup/ReggieStartTest.java
+++ b/libraries/jini/lookup/src/test/java/org/qi4j/library/jini/lookup/ReggieStartTest.java
@@ -85,10 +85,13 @@
         {
             if( !listener.added )
             {
-                wait( 5000 );
+                wait( 25000 );
             }
         }
-        assertTrue( listener.added );
+        synchronized( listener )
+        {
+            assertTrue( listener.added );
+        }
     }
 
 
diff --git a/libraries/jini/transaction/src/test/java/org/qi4j/library/jini/transaction/MahaloStartTest.java b/libraries/jini/transaction/src/test/java/org/qi4j/library/jini/transaction/MahaloStartTest.java
index 8831934..6420385 100644
--- a/libraries/jini/transaction/src/test/java/org/qi4j/library/jini/transaction/MahaloStartTest.java
+++ b/libraries/jini/transaction/src/test/java/org/qi4j/library/jini/transaction/MahaloStartTest.java
@@ -88,10 +88,13 @@
         {
             if( !listener.added )
             {
-                wait( 15000 );
+                wait( 25000 );
             }
         }
-        assertTrue( listener.added );
+        synchronized( listener )
+        {
+            assertTrue( listener.added );
+        }
     }