Repository: zest-java
Updated Branches:
  refs/heads/develop 52d69b6e0 -> d117531c5


ZEST-128 - Trying to improve error reporting in exceptions.


Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/2e5671e3
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/2e5671e3
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/2e5671e3

Branch: refs/heads/develop
Commit: 2e5671e3fd7ac3d7f1b09cf940100da1166e608d
Parents: 73b7f19
Author: Niclas Hedhman <[email protected]>
Authored: Tue Nov 17 19:20:13 2015 +0800
Committer: Niclas Hedhman <[email protected]>
Committed: Tue Nov 17 19:20:13 2015 +0800

----------------------------------------------------------------------
 .../ConcurrentEntityModificationException.java  | 23 ++++++++++++++++----
 .../UnitOfWorkCompletionException.java          |  2 +-
 .../runtime/unitofwork/UnitOfWorkInstance.java  |  8 ++++---
 ...currentEntityStateModificationException.java | 13 +----------
 .../ConcurrentModificationCheckConcern.java     |  4 ----
 .../ConcurrentUoWFileModificationException.java |  3 ++-
 6 files changed, 28 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-java/blob/2e5671e3/core/api/src/main/java/org/apache/zest/api/unitofwork/ConcurrentEntityModificationException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/unitofwork/ConcurrentEntityModificationException.java
 
b/core/api/src/main/java/org/apache/zest/api/unitofwork/ConcurrentEntityModificationException.java
index e494f82..e9656a2 100644
--- 
a/core/api/src/main/java/org/apache/zest/api/unitofwork/ConcurrentEntityModificationException.java
+++ 
b/core/api/src/main/java/org/apache/zest/api/unitofwork/ConcurrentEntityModificationException.java
@@ -14,7 +14,10 @@
 
 package org.apache.zest.api.unitofwork;
 
+import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.zest.api.entity.EntityComposite;
+import org.apache.zest.api.type.HasTypes;
 import org.apache.zest.api.usecase.Usecase;
 
 /**
@@ -26,17 +29,29 @@ public class ConcurrentEntityModificationException
 {
     private static final long serialVersionUID = 3872723845064767689L;
 
-    private final Iterable<EntityComposite> concurrentlyModifiedEntities;
+    private final Map<EntityComposite, HasTypes> concurrentlyModifiedEntities;
 
-    public ConcurrentEntityModificationException( Iterable<EntityComposite> 
concurrentlyModifiedEntities,
+    public ConcurrentEntityModificationException( Map<EntityComposite, 
HasTypes> concurrentlyModifiedEntities,
                                                   Usecase usecase
     )
     {
-        super( "Entities changed concurrently, and detected in usecase '" + 
usecase + "'\nModified entities : " + concurrentlyModifiedEntities );
+        super( "Entities changed concurrently, and detected in usecase '" + 
usecase + "'\nModified entities : " + format( concurrentlyModifiedEntities ) );
         this.concurrentlyModifiedEntities = concurrentlyModifiedEntities;
     }
 
-    public Iterable<EntityComposite> concurrentlyModifiedEntities()
+    private static String format( Map<EntityComposite, HasTypes> 
concurrentlyModifiedEntities )
+    {
+        return concurrentlyModifiedEntities.entrySet().stream()
+            .map( entry ->
+                      entry.getKey()
+                      + " : "
+                      + entry.getValue().types().map( Class::getSimpleName )
+                          .collect( Collectors.joining( "," ) )
+            )
+            .collect( Collectors.joining( "\n" ) );
+    }
+
+    public Map<EntityComposite, HasTypes> concurrentlyModifiedEntities()
     {
         return concurrentlyModifiedEntities;
     }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/2e5671e3/core/api/src/main/java/org/apache/zest/api/unitofwork/UnitOfWorkCompletionException.java
----------------------------------------------------------------------
diff --git 
a/core/api/src/main/java/org/apache/zest/api/unitofwork/UnitOfWorkCompletionException.java
 
b/core/api/src/main/java/org/apache/zest/api/unitofwork/UnitOfWorkCompletionException.java
index 092fc62..b867d26 100644
--- 
a/core/api/src/main/java/org/apache/zest/api/unitofwork/UnitOfWorkCompletionException.java
+++ 
b/core/api/src/main/java/org/apache/zest/api/unitofwork/UnitOfWorkCompletionException.java
@@ -19,7 +19,7 @@ package org.apache.zest.api.unitofwork;
  * fails, this exception will be thrown.
  */
 public class UnitOfWorkCompletionException
