This is going to be lovely with JSR-356 not being finalized yet and 
vendor-specific implementations...

Uli

On 16.04.2013 14:46, Massimo Lusetti wrote:
> Cometd will be backed up by WebSocket right?
> 
> 
> On Tue, Apr 16, 2013 at 12:47 PM, Howard Lewis Ship <hls...@gmail.com>wrote:
> 
>> Thanks!
>>
>> I wanted a nice clean build before I started in on adding cometd support.
>>  I have some exciting ideas that leverage options made available through
>> Plastic.
>>
>>
>> On Tue, Apr 16, 2013 at 4:44 AM, Kalle Korhonen
>> <kalle.o.korho...@gmail.com>wrote:
>>
>>> 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
>>>>
>>>
>>
>>
>>
>> --
>> 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
>>
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to