You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jo...@apache.org on 2011/08/22 06:43:51 UTC
svn commit: r1160105 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
Author: joshcanfield
Date: Mon Aug 22 04:43:51 2011
New Revision: 1160105
URL: http://svn.apache.org/viewvc?rev=1160105&view=rev
Log:
TAP5-1613 - Mixin inherited from parent model does not inherit order
MutableComponentModelImpl returned parent mixins, but did not return the ordering for them.
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java?rev=1160105&r1=1160104&r2=1160105&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java Mon Aug 22 04:43:51 2011
@@ -365,7 +365,12 @@ public final class MutableComponentModel
public String[] getOrderForMixin(String mixinClassName)
{
- return InternalUtils.get(mixinOrders, mixinClassName);
+ final String[] orders = InternalUtils.get(mixinOrders, mixinClassName);
+
+ if ( orders == null && parentModel != null )
+ return parentModel.getOrderForMixin(mixinClassName);
+
+ return orders;
}
public boolean isPage()
Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java?rev=1160105&r1=1160104&r2=1160105&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java Mon Aug 22 04:43:51 2011
@@ -403,6 +403,28 @@ public class MutableComponentModelImplTe
}
@Test
+ public void mixin_order_remembered()
+ {
+ Resource r = mockResource();
+ Logger logger = mockLogger();
+
+ replay();
+
+ MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null, false);
+
+ MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false,
+ null);
+
+ fred.addMixin("zip.zop.Zoom", "before:*", "after:foo.bar.Baz");
+ fred.addMixin("foo.bar.Baz");
+
+ assertEquals(fred.getConstraintsForMixin("zip.zop.Zoom"), new String[] {"before:*", "after:foo.bar.Baz"});
+ assertEquals(fred.getConstraintsForMixin("foo.bar.Baz"), new String[0]);
+
+ verify();
+ }
+
+ @Test
public void mixin_name_conflict()
{
Resource r = mockResource();
@@ -627,6 +649,55 @@ public class MutableComponentModelImplTe
}
@Test
+ public void get_order_for_mixin_with_parent_model()
+ {
+ Resource r = mockResource();
+ Logger logger = mockLogger();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null, false);
+
+ parent.addMixinClassName("Wilma", "before:Fred");
+
+ MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent, false);
+
+ child.addMixinClassName("Fred", "after:Barney");
+ child.addMixinClassName("Barney");
+
+ assertEquals(child.getOrderForMixin("Wilma"), new String[] {"before:Fred"});
+ assertEquals(child.getOrderForMixin("Fred"), new String[] {"after:Barney"});
+ assertEquals(child.getOrderForMixin("Barney"), null);
+
+ verify();
+ }
+
+ @Test
+ public void get_order_for_mixin_with_collision_in_parent_model()
+ {
+ Resource r = mockResource();
+ Logger logger = mockLogger();
+
+ replay();
+
+ MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null, false);
+
+ parent.addMixinClassName("Wilma", "before:Fred");
+
+ MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent, false);
+
+ child.addMixinClassName("Wilma", "before:*");
+ child.addMixinClassName("Fred", "after:Barney");
+ child.addMixinClassName("Barney");
+
+ assertEquals(child.getOrderForMixin("Wilma"), new String[] {"before:*"});
+ assertEquals(child.getOrderForMixin("Fred"), new String[] {"after:Barney"});
+ assertEquals(child.getOrderForMixin("Barney"), null);
+
+ verify();
+ }
+
+ @Test
public void get_parent_from_subclass()
{
Resource r = mockResource();