-    extends Exception
+    extends RuntimeException
 {
     private static final long serialVersionUID = 6531642131384516904L;
 

http://git-wip-us.apache.org/repos/asf/zest-java/blob/2e5671e3/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
----------------------------------------------------------------------
diff --git 
a/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
 
b/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
index e9ea72c..fc0810b 100755
--- 
a/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
+++ 
b/core/runtime/src/main/java/org/apache/zest/runtime/unitofwork/UnitOfWorkInstance.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Stack;
 import java.util.concurrent.TimeUnit;
 import org.apache.zest.api.common.MetaInfo;
@@ -32,6 +33,7 @@ import org.apache.zest.api.metrics.MetricsCounterFactory;
 import org.apache.zest.api.metrics.MetricsProvider;
 import org.apache.zest.api.metrics.MetricsTimer;
 import org.apache.zest.api.metrics.MetricsTimerFactory;
+import org.apache.zest.api.type.HasTypes;
 import org.apache.zest.api.unitofwork.ConcurrentEntityModificationException;
 import org.apache.zest.api.unitofwork.EntityTypeNotFoundException;
 import org.apache.zest.api.unitofwork.NoSuchEntityException;
@@ -364,14 +366,14 @@ public final class UnitOfWorkInstance
                     // If we cancelled due to concurrent modification, then 
create the proper exception for it!
                     ConcurrentEntityStateModificationException mee = 
(ConcurrentEntityStateModificationException) e;
                     Collection<EntityReference> modifiedEntityIdentities = 
mee.modifiedEntities();
-                    Collection<EntityComposite> modifiedEntities = new 
ArrayList<>();
+                    Map<EntityComposite, HasTypes> modifiedEntities = new 
HashMap<>();
                     for( EntityReference modifiedEntityIdentity : 
modifiedEntityIdentities )
                     {
                         instanceCache.values().stream()
                             .filter( instance -> instance.identity().equals( 
modifiedEntityIdentity ) )
-                            .forEach( instance -> modifiedEntities.add( 
instance.<EntityComposite>proxy() ) );
+                            .forEach( instance -> modifiedEntities.put( 
instance.<EntityComposite>proxy(), instance ) );
                     }
-                    throw new ConcurrentEntityModificationException( 
modifiedEntities, ( (ConcurrentEntityStateModificationException) e 
).getUsecase() );
+                    throw new ConcurrentEntityModificationException( 
modifiedEntities, usecase );
                 }
                 else
                 {

http://git-wip-us.apache.org/repos/asf/zest-java/blob/2e5671e3/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentEntityStateModificationException.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentEntityStateModificationException.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentEntityStateModificationException.java
index b6716ed..dd08ff3 100644
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentEntityStateModificationException.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentEntityStateModificationException.java
@@ -28,7 +28,6 @@ public class ConcurrentEntityStateModificationException
     extends EntityStoreException
 {
     private Collection<EntityReference> modifiedEntities;
-    private Usecase usecase;
 
     public ConcurrentEntityStateModificationException( 
Collection<EntityReference> modifiedEntities )
     {
@@ -44,16 +43,6 @@ public class ConcurrentEntityStateModificationException
     @Override
     public String getMessage()
     {
-        return "Entities changed concurrently. Changes detected in usecase '" 
+ usecase + "\nModified entities are;\n" + modifiedEntities;
-    }
-
-    public Usecase getUsecase()
-    {
-        return usecase;
-    }
-
-    public void setUsecase( Usecase usecase )
-    {
-        this.usecase = usecase;
+        return "Entities changed concurrently.\nModified entities are;\n" + 
modifiedEntities;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-java/blob/2e5671e3/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
----------------------------------------------------------------------
diff --git 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
index 5ed5f91..9e85c83 100755
--- 
a/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
+++ 
b/core/spi/src/main/java/org/apache/zest/spi/entitystore/ConcurrentModificationCheckConcern.java
@@ -131,10 +131,6 @@ public abstract class ConcurrentModificationCheckConcern
             catch( EntityStoreException e )
             {
                 lock.writeLock().unlock();
-                if( e instanceof ConcurrentEntityStateModificationException )
-                {
-                    ((ConcurrentEntityStateModificationException) 
e).setUsecase( usecase() );
-                }
                 throw e;
             }
         }

http://git-wip-us.apache.org/repos/asf/zest-java/blob/2e5671e3/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/ConcurrentUoWFileModificationException.java
----------------------------------------------------------------------
diff --git 
a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/ConcurrentUoWFileModificationException.java
 
b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/ConcurrentUoWFileModificationException.java
index c1d8fe6..d91fabf 100644
--- 
a/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/ConcurrentUoWFileModificationException.java
+++ 
b/libraries/uowfile/src/main/java/org/apache/zest/library/uowfile/internal/ConcurrentUoWFileModificationException.java
@@ -19,6 +19,7 @@ package org.apache.zest.library.uowfile.internal;
 
 import java.util.Collections;
 import org.apache.zest.api.entity.EntityComposite;
+import org.apache.zest.api.type.HasTypes;
 import org.apache.zest.api.unitofwork.ConcurrentEntityModificationException;
 import org.apache.zest.api.usecase.Usecase;
 
@@ -29,7 +30,7 @@ public class ConcurrentUoWFileModificationException
 
     ConcurrentUoWFileModificationException( Iterable<UoWFile> 
concurrentlyModifiedFiles, Usecase usecase )
     {
-        super( Collections.<EntityComposite>emptyList(), usecase );
+        super( Collections.<EntityComposite,HasTypes>emptyMap(), usecase );
         this.concurrentlyModifiedFiles = concurrentlyModifiedFiles;
     }
 

Reply via email to