looks like tests related to this change are failing on jenkins On Sunday, April 14, 2013, wrote:
> Updated Branches: > refs/heads/master d3e9f1d95 -> cb95e2236 > > > FIXED - TAP5-2101: BeanEditor should always provide a new > BeanValidationContext (JSR-303) > - apply Luca Menegus' patch with minor changes > > > Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo > Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/cb95e223 > Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/cb95e223 > Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/cb95e223 > > Branch: refs/heads/master > Commit: cb95e2236873b497211427e89f96e54282919e19 > Parents: d3e9f1d > Author: kaosko <kao...@apache.org <javascript:;>> > Authored: Sat Apr 13 22:11:33 2013 -0700 > Committer: kaosko <kao...@apache.org <javascript:;>> > Committed: Sat Apr 13 22:11:33 2013 -0700 > > ---------------------------------------------------------------------- > .../TapestryBeanValidationIntegrationTests.java | 14 +++++ > .../org/example/testapp/entities/ComplexBean.java | 44 +++++++++++++++ > .../testapp/entities/SomeOtherSimpleBean.java | 21 +++++++ > .../example/testapp/entities/SomeSimpleBean.java | 21 +++++++ > .../org/example/testapp/pages/ComplexBeanDemo.java | 14 +++++ > .../src/test/webapp/ComplexBeanDemo.tml | 19 ++++++ > tapestry-beanvalidator/src/test/webapp/Index.tml | 3 + > .../tapestry5/corelib/components/BeanEditor.java | 24 ++++---- > 8 files changed, 148 insertions(+), 12 deletions(-) > ---------------------------------------------------------------------- > > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java > ---------------------------------------------------------------------- > diff --git > a/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java > b/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java > index 29b50bf..248c24e 100644 > --- > a/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java > +++ > b/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java > @@ -216,4 +216,18 @@ public class TapestryBeanValidationIntegrationTests > extends SeleniumTestCase > assertTextPresent("Login Name size must be between 7 and 10", > "Login Name must match \"[0-9]+\""); > } > > + @Test > + public void beaneditor_validation() throws Exception > + { > + openLinks("ComplexBean Demo"); > + > + // Test JSR-303 validator > + > + clickAndWait(SUBMIT); > + > + assertTextPresent("Simple Not Null Property may not be null", > + "Min Value must be greater than or equal to 6", "Not Null > String may not be null"); > + } > + > + > } > \ No newline at end of file > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/ComplexBean.java > ---------------------------------------------------------------------- > diff --git > a/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/ComplexBean.java > b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/ComplexBean.java > new file mode 100644 > index 0000000..beaa840 > --- /dev/null > +++ > b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/ComplexBean.java > @@ -0,0 +1,44 @@ > +package org.example.testapp.entities; > + > +import javax.validation.constraints.NotNull; > + > +public class ComplexBean > +{ > + > + private SomeSimpleBean someSimpleBean; > + private SomeOtherSimpleBean someOtherSimpleBean; > + > + @NotNull > + private String simpleNotNullProperty; > + > + public SomeSimpleBean getSomeSimpleBean() > + { > + return someSimpleBean; > + } > + > + public void setSomeSimpleBean(SomeSimpleBean someSimpleBean) > + { > + this.someSimpleBean = someSimpleBean; > + } > + > + public SomeOtherSimpleBean getSomeOtherSimpleBean() > + { > + return someOtherSimpleBean; > + } > + > + public void setSomeOtherSimpleBean(SomeOtherSimpleBean > someOtherSimpleBean) > + { > + this.someOtherSimpleBean = someOtherSimpleBean; > + } > + > + public String getSimpleNotNullProperty() > + { > + return simpleNotNullProperty; > + } > + > + public void setSimpleNotNullProperty(String simpleNotNullProperty) > + { > + this.simpleNotNullProperty = simpleNotNullProperty; > + } > + > +} > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeOtherSimpleBean.java > ---------------------------------------------------------------------- > diff --git > a/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeOtherSimpleBean.java > b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeOtherSimpleBean.java > new file mode 100644 > index 0000000..9a262f3 > --- /dev/null > +++ > b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeOtherSimpleBean.java > @@ -0,0 +1,21 @@ > +package org.example.testapp.entities; > + > +import javax.validation.constraints.NotNull; > + > +public class SomeOtherSimpleBean > +{ > + > + @NotNull > + private String notNullString; > + > + public String getNotNullString() > + { > + return notNullString; > + } > + > + public void setNotNullString(String notNullString) > + { > + this.notNullString = notNullString; > + } > + > +} > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeSimpleBean.java > ---------------------------------------------------------------------- > diff --git > a/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeSimpleBean.java > b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeSimpleBean.java > new file mode 100644 > index 0000000..1564112 > --- /dev/null > +++ > b/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/SomeSimpleBean.java > @@ -0,0 +1,21 @@ > +package org.example.testapp.entities; > + > +import javax.validation.constraints.Min; > + > +public class SomeSimpleBean > +{ > + > + @Min(6) > + private int minValue; > + > + public int getMinValue() > + { > + return minValue; > + } > + > + public void setMinValue(int minValue) > + { > + this.minValue = minValue; > + } > + > +} > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ComplexBeanDemo.java > ---------------------------------------------------------------------- > diff --git > a/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ComplexBeanDemo.java > b/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ComplexBeanDemo.java > new file mode 100644 > index 0000000..f7b2623 > --- /dev/null > +++ > b/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ComplexBeanDemo.java > @@ -0,0 +1,14 @@ > +package org.example.testapp.pages; > + > +import org.apache.tapestry5.annotations.Persist; > +import org.apache.tapestry5.annotations.Property; > +import org.example.testapp.entities.ComplexBean; > + > +public class ComplexBeanDemo > +{ > + > + @Property > + @Persist > + private ComplexBean complexBean; > + > +} > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/webapp/ComplexBeanDemo.tml > ---------------------------------------------------------------------- > diff --git a/tapestry-beanvalidator/src/test/webapp/ComplexBeanDemo.tml > b/tapestry-beanvalidator/src/test/webapp/ComplexBeanDemo.tml > new file mode 100644 > index 0000000..fd20eab > --- /dev/null > +++ b/tapestry-beanvalidator/src/test/webapp/ComplexBeanDemo.tml > @@ -0,0 +1,19 @@ > +<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"> > + <body> > + <t:form clientValidation="none" validate="complexBean"> > + <t:errors/> > + > + <br/> > + <t:BeanEditor object="complexBean" /> > + > + <br/> > + <t:BeanEditor object="complexBean.someSimpleBean" /> > + > + <br/> > + <t:BeanEditor object="complexBean.someOtherSimpleBean" /> > + > + <br/> > + <input type="submit" value="Go"/> > + </t:form> > + </body> > +</html> > \ No newline at end of file > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-beanvalidator/src/test/webapp/Index.tml > ---------------------------------------------------------------------- > diff --git a/tapestry-beanvalidator/src/test/webapp/Index.tml > b/tapestry-beanvalidator/src/test/webapp/Index.tml > index da8978e..0970c96 100644 > --- a/tapestry-beanvalidator/src/test/webapp/Index.tml > +++ b/tapestry-beanvalidator/src/test/webapp/Index.tml > @@ -24,6 +24,9 @@ > <li> > <t:pagelink page="OnPrepareDemo">OnPrepare > Demo</t:pagelink> > </li> > + <li> > + <t:pagelink page="ComplexBeanDemo">ComplexBean > Demo</t:pagelink> > + </li> > </ul> > </body> > </html> > > > http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/cb95e223/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java > ---------------------------------------------------------------------- > diff --git > a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java > b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java > index 1d7ed6c..94c37b9 100644 > --- > a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java > +++ > b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java > @@ -166,6 +166,8 @@ public class BeanEditor > */ > private Object cachedObject; > > + private BeanValidationContext originalBeanValidationContext; > + > // Needed for testing as well > > public Object getObject() > @@ -213,10 +215,6 @@ public class BeanEditor > PlasticUtils.toTypeName(model.getBeanType()), > resources.getCompleteId(), ex); > throw new TapestryException(message, > resources.getLocation(), ex); > } > - > - // If 'object' parameter is bound to a null-value > BeanValidationContext is empty. > - // This prevents JSR-303 javascript validators to be rendered > properly . > - refreshBeanValidationContext(); > } > > BeanEditContext context = new BeanEditContext() > @@ -235,20 +233,22 @@ public class BeanEditor > cachedObject = object; > > environment.push(BeanEditContext.class, context); > + // Always provide a new BeanValidationContext > + originalBeanValidationContext = > environment.push(BeanValidationContext.class, > + new BeanValidationContextImpl(object)); > + > } > > void cleanupEnvironment() > { > environment.pop(BeanEditContext.class); > - } > - > - private void refreshBeanValidationContext() > - { > - if (environment.peek(BeanValidationContext.class) != null) > + environment.pop(BeanValidationContext.class); > + // Restore the original BeanValidationContext as it might still > be useful to the enclosing > + // form > + if (originalBeanValidationContext != null) > { > - environment.pop(BeanValidationContext.class); > - > - environment.push(BeanValidationContext.class, new > BeanValidationContextImpl(object)); > + environment.push(BeanValidationContext.class, > originalBeanValidationContext); > + originalBeanValidationContext = null; > } > } > > > -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com