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/08 11:58:11 UTC
svn commit: r833855 - in
/myfaces/extensions/validator/branches/branch_for_jsf_1_1:
test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/
test-modules/bean-validation-tests/src/test/java/org/apache/myfac...
Author: gpetracek
Date: Sun Nov 8 10:58:11 2009
New Revision: 833855
URL: http://svn.apache.org/viewvc?rev=833855&view=rev
Log:
EXTVAL-30 bv model validation test cases
Added:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ModelValidationTestCase.java
- copied, changed from r833790, myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ClassLevelValidationTestCase.java
Removed:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ClassLevelValidationTestCase.java
Modified:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/view/ModelValidationTestCase1PageBean.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
Copied: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ModelValidationTestCase.java (from r833790, myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ClassLevelValidationTestCase.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ModelValidationTestCase.java?p2=myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ModelValidationTestCase.java&p1=myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ClassLevelValidationTestCase.java&r1=833790&r2=833855&rev=833855&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ClassLevelValidationTestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ModelValidationTestCase.java Sun Nov 8 10:58:11 2009
@@ -24,17 +24,17 @@
import javax.faces.application.FacesMessage;
-public class ClassLevelValidationTestCase extends
+public class ModelValidationTestCase extends
BaseBeanValPropertyValidationTestCase<ModelValidationTestCase1PageBean>
{
- public ClassLevelValidationTestCase(String name)
+ public ModelValidationTestCase(String name)
{
super(name);
}
public static Test suite()
{
- return new TestSuite(ClassLevelValidationTestCase.class);
+ return new TestSuite(ModelValidationTestCase.class);
}
protected ModelValidationTestCase1PageBean getBeanToTest()
@@ -59,7 +59,7 @@
checkMessageCount(0);
}
- public void testClassLevelViolationWithGlobalViolationMessage()
+ public void testClassLevelViolationWithGlobalViolationMessageViaProperty()
{
createValueBindingForComponent(this.inputComponent1, "#{testBean.model1.property1}");
setValueToValidate(this.inputComponent1, "123");
@@ -77,7 +77,7 @@
checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
}
- public void testClassLevelViolationWithInlineViolationMessage()
+ public void testClassLevelViolationWithInlineViolationMessageViaProperty()
{
createValueBindingForComponent(this.inputComponent1, "#{testBean.model2.property1}");
setValueToValidate(this.inputComponent1, "123");
@@ -93,7 +93,47 @@
assertComponentInvalid(this.inputComponent2);
assertNavigationBlocked(true);
+ //due to displayMessageInline
checkMessageCount(2);
checkMessageSeverities(FacesMessage.SEVERITY_ERROR, FacesMessage.SEVERITY_ERROR);
}
-}
+
+ public void testClassLevelViolationWithGlobalViolationMessageViaField()
+ {
+ createValueBindingForComponent(this.inputComponent1, "#{testBean.model3.property1}");
+ setValueToValidate(this.inputComponent1, "123");
+
+ createValueBindingForComponent(this.inputComponent2, "#{testBean.model3.property2}");
+ setValueToValidate(this.inputComponent2, "456");
+
+ validateComponents();
+ updateComponents();
+ processModelValidation();
+
+ assertNavigationBlocked(true);
+
+ checkMessageCount(1);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
+ }
+
+ public void testClassLevelViolationWithInlineViolationMessageViaField()
+ {
+ createValueBindingForComponent(this.inputComponent1, "#{testBean.model4.property1}");
+ setValueToValidate(this.inputComponent1, "123");
+
+ createValueBindingForComponent(this.inputComponent2, "#{testBean.model4.property2}");
+ setValueToValidate(this.inputComponent2, "456");
+
+ validateComponents();
+ updateComponents();
+ processModelValidation();
+
+ assertComponentInvalid(this.inputComponent1);
+ assertComponentInvalid(this.inputComponent2);
+ assertNavigationBlocked(true);
+
+ //due to displayMessageInline
+ checkMessageCount(2);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR, FacesMessage.SEVERITY_ERROR);
+ }
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/view/ModelValidationTestCase1PageBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/view/ModelValidationTestCase1PageBean.java?rev=833855&r1=833854&r2=833855&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/view/ModelValidationTestCase1PageBean.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/view/ModelValidationTestCase1PageBean.java Sun Nov 8 10:58:11 2009
@@ -24,29 +24,35 @@
public class ModelValidationTestCase1PageBean
{
- @BeanValidation(modelValidation = @ModelValidation(isActive = true))
private ModelValidationTestCase1Bean model1 = new ModelValidationTestCase1Bean();
- @BeanValidation(modelValidation = @ModelValidation(isActive = true, displayInline = true))
private ModelValidationTestCase1Bean model2 = new ModelValidationTestCase1Bean();
+ @BeanValidation(modelValidation = @ModelValidation(isActive = true))
+ private ModelValidationTestCase1Bean model3 = new ModelValidationTestCase1Bean();
+
+ @BeanValidation(modelValidation = @ModelValidation(isActive = true, displayInline = true))
+ private ModelValidationTestCase1Bean model4 = new ModelValidationTestCase1Bean();
+
+ @BeanValidation(modelValidation = @ModelValidation(isActive = true))
public ModelValidationTestCase1Bean getModel1()
{
return model1;
}
- public void setModel1(ModelValidationTestCase1Bean model1)
+ @BeanValidation(modelValidation = @ModelValidation(isActive = true, displayInline = true))
+ public ModelValidationTestCase1Bean getModel2()
{
- this.model1 = model1;
+ return model2;
}
- public ModelValidationTestCase1Bean getModel2()
+ public ModelValidationTestCase1Bean getModel3()
{
- return model2;
+ return model3;
}
- public void setModel2(ModelValidationTestCase1Bean model2)
+ public ModelValidationTestCase1Bean getModel4()
{
- this.model2 = model2;
+ return model4;
}
-}
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/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/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java?rev=833855&r1=833854&r2=833855&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java Sun Nov 8 10:58:11 2009
@@ -54,6 +54,7 @@
* @author Gerhard Petracek
* @since x.x.3
*/
+@ToDo(value = Priority.MEDIUM, description = "refactor implementation details")
public class ModelValidationPhaseListener implements PhaseListener
{
private static final long serialVersionUID = -3482233893186708878L;
@@ -107,19 +108,18 @@
if (!executeGlobalBeforeValidationInterceptors(
facesContext, modelValidationEntry.getComponent(), validationTarget, propertyInformation))
{
- return;
+ continue;
}
groupsToValidate = filterGroupsToValidate(
modelValidationEntry, validationTarget, processedValidationTargets);
- //TODO
- if (!addProcessedTarget(
- modelValidationEntry, processedValidationTargets, validationTarget, groupsToValidate))
+ if(!shouldContinueValidation(modelValidationEntry, groupsToValidate))
{
continue;
}
+ addProcessedTarget(validationTarget, groupsToValidate, processedValidationTargets);
violations = validateTarget(validationTarget, groupsToValidate);
if (violations != null && !violations.isEmpty())
@@ -151,48 +151,15 @@
return result.toArray(new Class[result.size()]);
}
- private boolean addProcessedTarget(ModelValidationEntry modelValidationEntry,
- Map<Object, List<Class>> processedValidationTargets,
- Object validationTarget,
- Class[] groups)
- {
- if (isTargetAlreadyProcessedForGroups(
- processedValidationTargets, validationTarget, groups) &&
- !modelValidationEntry.isDisplayMessageInline())
- {
- return false;
- }
-
- if (!isTargetAlreadyProcessedForGroups(
- processedValidationTargets, validationTarget, groups))
- {
- addTarget(processedValidationTargets, validationTarget, groups);
- }
- return true;
- }
-
- private boolean isTargetAlreadyProcessedForGroups(
- Map<Object, List<Class>> processedValidationTargets, Object validationTarget, Class[] groups)
+ private boolean shouldContinueValidation(ModelValidationEntry modelValidationEntry, Class[] groupsToValidate)
{
- List<Class> groupList;
- if(processedValidationTargets.containsKey(validationTarget))
- {
- groupList = processedValidationTargets.get(processedValidationTargets);
-
- for(Class group : groups)
- {
- if(!groupList.contains(group))
- {
- return false;
- }
- }
- return true;
- }
- return false;
+ return !(groupsToValidate == null || groupsToValidate.length == 0) ||
+ modelValidationEntry.isDisplayMessageInline();
}
- private void addTarget(
- Map<Object, List<Class>> processedValidationTargets, Object validationTarget, Class[] groups)
+ private void addProcessedTarget(Object validationTarget,
+ Class[] groups,
+ Map<Object, List<Class>> processedValidationTargets)
{
if(!processedValidationTargets.containsKey(validationTarget))
{
@@ -263,7 +230,7 @@
Map<String, ModelValidationResult> results)
{
//jsf 2.0 is able to display multiple messages per component - so process all violations
- //jsf < 2.0 will just use the first one (it's only a little overhead)
+ //jsf < 2.0 will just use the first one (for inline messages - so it's only a little overhead)
Iterator<ConstraintViolation<Object>> violationsIterator = violations.iterator();
ConstraintViolation<Object> constraintViolation;
ModelValidationResult result;