You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2015/04/17 18:05:53 UTC

[33/50] [abbrv] zest-qi4j git commit: Core Runtime: Fix Association and ManyAssociation equality

Core Runtime: Fix Association and ManyAssociation equality

Associations and ManyAssociations using *Wrappers were not unwrapper.
This commit fixes that.


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/5b513e0f
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/5b513e0f
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/5b513e0f

Branch: refs/heads/master
Commit: 5b513e0fc9db78f23a434b4c8b27fc4c0b0b3110
Parents: ff99cbd
Author: Paul Merlin <pa...@nosphere.org>
Authored: Wed Feb 20 10:21:01 2013 +0100
Committer: Paul Merlin <pa...@nosphere.org>
Committed: Wed Feb 20 10:21:01 2013 +0100

----------------------------------------------------------------------
 .../runtime/association/AssociationInstance.java     | 15 +++++++++++----
 .../runtime/association/ManyAssociationInstance.java | 15 +++++++++++----
 .../org/qi4j/runtime/property/PropertyInstance.java  |  2 +-
 3 files changed, 23 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/5b513e0f/core/runtime/src/main/java/org/qi4j/runtime/association/AssociationInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/association/AssociationInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/association/AssociationInstance.java
index d94aae2..d5babcd 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/association/AssociationInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/association/AssociationInstance.java
@@ -17,6 +17,7 @@ package org.qi4j.runtime.association;
 import java.lang.reflect.Type;
 import org.qi4j.api.association.Association;
 import org.qi4j.api.association.AssociationDescriptor;
+import org.qi4j.api.association.AssociationWrapper;
 import org.qi4j.api.entity.EntityReference;
 import org.qi4j.api.property.Property;
 import org.qi4j.functional.Function2;
@@ -99,17 +100,23 @@ public final class AssociationInstance<T>
         {
             return false;
         }
-        AssociationInstance<?> that = (AssociationInstance) o;
-        AssociationDescriptor thatDescriptor = (AssociationDescriptor) that.associationInfo();
+        Association<?> that = (Association) o;
+        // Unwrap if needed
+        while( that instanceof AssociationWrapper )
+        {
+            that = ( (AssociationWrapper) that ).next();
+        }
         // Descriptor equality
+        AssociationInstance<?> thatInstance = (AssociationInstance) that;
+        AssociationDescriptor thatDescriptor = (AssociationDescriptor) thatInstance.associationInfo();
         if( !associationInfo.equals( thatDescriptor ) )
         {
             return false;
         }
         // State equality
         if( associationState.get() != null
-            ? !associationState.get().equals( that.associationState.get() )
-            : that.associationState.get() != null )
+            ? !associationState.get().equals( thatInstance.associationState.get() )
+            : thatInstance.associationState.get() != null )
         {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/5b513e0f/core/runtime/src/main/java/org/qi4j/runtime/association/ManyAssociationInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/association/ManyAssociationInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/association/ManyAssociationInstance.java
index ad5a734..a946862 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/association/ManyAssociationInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/association/ManyAssociationInstance.java
@@ -8,6 +8,7 @@ import java.util.List;
 import java.util.Set;
 import org.qi4j.api.association.AssociationDescriptor;
 import org.qi4j.api.association.ManyAssociation;
+import org.qi4j.api.association.ManyAssociationWrapper;
 import org.qi4j.api.entity.EntityReference;
 import org.qi4j.functional.Function2;
 import org.qi4j.runtime.composite.ConstraintsCheck;
@@ -120,21 +121,27 @@ public class ManyAssociationInstance<T>
         {
             return false;
         }
-        ManyAssociationInstance<?> that = (ManyAssociationInstance) o;
-        AssociationDescriptor thatDescriptor = (AssociationDescriptor) that.associationInfo();
+        ManyAssociation<?> that = (ManyAssociation) o;
+        // Unwrap if needed
+        while( that instanceof ManyAssociationWrapper )
+        {
+            that = ( (ManyAssociationWrapper) that ).next();
+        }
         // Descriptor equality
+        ManyAssociationInstance<?> thatInstance = (ManyAssociationInstance) that;
+        AssociationDescriptor thatDescriptor = (AssociationDescriptor) thatInstance.associationInfo();
         if( !associationInfo.equals( thatDescriptor ) )
         {
             return false;
         }
         // State equality
-        if( manyAssociationState.count() != that.manyAssociationState.count() )
+        if( manyAssociationState.count() != thatInstance.manyAssociationState.count() )
         {
             return false;
         }
         for( EntityReference ref : manyAssociationState )
         {
-            if( !that.manyAssociationState.contains( ref ) )
+            if( !thatInstance.manyAssociationState.contains( ref ) )
             {
                 return false;
             }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/5b513e0f/core/runtime/src/main/java/org/qi4j/runtime/property/PropertyInstance.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/qi4j/runtime/property/PropertyInstance.java b/core/runtime/src/main/java/org/qi4j/runtime/property/PropertyInstance.java
index 75bda37..499fec4 100644
--- a/core/runtime/src/main/java/org/qi4j/runtime/property/PropertyInstance.java
+++ b/core/runtime/src/main/java/org/qi4j/runtime/property/PropertyInstance.java
@@ -122,8 +122,8 @@ public class PropertyInstance<T>
         {
             that = ( (PropertyWrapper) that ).next();
         }
-        PropertyDescriptor thatDescriptor = (PropertyDescriptor) ( (PropertyInstance) that ).propertyInfo();
         // Descriptor equality
+        PropertyDescriptor thatDescriptor = (PropertyDescriptor) ( (PropertyInstance) that ).propertyInfo();
         if( !model.equals( thatDescriptor ) )
         {
             return false;