On it.. meant to take a look at the test failures anyway. Kalle
On Mon, Apr 15, 2013 at 7:51 PM, Howard Lewis Ship <hls...@gmail.com> wrote: > 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 >