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/22 19:26:04 UTC
svn commit: r883117 - in
/myfaces/extensions/validator/branches/branch_for_jsf_1_1:
test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/
validation-modules/property-validation/src/main/java...
Author: gpetracek
Date: Sun Nov 22 18:26:03 2009
New Revision: 883117
URL: http://svn.apache.org/viewvc?rev=883117&view=rev
Log:
EXTVAL-72 implementation and test-cases
Added:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestBean.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestCase.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestBean.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestCase.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestBean.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestCase.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestBean.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestCase.java
Modified:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestBean.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestBean.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestBean.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.propval.crossval;
+
+import org.apache.myfaces.extensions.validator.crossval.annotation.RequiredIf;
+
+public class RequiredIf1TestBean
+{
+ private String property1;
+
+ @RequiredIf(valueOf = "property1")
+ private String property2;
+
+ 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;
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestCase.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestCase.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf1TestCase.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,161 @@
+/*
+ * 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.propval.crossval;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.myfaces.extensions.validator.test.propval.AbstractPropertyValidationTestCase;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.application.FacesMessage;
+
+public class RequiredIf1TestCase extends AbstractPropertyValidationTestCase
+{
+
+ HtmlInputText inputComponent1 = null;
+ HtmlInputText inputComponent2 = null;
+
+ UIViewRoot rootComponent = null;
+
+ public RequiredIf1TestCase(String name)
+ {
+ super(name);
+ inputComponent1 = null;
+ inputComponent2 = null;
+ rootComponent = null;
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(RequiredIf1TestCase.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ RequiredIf1TestBean bean = new RequiredIf1TestBean();
+ createValueBinding(null, "value", "#{testBean}");
+ facesContext.getExternalContext().getRequestMap().put("testBean", bean);
+
+ rootComponent = new UIViewRoot();
+ HtmlForm form = new HtmlForm();
+ form.setId("form");
+ rootComponent.getChildren().add(form);
+ inputComponent1 = new HtmlInputText();
+ form.getChildren().add(inputComponent1);
+ inputComponent1.setId("input1");
+ inputComponent2 = new HtmlInputText();
+ form.getChildren().add(inputComponent2);
+ inputComponent2.setId("input2");
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+ public void testRequiredIfTargetNotEmptyFailed() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("1d3");
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(1);
+
+ assertNavigationBlocked(true);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfTargetNotEmptyCorrect1() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("1d3");
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfTargetNotEmptyCorrect2() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("");
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfTargetNotEmptyCorrect3() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("");
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestBean.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestBean.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestBean.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.propval.crossval;
+
+import org.apache.myfaces.extensions.validator.crossval.annotation.RequiredIf;
+import static org.apache.myfaces.extensions.validator.crossval.annotation.RequiredIfType.*;
+
+public class RequiredIf2TestBean
+{
+ private String property1;
+ @RequiredIf(valueOf = "property1", is = empty)
+ private String property2;
+
+ 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;
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestCase.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestCase.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf2TestCase.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,161 @@
+/*
+ * 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.propval.crossval;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.myfaces.extensions.validator.test.propval.AbstractPropertyValidationTestCase;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.application.FacesMessage;
+
+public class RequiredIf2TestCase extends AbstractPropertyValidationTestCase
+{
+
+ HtmlInputText inputComponent1 = null;
+ HtmlInputText inputComponent2 = null;
+
+ UIViewRoot rootComponent = null;
+
+ public RequiredIf2TestCase(String name)
+ {
+ super(name);
+ inputComponent1 = null;
+ inputComponent2 = null;
+ rootComponent = null;
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(RequiredIf2TestCase.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ RequiredIf2TestBean bean = new RequiredIf2TestBean();
+ createValueBinding(null, "value", "#{testBean}");
+ facesContext.getExternalContext().getRequestMap().put("testBean", bean);
+
+ rootComponent = new UIViewRoot();
+ HtmlForm form = new HtmlForm();
+ form.setId("form");
+ rootComponent.getChildren().add(form);
+ inputComponent1 = new HtmlInputText();
+ form.getChildren().add(inputComponent1);
+ inputComponent1.setId("input1");
+ inputComponent2 = new HtmlInputText();
+ form.getChildren().add(inputComponent2);
+ inputComponent2.setId("input2");
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+ public void testRequiredIfTargetEmptyFailed() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("");
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(1);
+
+ assertNavigationBlocked(true);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfTargetEmptyCorrect1() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("");
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfTargetEmptyCorrect2() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("1d3");
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfTargetEmptyCorrect3() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue("1d3");
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestBean.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestBean.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestBean.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,48 @@
+/*
+ * 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.propval.crossval;
+
+import org.apache.myfaces.extensions.validator.crossval.annotation.RequiredIf;
+
+public class RequiredIf3TestBean
+{
+ private Boolean property1;
+ @RequiredIf(valueOf = "property1")
+ private String property2;
+
+ public Boolean getProperty1()
+ {
+ return property1;
+ }
+
+ public void setProperty1(Boolean property1)
+ {
+ this.property1 = property1;
+ }
+
+ public String getProperty2()
+ {
+ return property2;
+ }
+
+ public void setProperty2(String property2)
+ {
+ this.property2 = property2;
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestCase.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestCase.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf3TestCase.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,161 @@
+/*
+ * 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.propval.crossval;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.myfaces.extensions.validator.test.propval.AbstractPropertyValidationTestCase;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.application.FacesMessage;
+
+public class RequiredIf3TestCase extends AbstractPropertyValidationTestCase
+{
+
+ HtmlInputText inputComponent1 = null;
+ HtmlInputText inputComponent2 = null;
+
+ UIViewRoot rootComponent = null;
+
+ public RequiredIf3TestCase(String name)
+ {
+ super(name);
+ inputComponent1 = null;
+ inputComponent2 = null;
+ rootComponent = null;
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(RequiredIf3TestCase.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ RequiredIf3TestBean bean = new RequiredIf3TestBean();
+ createValueBinding(null, "value", "#{testBean}");
+ facesContext.getExternalContext().getRequestMap().put("testBean", bean);
+
+ rootComponent = new UIViewRoot();
+ HtmlForm form = new HtmlForm();
+ form.setId("form");
+ rootComponent.getChildren().add(form);
+ inputComponent1 = new HtmlInputText();
+ form.getChildren().add(inputComponent1);
+ inputComponent1.setId("input1");
+ inputComponent2 = new HtmlInputText();
+ form.getChildren().add(inputComponent2);
+ inputComponent2.setId("input2");
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+ public void testRequiredIfBooleanTargetNotEmptyFailed() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.TRUE.toString());
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(1);
+
+ assertNavigationBlocked(true);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfBooleanTargetNotEmptyCorrect1() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.TRUE.toString());
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfBooleanTargetNotEmptyCorrect2() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.FALSE.toString());
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfBooleanTargetNotEmptyCorrect3() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.FALSE.toString());
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestBean.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestBean.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestBean.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,49 @@
+/*
+ * 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.propval.crossval;
+
+import org.apache.myfaces.extensions.validator.crossval.annotation.RequiredIf;
+import static org.apache.myfaces.extensions.validator.crossval.annotation.RequiredIfType.*;
+
+public class RequiredIf4TestBean
+{
+ private boolean property1;
+ @RequiredIf(valueOf = "property1", is = empty)
+ private String property2;
+
+ public boolean isProperty1()
+ {
+ return property1;
+ }
+
+ public void setProperty1(boolean property1)
+ {
+ this.property1 = property1;
+ }
+
+ public String getProperty2()
+ {
+ return property2;
+ }
+
+ public void setProperty2(String property2)
+ {
+ this.property2 = property2;
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestCase.java?rev=883117&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestCase.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/crossval/RequiredIf4TestCase.java Sun Nov 22 18:26:03 2009
@@ -0,0 +1,164 @@
+/*
+ * 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.propval.crossval;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.myfaces.extensions.validator.test.propval.AbstractPropertyValidationTestCase;
+
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.application.FacesMessage;
+
+/**
+ * @author Leonardo Uribe
+ */
+public class RequiredIf4TestCase extends AbstractPropertyValidationTestCase
+{
+
+ HtmlInputText inputComponent1 = null;
+ HtmlInputText inputComponent2 = null;
+
+ UIViewRoot rootComponent = null;
+
+ public RequiredIf4TestCase(String name)
+ {
+ super(name);
+ inputComponent1 = null;
+ inputComponent2 = null;
+ rootComponent = null;
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(RequiredIf4TestCase.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ RequiredIf4TestBean bean = new RequiredIf4TestBean();
+ createValueBinding(null, "value", "#{testBean}");
+ facesContext.getExternalContext().getRequestMap().put("testBean", bean);
+
+ rootComponent = new UIViewRoot();
+ HtmlForm form = new HtmlForm();
+ form.setId("form");
+ rootComponent.getChildren().add(form);
+ inputComponent1 = new HtmlInputText();
+ form.getChildren().add(inputComponent1);
+ inputComponent1.setId("input1");
+ inputComponent2 = new HtmlInputText();
+ form.getChildren().add(inputComponent2);
+ inputComponent2.setId("input2");
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+ public void testRequiredIfBooleanTargetEmptyFailed() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.FALSE.toString());
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(1);
+
+ assertNavigationBlocked(true);
+ checkMessageSeverities(FacesMessage.SEVERITY_ERROR);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfBooleanTargetEmptyCorrect1() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.FALSE.toString());
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfBooleanTargetEmptyCorrect2() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.TRUE.toString());
+ inputComponent2.setSubmittedValue("1d3");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+
+ public void testRequiredIfBooleanTargetEmptyCorrect3() throws Exception
+ {
+ createValueBinding(inputComponent1, "value", "#{testBean.property1}");
+ createValueBinding(inputComponent2, "value", "#{testBean.property2}");
+
+ //decode
+ inputComponent1.setSubmittedValue(Boolean.TRUE.toString());
+ inputComponent2.setSubmittedValue("");
+
+ //validate
+ inputComponent1.validate(facesContext);
+ inputComponent2.validate(facesContext);
+
+ processCrossValidation();
+ checkMessageCount(0);
+
+ assertNavigationBlocked(false);
+
+ //no update model needed
+ }
+}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java?rev=883117&r1=883116&r2=883117&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/RequiredIfStrategy.java Sun Nov 22 18:26:03 2009
@@ -64,22 +64,38 @@
return annotation.validationErrorMsgKey();
}
- public boolean isViolation(Object object1, Object object2, RequiredIf annotation)
+ public boolean isViolation(Object source, Object target, RequiredIf annotation)
{
boolean violationFound = false;
if (annotation.is().equals(RequiredIfType.empty))
{
- violationFound = (object2 == null || object2.equals("")) && (object1 == null || object1.equals(""));
+ violationFound = (isTargetEmpty(target) || Boolean.FALSE.equals(target)) && isSourceEmpty(source);
}
else if (annotation.is().equals(RequiredIfType.not_empty))
{
- violationFound = (object2 != null && !object2.equals("")) && (object1 == null || object1.equals(""));
+ violationFound = (isTargetNotEmpty(target) && isSourceEmpty(source) && !(target instanceof Boolean)) ||
+ (Boolean.TRUE.equals(target) && isSourceEmpty(source));
}
return violationFound;
}
+ private boolean isTargetEmpty(Object target)
+ {
+ return target == null || target.equals("");
+ }
+
+ private boolean isSourceEmpty(Object source)
+ {
+ return source == null || source.equals("");
+ }
+
+ private boolean isTargetNotEmpty(Object target)
+ {
+ return target != null && !target.equals("");
+ }
+
public String[] getValidationTargets(RequiredIf annotation)
{
return annotation.valueOf();