tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Howard Lewis Ship <hls...@gmail.com>
Subject Re: git commit: FIXED - TAP5-2101: BeanEditor should always provide a new BeanValidationContext (JSR-303) - apply Luca Menegus' patch with minor changes
Date Tue, 16 Apr 2013 02:51:29 GMT
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 <kaosko@apache.org <javascript:;>>
> Authored: Sat Apr 13 22:11:33 2013 -0700
> Committer: kaosko <kaosko@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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message