You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2009/11/07 05:56:58 UTC
svn commit: r833627 - in /myfaces/extensions/validator/trunk: test-modules/
test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/
test-modules/bean-validation-tests/ test-modules/bean-validation-tests/sr...
Author: gpetracek
Date: Sat Nov 7 04:56:57 2009
New Revision: 833627
URL: http://svn.apache.org/viewvc?rev=833627&view=rev
Log:
EXTVAL-30 and refactored exception handling (bv integration)
Added:
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/BaseBeanValPropertyValidationTestCase.java
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/DefaultGroupTestCase.java
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/LabelReplacementTestCase.java
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/model/
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/model/TestCase1Bean.java
Modified:
myfaces/extensions/validator/trunk/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java
myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/pom.xml
myfaces/extensions/validator/trunk/test-modules/pom.xml
myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java
myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/CrossValTestCase.java
myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/ELCrossValTestCase.java
myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/PropertyChainCrossValTestCase.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
Modified: myfaces/extensions/validator/trunk/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java (original)
+++ myfaces/extensions/validator/trunk/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java Sat Nov 7 04:56:57 2009
@@ -40,6 +40,7 @@
import javax.faces.FactoryFinder;
import javax.faces.el.ValueBinding;
import javax.faces.application.ApplicationFactory;
+import javax.faces.application.FacesMessage;
import javax.faces.component.UIViewRoot;
import javax.faces.component.UIInput;
import javax.el.ValueExpression;
@@ -229,26 +230,41 @@
protected void checkMessageCount(int expected)
{
- int actual = 0;
+ int i = 0;
for(Iterator messages = facesContext.getMessages(); messages.hasNext();)
{
messages.next();
- actual++;
+ i++;
}
- assertEquals("Complete message count", expected, actual);
+ assertEquals("Complete message count", expected, i);
}
protected void checkMessageCount(String clientId, int expected)
{
- int actual = 0;
+ int i = 0;
for(Iterator messages = facesContext.getMessages(clientId); messages.hasNext();)
{
messages.next();
- actual++;
+ i++;
}
- assertEquals("Complete message count", expected, actual);
+ assertEquals("Complete message count", expected, i);
+ }
+
+ protected void checkMessageSeverities(FacesMessage.Severity... severities)
+ {
+ int i = 0;
+ for(Iterator messages = facesContext.getMessages(); messages.hasNext();)
+ {
+ assertEquals(severities[i], ((FacesMessage)messages.next()).getSeverity());
+ i++;
+ }
+ }
+
+ protected void assertNavigationBlocked(boolean isBlocked)
+ {
+ assertEquals(isBlocked, this.facesContext.getRenderResponse());
}
/**
Modified: myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/pom.xml?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/pom.xml (original)
+++ myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/pom.xml Sat Nov 7 04:56:57 2009
@@ -30,8 +30,8 @@
<version>1.2.3-SNAPSHOT</version>
<parent>
- <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
- <artifactId>validation-modules-project</artifactId>
+ <groupId>org.apache.myfaces.extensions.validator.test-modules</groupId>
+ <artifactId>test-modules-project</artifactId>
<version>1.2.3-SNAPSHOT</version>
</parent>
@@ -40,7 +40,7 @@
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
- <scope>compile</scope>
+ <scope>test</scope>
</dependency>
<dependency>
@@ -63,7 +63,7 @@
<groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
<artifactId>myfaces-extval-bean-validation</artifactId>
<version>1.2.3-SNAPSHOT</version>
- <scope>compile</scope>
+ <scope>test</scope>
</dependency>
<dependency>
Added: myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java?rev=833627&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java (added)
+++ myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java Sat Nov 7 04:56:57 2009
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.test.beanval;
+
+import org.apache.myfaces.extensions.validator.test.base.AbstractExValTestCase;
+import org.apache.myfaces.extensions.validator.beanval.startup.BeanValidationStartupListener;
+import org.apache.myfaces.extensions.validator.beanval.validation.ModelValidationPhaseListener;
+
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+
+public class AbstractBeanValidationTestCase extends AbstractExValTestCase
+{
+ public AbstractBeanValidationTestCase(String name)
+ {
+ super(name);
+ }
+
+ protected void invokeStartupListeners()
+ {
+ new BeanValidationStartupListener() {
+
+ private static final long serialVersionUID = -3124182355444754497L;
+
+ @Override
+ protected void init()
+ {
+ super.init();
+ }
+ }.init();
+ }
+
+ protected void processModelValidation()
+ {
+ new ModelValidationPhaseListener().afterPhase(new PhaseEvent(facesContext, PhaseId.UPDATE_MODEL_VALUES, lifecycle));
+ }
+}
Added: myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/BaseBeanValPropertyValidationTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/BaseBeanValPropertyValidationTestCase.java?rev=833627&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/BaseBeanValPropertyValidationTestCase.java (added)
+++ myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/BaseBeanValPropertyValidationTestCase.java Sat Nov 7 04:56:57 2009
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.test.beanval;
+
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.UIInput;
+import javax.faces.el.ValueBinding;
+
+public abstract class BaseBeanValPropertyValidationTestCase<T> extends AbstractBeanValidationTestCase
+{
+ public BaseBeanValPropertyValidationTestCase(String name)
+ {
+ super(name);
+ inputComponent1 = null;
+ inputComponent2 = null;
+ inputComponent3 = null;
+ rootComponent = null;
+ bean = null;
+ }
+
+ protected HtmlInputText inputComponent1 = null;
+ protected HtmlInputText inputComponent2 = null;
+ protected HtmlInputText inputComponent3 = null;
+
+ private UIViewRoot rootComponent = null;
+
+ protected T bean;
+
+ @SuppressWarnings({"UnusedDeclaration"})
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ bean = getBeanToTest();
+ bindBeanToExpression();
+
+ createComponents();
+ }
+
+ private void createComponents()
+ {
+ rootComponent = new UIViewRoot();
+ HtmlForm form = new HtmlForm();
+ form.setId("form");
+ rootComponent.getChildren().add(form);
+ inputComponent1 = new HtmlInputText();
+ inputComponent2 = new HtmlInputText();
+ inputComponent3 = new HtmlInputText();
+ form.getChildren().add(inputComponent1);
+ form.getChildren().add(inputComponent2);
+ form.getChildren().add(inputComponent3);
+ inputComponent1.setId("input1");
+ inputComponent2.setId("input2");
+ inputComponent3.setId("input3");
+ }
+
+ @SuppressWarnings({"UnusedDeclaration"})
+ private void bindBeanToExpression()
+ {
+ ValueBinding vb = application.createValueBinding("#{testBean}");
+ facesContext.getExternalContext().getRequestMap().put("testBean", bean);
+ }
+
+ protected abstract T getBeanToTest();
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ inputComponent1 = null;
+ inputComponent2 = null;
+ inputComponent3 = null;
+ rootComponent = null;
+ bean = null;
+ }
+
+ protected void createValueBindingForComponent(UIInput uiComponent, String valueBinding)
+ {
+ createValueBinding(uiComponent, "value", valueBinding);
+ }
+
+ protected void setValueToValidate(UIInput uiComponent, String valueToValidate)
+ {
+ uiComponent.setSubmittedValue(valueToValidate);
+ }
+
+ protected void validateComponents()
+ {
+ inputComponent1.processValidators(facesContext);
+ inputComponent2.processValidators(facesContext);
+ inputComponent3.processValidators(facesContext);
+ }
+
+ protected void assertComponentValid(UIInput uiInput)
+ {
+ assertTrue(isComponentValid(uiInput));
+ }
+
+ protected void assertComponentInvalid(UIInput uiInput)
+ {
+ assertFalse(isComponentValid(uiInput));
+ }
+
+ private boolean isComponentValid(UIInput uiComponent)
+ {
+ return uiComponent.isValid();
+ }
+}
Added: myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/DefaultGroupTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/DefaultGroupTestCase.java?rev=833627&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/DefaultGroupTestCase.java (added)
+++ myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/DefaultGroupTestCase.java Sat Nov 7 04:56:57 2009
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.test.beanval;
+
+import org.apache.myfaces.extensions.validator.test.beanval.model.TestCase1Bean;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.application.FacesMessage;
+
+public class DefaultGroupTestCase extends BaseBeanValPropertyValidationTestCase<TestCase1Bean>
+{
+ public DefaultGroupTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(DefaultGroupTestCase.class);
+ }
+
+ protected TestCase1Bean getBeanToTest()
+ {
+ return new TestCase1Bean();
+ }
+
+ public void testNotNullSeverityError()
+ {
+ createValueBindingForComponent(this.inputComponent1, "#{testBean.property1}");
+ setValueToValidate(this.inputComponent1, "");
+
+ validateComponents();
+
+ assertComponentInvalid(this.inputComponent1);
+ assertNavigationBlocked(true);
+
+ checkMessageCount(1);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
+ }
+
+ public void testNotNullSeverityWarn()
+ {
+ createValueBindingForComponent(this.inputComponent1, "#{testBean.property2}");
+ setValueToValidate(this.inputComponent1, "");
+
+ validateComponents();
+
+ assertComponentValid(this.inputComponent1);
+ assertNavigationBlocked(false);
+
+ checkMessageCount(1);
+ checkMessageSeverities(FacesMessage.SEVERITY_WARN);
+ }
+
+ public void testSeverityOrder()
+ {
+ createValueBindingForComponent(this.inputComponent1, "#{testBean.property3}");
+ setValueToValidate(this.inputComponent1, "ab");
+
+ validateComponents();
+
+ assertComponentInvalid(this.inputComponent1);
+ assertNavigationBlocked(true);
+
+ checkMessageCount(2);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR, FacesMessage.SEVERITY_WARN);
+ }
+}
Added: myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/LabelReplacementTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/LabelReplacementTestCase.java?rev=833627&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/LabelReplacementTestCase.java (added)
+++ myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/LabelReplacementTestCase.java Sat Nov 7 04:56:57 2009
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.test.beanval;
+
+import org.apache.myfaces.extensions.validator.test.beanval.model.TestCase1Bean;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import javax.faces.application.FacesMessage;
+
+public class LabelReplacementTestCase extends BaseBeanValPropertyValidationTestCase<TestCase1Bean>
+{
+ public LabelReplacementTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(LabelReplacementTestCase.class);
+ }
+
+ protected TestCase1Bean getBeanToTest()
+ {
+ return new TestCase1Bean();
+ }
+
+ public void testLabelReplacement()
+ {
+ String labelText = "property1";
+ createValueBindingForComponent(this.inputComponent1, "#{testBean.property1}");
+ this.inputComponent1.setLabel(labelText);
+ setValueToValidate(this.inputComponent1, "");
+
+ validateComponents();
+
+ checkMessageCount(1);
+
+ FacesMessage facesMessage = ((FacesMessage)facesContext.getMessages().next());
+ assertTrue(facesMessage.getSummary().startsWith(labelText));
+ assertTrue(facesMessage.getDetail().startsWith(labelText));
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/model/TestCase1Bean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/model/TestCase1Bean.java?rev=833627&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/model/TestCase1Bean.java (added)
+++ myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/model/TestCase1Bean.java Sat Nov 7 04:56:57 2009
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.test.beanval.model;
+
+import org.apache.myfaces.extensions.validator.beanval.payload.ViolationSeverity;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+
+public class TestCase1Bean
+{
+ @NotNull
+ private String property1;
+
+ @NotNull(payload = ViolationSeverity.Warn.class)
+ private String property2;
+
+ @Size(min = 3, payload = ViolationSeverity.Warn.class)
+ @Pattern(regexp = "[A-Z][a-z]+", payload = ViolationSeverity.Error.class)
+ private String property3;
+
+ public String getProperty1()
+ {
+ return property1;
+ }
+
+ public void setProperty1(String property1)
+ {
+ this.property1 = property1;
+ }
+
+ public String getProperty2()
+ {
+ return property2;
+ }
+
+ public void setProperty2(String property2)
+ {
+ this.property2 = property2;
+ }
+
+ public String getProperty3()
+ {
+ return property3;
+ }
+
+ public void setProperty3(String property3)
+ {
+ this.property3 = property3;
+ }
+}
Modified: myfaces/extensions/validator/trunk/test-modules/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/pom.xml?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/pom.xml (original)
+++ myfaces/extensions/validator/trunk/test-modules/pom.xml Sat Nov 7 04:56:57 2009
@@ -169,6 +169,7 @@
<configuration>
<excludes>
<exclude>**/Abstract*.java</exclude>
+ <exclude>**/Base*.java</exclude>
<exclude>**/TestUtils.java</exclude>
<exclude>**/*Bean.java</exclude>
</excludes>
Modified: myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java (original)
+++ myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java Sat Nov 7 04:56:57 2009
@@ -45,7 +45,7 @@
}.init();
}
- protected void processCrossValValidation()
+ protected void processCrossValidation()
{
new CrossValidationPhaseListener().afterPhase(new PhaseEvent(facesContext, PhaseId.ANY_PHASE,lifecycle));
}
Modified: myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/CrossValTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/CrossValTestCase.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/CrossValTestCase.java (original)
+++ myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/CrossValTestCase.java Sat Nov 7 04:56:57 2009
@@ -89,7 +89,7 @@
inputComponent1.validate(facesContext);
inputComponent2.validate(facesContext);
- processCrossValValidation();
+ processCrossValidation();
checkMessageCount(0);
//no update model needed
@@ -109,7 +109,7 @@
inputComponent2.validate(facesContext);
- processCrossValValidation();
+ processCrossValidation();
checkMessageCount(2);
//no update model needed
Modified: myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/ELCrossValTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/ELCrossValTestCase.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/ELCrossValTestCase.java (original)
+++ myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/ELCrossValTestCase.java Sat Nov 7 04:56:57 2009
@@ -119,7 +119,7 @@
inputComponent1.validate(facesContext);
inputComponent2.validate(facesContext);
- processCrossValValidation();
+ processCrossValidation();
//no update model needed
}
@@ -154,7 +154,7 @@
//validate
inputComponent1.validate(facesContext);
- processCrossValValidation();
+ processCrossValidation();
//no update model needed
}
Modified: myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/PropertyChainCrossValTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/PropertyChainCrossValTestCase.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/PropertyChainCrossValTestCase.java (original)
+++ myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/PropertyChainCrossValTestCase.java Sat Nov 7 04:56:57 2009
@@ -110,7 +110,7 @@
inputComponent1.validate(facesContext);
inputComponent2.validate(facesContext);
- processCrossValValidation();
+ processCrossValidation();
//no update model needed
}
@@ -143,7 +143,7 @@
//validate
inputComponent1.validate(facesContext);
- processCrossValValidation();
+ processCrossValidation();
//no update model needed
}
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java Sat Nov 7 04:56:57 2009
@@ -139,8 +139,7 @@
if(violations != null && !violations.isEmpty())
{
- BeanValidationUtils
- .processConstraintViolations(facesContext, uiComponent, convertedObject, violations, true);
+ BeanValidationUtils.processConstraintViolations(facesContext, uiComponent, convertedObject, violations);
}
}
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java Sat Nov 7 04:56:57 2009
@@ -29,6 +29,7 @@
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
+import javax.faces.component.EditableValueHolder;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.validation.ConstraintViolation;
@@ -78,8 +79,7 @@
public static void processConstraintViolations(FacesContext facesContext,
UIComponent uiComponent,
Object convertedObject,
- Set<ConstraintViolation> violations,
- boolean firstErrorCausesAnException)
+ Set<ConstraintViolation> violations)
{
List<FacesMessageHolder> facesMessageHolderList = new ArrayList<FacesMessageHolder>();
@@ -96,7 +96,7 @@
bvmi.processFacesMessage(facesContext, uiComponent, facesMessageHolderList, facesMessage);
}
- processViolationMessages(facesMessageHolderList, firstErrorCausesAnException);
+ processViolationMessages(facesMessageHolderList, uiComponent);
}
public static FacesMessage createFacesMessageForConstraintViolation(UIComponent uiComponent,
@@ -131,7 +131,7 @@
}
public static void processViolationMessages(List<FacesMessageHolder> violationMessageHolderList,
- boolean firstErrorCausesAnException)
+ UIComponent uiComponent)
{
if (violationMessageHolderList == null || violationMessageHolderList.isEmpty())
{
@@ -143,14 +143,21 @@
List<FacesMessageHolder> facesMessageListWithHighSeverity =
bvmi.getFacesMessageListWithHighSeverity(violationMessageHolderList);
- bvmi.addMessagesWithHighSeverity(facesMessageListWithHighSeverity, firstErrorCausesAnException);
- bvmi.addMessagesWithLowSeverity(facesMessageListWithLowSeverity);
+ tryToSetComponentInvalid(uiComponent, facesMessageListWithHighSeverity);
- if (!facesMessageListWithHighSeverity.isEmpty() && firstErrorCausesAnException)
+ bvmi.addMessages(facesMessageListWithHighSeverity);
+ bvmi.addMessages(facesMessageListWithLowSeverity);
+ }
+
+ private static void tryToSetComponentInvalid(
+ UIComponent uiComponent, List<FacesMessageHolder> facesMessageListWithHighSeverity)
+ {
+ if(!facesMessageListWithHighSeverity.isEmpty())
{
- FacesMessageHolder facesMessageHolder = facesMessageListWithHighSeverity.iterator().next();
- ExtValUtils.tryToThrowValidatorExceptionForComponentId(
- facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage(), null);
+ if(uiComponent instanceof EditableValueHolder)
+ {
+ ((EditableValueHolder)uiComponent).setValid(false);
+ }
}
}
}
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java Sat Nov 7 04:56:57 2009
@@ -637,26 +637,7 @@
return result;
}
- void addMessagesWithHighSeverity(List<FacesMessageHolder> facesMessageHolderListWithHighSeverity,
- boolean firstErrorCausesAnException)
- {
- boolean firstMessage = true;
- for (FacesMessageHolder facesMessageHolder : facesMessageHolderListWithHighSeverity)
- {
- if (firstMessage && firstErrorCausesAnException)
- {
- //the first error will be thrown as exception
- firstMessage = false;
- }
- else
- {
- ExtValUtils.tryToAddViolationMessageForComponentId(
- facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
- }
- }
- }
-
- void addMessagesWithLowSeverity(List<FacesMessageHolder> facesMessageHolderListWithLowSeverity)
+ void addMessages(List<FacesMessageHolder> facesMessageHolderListWithLowSeverity)
{
for (FacesMessageHolder facesMessageHolder : facesMessageHolderListWithLowSeverity)
{
Modified: myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java?rev=833627&r1=833626&r2=833627&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java Sat Nov 7 04:56:57 2009
@@ -31,6 +31,8 @@
import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.validation.message.FacesMessageHolder;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.internal.Priority;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -426,11 +428,12 @@
);
}
+ @ToDo(Priority.MEDIUM)
private void processModelValidationResults(Map<String, ModelValidationResult> results)
{
for (ModelValidationResult result : results.values())
{
- BeanValidationUtils.processViolationMessages(result.getFacesMessageHolderList(), false);
+ BeanValidationUtils.processViolationMessages(result.getFacesMessageHolderList(), null);
}
}