You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2011/12/02 17:33:45 UTC
svn commit: r1209569 [48/50] - in /struts/struts2/branches/STRUTS_3_X:
apps/blank/src/main/java/example/ apps/blank/src/test/java/example/
apps/jboss-blank/src/main/java/example/
apps/jboss-blank/src/test/java/example/ apps/mailreader/src/main/java/mai...
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/SimpleActionValidationTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/SimpleActionValidationTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/SimpleActionValidationTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/SimpleActionValidationTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,241 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.config.providers.MockConfigurationProvider;
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.config.providers.XmlConfigurationProvider;
+import org.apache.struts2.xwork2.ActionProxy;
+import org.apache.struts2.xwork2.util.ValueStack;
+import org.apache.struts2.xwork2.ValidationAware;
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.validator.validators.ValidatorSupport;
+import org.apache.struts2.xwork2.SimpleAction;
+
+import java.util.*;
+
+
+/**
+ * SimpleActionValidationTest
+ * <p/>
+ * Created : Jan 20, 2003 11:04:25 PM
+ *
+ * @author Jason Carreira
+ */
+public class SimpleActionValidationTest extends XWorkTestCase {
+
+ private Locale origLocale;
+
+
+ public void testAliasValidation() {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("baz", "10");
+
+ //valid values
+ params.put("bar", "7");
+ params.put("date", "12/23/2002");
+ params.put("percentage", "1.23456789");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.VALIDATION_ACTION_NAME, extraContext);
+ proxy.execute();
+
+ ValidationAware validationAware = (ValidationAware) proxy.getAction();
+ assertFalse(validationAware.hasFieldErrors());
+
+ // put in an out-of-range value to see if the old validators still work
+ ActionContext.setContext(new ActionContext(new HashMap<String, Object>()));
+ params.put("bar", "42");
+ proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.VALIDATION_ALIAS_NAME, extraContext);
+ proxy.execute();
+ validationAware = (ValidationAware) proxy.getAction();
+ assertTrue(validationAware.hasFieldErrors());
+
+ Map<String, List<String>> errors = validationAware.getFieldErrors();
+ assertTrue(errors.containsKey("baz"));
+
+ List<String> bazErrors = errors.get("baz");
+ assertEquals(1, bazErrors.size());
+
+ String message = bazErrors.get(0);
+ assertEquals("baz out of range.", message);
+ assertTrue(errors.containsKey("bar"));
+
+ List<String> barErrors = errors.get("bar");
+ assertEquals(1, barErrors.size());
+ message = barErrors.get(0);
+ assertEquals("bar must be between 6 and 10, current value is 42.", message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ public void testLookingUpFieldNameAsTextKey() {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+
+ // should cause a message
+ params.put("baz", "-1");
+
+ //valid values
+ params.put("bar", "7");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.VALIDATION_ACTION_NAME, extraContext);
+ proxy.execute();
+ assertTrue(((ValidationAware) proxy.getAction()).hasFieldErrors());
+
+ Map<String, List<String>> errors = ((ValidationAware) proxy.getAction()).getFieldErrors();
+ List<String> bazErrors = errors.get("baz");
+ assertEquals(1, bazErrors.size());
+
+ String errorMessage = bazErrors.get(0);
+ assertNotNull(errorMessage);
+ assertEquals("Baz Field must be greater than 0", errorMessage);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ public void testMessageKey() {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("foo", "200");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.VALIDATION_ACTION_NAME, extraContext);
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ ActionContext.setContext(new ActionContext(stack.getContext()));
+ ActionContext.getContext().setLocale(Locale.US);
+ proxy.execute();
+ assertTrue(((ValidationAware) proxy.getAction()).hasFieldErrors());
+
+ Map<String, List<String>> errors = ((ValidationAware) proxy.getAction()).getFieldErrors();
+ List<String> fooErrors = errors.get("foo");
+ assertEquals(1, fooErrors.size());
+
+ String errorMessage = fooErrors.get(0);
+ assertNotNull(errorMessage);
+ assertEquals("Foo Range Message", errorMessage);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ public void testMessageKeyIsReturnedIfNoOtherDefault() throws ValidationException {
+ Validator validator = new ValidatorSupport() {
+ public void validate(Object object) throws ValidationException {
+ addActionError(object);
+ }
+ };
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+
+ String messageKey = "does.not.exist";
+ validator.setMessageKey(messageKey);
+
+ ValidatorContext validatorContext = new DelegatingValidatorContext(new SimpleAction());
+ validator.setValidatorContext(validatorContext);
+ validator.validate(this);
+ assertTrue(validatorContext.hasActionErrors());
+
+ Collection<String> errors = validatorContext.getActionErrors();
+ assertEquals(1, errors.size());
+ assertEquals(messageKey, errors.toArray()[0]);
+ }
+
+ public void testParamterizedMessage() {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("bar", "42");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.VALIDATION_ACTION_NAME, extraContext);
+ proxy.execute();
+ assertTrue(((ValidationAware) proxy.getAction()).hasFieldErrors());
+
+ Map<String, List<String>> errors = ((ValidationAware) proxy.getAction()).getFieldErrors();
+ List<String> barErrors = errors.get("bar");
+ assertEquals(1, barErrors.size());
+
+ String errorMessage = barErrors.get(0);
+ assertNotNull(errorMessage);
+ assertEquals("bar must be between 6 and 10, current value is 42.", errorMessage);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ public void testSubPropertiesAreValidated() {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("baz", "10");
+
+ //valid values
+ params.put("foo", "8");
+ params.put("bar", "7");
+ params.put("date", "12/23/2002");
+
+ params.put("bean.name", "Name should be valid");
+
+ // this should cause a message
+ params.put("bean.count", "100");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.VALIDATION_SUBPROPERTY_NAME, extraContext);
+ proxy.execute();
+ assertTrue(((ValidationAware) proxy.getAction()).hasFieldErrors());
+
+ Map<String, List<String>> errors = ((ValidationAware) proxy.getAction()).getFieldErrors();
+ List<String> beanCountErrors = errors.get("bean.count");
+ assertEquals(1, beanCountErrors.size());
+
+ String errorMessage = beanCountErrors.get(0);
+ assertNotNull(errorMessage);
+ assertEquals("bean.count out of range.", errorMessage);
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ origLocale = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ loadConfigurationProviders(new XmlConfigurationProvider("xwork-test-beans.xml"), new MockConfigurationProvider());
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ Locale.setDefault(origLocale);
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringLengthFieldValidatorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringLengthFieldValidatorTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringLengthFieldValidatorTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringLengthFieldValidatorTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2002-2006,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.ActionSupport;
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.validator.validators.StringLengthFieldValidator;
+
+/**
+ *
+ * @author tm_jee
+ * @version $Date: 2011-12-02 12:24:48 +0100 (Fri, 02 Dec 2011) $ $Id: StringLengthFieldValidatorTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class StringLengthFieldValidatorTest extends XWorkTestCase {
+
+ protected InternalActionSupport action;
+ protected StringLengthFieldValidator validator;
+
+ public void testStringLengthEmptyNoTrim1() throws Exception {
+ action.setMyField("");
+
+ validator.setTrim(false);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), "");
+ assertFalse(action.hasFieldErrors());
+ }
+
+ public void testStringLengthNullNoTrim() throws Exception {
+ action.setMyField(null);
+
+ validator.setTrim(false);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), null);
+ assertFalse(action.hasFieldErrors());
+ }
+
+ public void testStringLengthEmptyTrim1() throws Exception {
+ action.setMyField(" ");
+
+ validator.setTrim(true);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), " ");
+ assertFalse(action.hasFieldErrors());
+ }
+
+ public void testStringLengthEmptyNoTrim2() throws Exception {
+ action.setMyField(" ");
+
+ validator.setTrim(false);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), " ");
+ assertTrue(action.hasFieldErrors());
+ }
+
+
+ public void testStringLengthNullTrim() throws Exception {
+ action.setMyField(null);
+
+ validator.setTrim(true);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), null);
+ assertFalse(action.hasFieldErrors());
+ }
+
+ public void testInvalidStringLengthNoTrim() throws Exception {
+ action.setMyField("abcdefghijklmn");
+
+ validator.setTrim(false);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), "abcdefghijklmn");
+ assertTrue(action.hasFieldErrors());
+ }
+
+ public void testInvalidStringLengthTrim() throws Exception {
+ action.setMyField("abcdefghijklmn ");
+
+ validator.setTrim(true);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), "abcdefghijklmn ");
+ assertTrue(action.hasFieldErrors());
+ }
+
+ public void testValidStringLengthNoTrim() throws Exception {
+ action.setMyField(" ");
+
+ validator.setTrim(false);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), " ");
+ assertFalse(action.hasFieldErrors());
+ }
+
+ public void testValidStringLengthTrim() throws Exception {
+ action.setMyField("asd ");
+
+ validator.setTrim(true);
+ validator.validate(action);
+
+ assertEquals(action.getMyField(), "asd ");
+ assertFalse(action.hasFieldErrors());
+ }
+
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ action = new InternalActionSupport();
+ validator = new StringLengthFieldValidator();
+ validator.setFieldName("myField");
+ validator.setMessageKey("error");
+ validator.setValidatorContext(new DelegatingValidatorContext(action));
+ validator.setMaxLength(5);
+ validator.setMinLength(2);
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+ }
+
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ action = null;
+ validator = null;
+ }
+
+ public static class InternalActionSupport extends ActionSupport {
+
+ private static final long serialVersionUID = 1L;
+
+ private String myField;
+ public String getMyField() { return this.myField; }
+ public void setMyField(String myField) { this.myField = myField; }
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringValidatorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringValidatorTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringValidatorTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/StringValidatorTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2002-2006,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.config.providers.MockConfigurationProvider;
+import org.apache.struts2.xwork2.Action;
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.ActionInvocation;
+import org.apache.struts2.xwork2.ActionProxy;
+import org.apache.struts2.xwork2.ValidationAwareSupport;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.test.Equidae;
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.validator.validators.RequiredStringValidator;
+
+import java.util.List;
+import java.util.Map;
+
+import org.easymock.EasyMock;
+
+/**
+ * @author Mark Woon
+ * @author tm_jee (tm_jee (at) yahoo.co.uk )
+ */
+public class StringValidatorTest extends XWorkTestCase {
+
+ public void testRequiredStringWithNullValue() throws Exception {
+ Equidae equidae = new Equidae();
+ equidae.setHorse(null);
+
+ DelegatingValidatorContext context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+
+ assertTrue(context.hasFieldErrors());
+ }
+
+
+ public void testRequiredString() throws Exception {
+ Equidae equidae = new Equidae();
+
+ // everything should fail
+ equidae.setHorse("");
+ ActionContext.getContext().getValueStack().push(equidae);
+
+ DelegatingValidatorContext context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+
+ assertTrue(context.hasFieldErrors());
+
+ Map fieldErrors = context.getFieldErrors();
+ assertTrue(fieldErrors.containsKey("horse"));
+ assertEquals(2, ((List) fieldErrors.get("horse")).size());
+
+ // trim = false should fail
+ equidae.setHorse(" ");
+ ActionContext.getContext().getValueStack().push(equidae);
+ context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+
+ assertTrue(context.hasFieldErrors());
+ fieldErrors = context.getFieldErrors();
+ assertTrue(fieldErrors.containsKey("horse"));
+
+ List errors = (List) fieldErrors.get("horse");
+ assertEquals(1, errors.size());
+ assertEquals("trim", (String) errors.get(0));
+ }
+
+ public void testStringLength() throws Exception {
+ Equidae equidae = new Equidae();
+
+ equidae.setCow("asdf");
+ equidae.setDonkey("asdf");
+ ActionContext.getContext().getValueStack().push(equidae);
+
+ DelegatingValidatorContext context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+ assertTrue(context.hasFieldErrors());
+
+ Map fieldErrors = context.getFieldErrors();
+
+ // cow
+ assertTrue(fieldErrors.containsKey("cow"));
+
+ List errors = (List) fieldErrors.get("cow");
+ assertEquals(2, errors.size());
+ assertEquals("noTrim-min5", errors.get(0));
+ assertEquals("noTrim-min5-max10", errors.get(1));
+
+ // donkey
+ assertTrue(fieldErrors.containsKey("donkey"));
+ errors = (List) fieldErrors.get("donkey");
+ assertEquals(2, errors.size());
+ assertEquals("trim-min5", errors.get(0));
+ assertEquals("trim-min5-max10", errors.get(1));
+
+ equidae.setCow("asdf ");
+ equidae.setDonkey("asdf ");
+ ActionContext.getContext().getValueStack().push(equidae);
+ context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+ assertTrue(context.hasFieldErrors());
+
+ fieldErrors = context.getFieldErrors();
+
+ // cow
+ assertFalse(fieldErrors.containsKey("cow"));
+
+ // donkey
+ assertTrue(fieldErrors.containsKey("donkey"));
+ errors = (List) fieldErrors.get("donkey");
+ assertEquals(2, errors.size());
+ assertEquals("trim-min5", errors.get(0));
+ assertEquals("trim-min5-max10", errors.get(1));
+
+ equidae.setCow("asdfasdf");
+ equidae.setDonkey("asdfasdf");
+ ActionContext.getContext().getValueStack().push(equidae);
+ context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+ assertTrue(context.hasFieldErrors());
+
+ fieldErrors = context.getFieldErrors();
+
+ // cow
+ assertFalse(fieldErrors.containsKey("cow"));
+
+ // donkey
+ assertFalse(fieldErrors.containsKey("donkey"));
+
+ equidae.setCow("asdfasdf ");
+ equidae.setDonkey("asdfasdf ");
+ ActionContext.getContext().getValueStack().push(equidae);
+ context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+ assertTrue(context.hasFieldErrors());
+
+ fieldErrors = context.getFieldErrors();
+
+ // cow
+ assertTrue(fieldErrors.containsKey("cow"));
+ errors = (List) fieldErrors.get("cow");
+ assertEquals(2, errors.size());
+ assertEquals("noTrim-min5-max10", errors.get(0));
+ assertEquals("noTrim-max10", errors.get(1));
+
+ // donkey
+ assertFalse(fieldErrors.containsKey("donkey"));
+
+ equidae.setCow("asdfasdfasdf");
+ equidae.setDonkey("asdfasdfasdf");
+ ActionContext.getContext().getValueStack().push(equidae);
+ context = new DelegatingValidatorContext(new ValidationAwareSupport());
+ container.getInstance(ActionValidatorManager.class).validate(equidae, null, context);
+ assertTrue(context.hasFieldErrors());
+
+ fieldErrors = context.getFieldErrors();
+
+ // cow
+ assertTrue(fieldErrors.containsKey("cow"));
+ errors = (List) fieldErrors.get("cow");
+ assertEquals(2, errors.size());
+ assertEquals("noTrim-min5-max10", errors.get(0));
+ assertEquals("noTrim-max10", errors.get(1));
+
+ // donkey
+ assertTrue(fieldErrors.containsKey("donkey"));
+ errors = (List) fieldErrors.get("donkey");
+ assertEquals(2, errors.size());
+ assertEquals("trim-min5-max10", errors.get(0));
+ assertEquals("trim-max10", errors.get(1));
+ }
+
+ public void testGetSetTrim() {
+ RequiredStringValidator val = new RequiredStringValidator();
+
+ val.setTrim(true);
+ assertEquals(true, val.getTrim());
+
+ val.setTrim(false);
+ assertEquals(false, val.getTrim());
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ loadConfigurationProviders(new MockConfigurationProvider());
+
+ ActionConfig config = new ActionConfig.Builder("", "name", "").build();
+ ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class);
+ ActionProxy proxy = EasyMock.createNiceMock(ActionProxy.class);
+
+ EasyMock.expect(invocation.getProxy()).andReturn(proxy).anyTimes();
+ EasyMock.expect(invocation.getAction()).andReturn(null).anyTimes();
+ EasyMock.expect(invocation.invoke()).andReturn(Action.SUCCESS).anyTimes();
+ EasyMock.expect(proxy.getMethod()).andReturn("execute").anyTimes();
+ EasyMock.expect(proxy.getConfig()).andReturn(config).anyTimes();
+
+
+ EasyMock.replay(invocation);
+ EasyMock.replay(proxy);
+
+ ActionContext.getContext().setActionInvocation(invocation);
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/URLValidatorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/URLValidatorTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/URLValidatorTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/URLValidatorTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.util.ValueStack;
+import org.apache.struts2.xwork2.validator.validators.URLValidator;
+
+/**
+ * Test case for URLValidator
+ *
+ * @author tm_jee
+ * @version $Date: 2011-12-02 12:24:48 +0100 (Fri, 02 Dec 2011) $ $Id: URLValidatorTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class URLValidatorTest extends XWorkTestCase {
+
+
+ ValueStack stack;
+ ActionContext actionContext;
+
+ public void testAcceptNullValueForMutualExclusionOfValidators() throws Exception {
+
+ URLValidator validator = new URLValidator();
+ validator.setValidatorContext(new GenericValidatorContext(new Object()));
+ validator.setFieldName("testingUrl1");
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+ validator.validate(new MyObject());
+
+ assertFalse(validator.getValidatorContext().hasErrors());
+ assertFalse(validator.getValidatorContext().hasActionErrors());
+ assertFalse(validator.getValidatorContext().hasActionMessages());
+ assertFalse(validator.getValidatorContext().hasFieldErrors());
+ }
+
+ public void testInvalidEmptyValue() throws Exception {
+
+ URLValidator validator = new URLValidator();
+ validator.setValidatorContext(new GenericValidatorContext(new Object()));
+ validator.setFieldName("testingUrl2");
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+ validator.validate(new MyObject());
+
+ assertFalse(validator.getValidatorContext().hasErrors());
+ assertFalse(validator.getValidatorContext().hasActionErrors());
+ assertFalse(validator.getValidatorContext().hasActionMessages());
+ assertFalse(validator.getValidatorContext().hasFieldErrors());
+ }
+
+ public void testInvalidValue() throws Exception {
+
+ URLValidator validator = new URLValidator();
+ validator.setValidatorContext(new GenericValidatorContext(new Object()));
+ validator.setFieldName("testingUrl3");
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+ validator.validate(new MyObject());
+
+ assertTrue(validator.getValidatorContext().hasErrors());
+ assertFalse(validator.getValidatorContext().hasActionErrors());
+ assertFalse(validator.getValidatorContext().hasActionMessages());
+ assertTrue(validator.getValidatorContext().hasFieldErrors());
+ }
+
+
+ public void testValidUrl1() throws Exception {
+
+ URLValidator validator = new URLValidator();
+ validator.setValidatorContext(new GenericValidatorContext(new Object()));
+ validator.setFieldName("testingUrl4");
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+ validator.validate(new MyObject());
+
+ assertFalse(validator.getValidatorContext().hasErrors());
+ assertFalse(validator.getValidatorContext().hasActionErrors());
+ assertFalse(validator.getValidatorContext().hasActionMessages());
+ assertFalse(validator.getValidatorContext().hasFieldErrors());
+ }
+
+ public void testValidUrl2() throws Exception {
+
+ URLValidator validator = new URLValidator();
+ validator.setValidatorContext(new GenericValidatorContext(new Object()));
+ validator.setFieldName("testingUrl5");
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+ validator.validate(new MyObject());
+
+ assertFalse(validator.getValidatorContext().hasErrors());
+ assertFalse(validator.getValidatorContext().hasActionErrors());
+ assertFalse(validator.getValidatorContext().hasActionMessages());
+ assertFalse(validator.getValidatorContext().hasFieldErrors());
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ stack = ActionContext.getContext().getValueStack();
+ actionContext = ActionContext.getContext();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ stack = null;
+ actionContext = null;
+ }
+
+
+ class MyObject {
+ public String getTestingUrl1() {
+ return null;
+ }
+
+ public String getTestingUrl2() {
+ return "";
+ }
+
+ public String getTestingUrl3() {
+ return "sasdasd@asddd";
+ }
+
+ public String getTestingUrl4() {
+ //return "http://yahoo.com/";
+ return "http://www.jroller.com1?qwe=qwe";
+ }
+
+ public String getTestingUrl5() {
+ return "http://yahoo.com/articles?id=123";
+ }
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/ValidatorAnnotationTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/ValidatorAnnotationTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/ValidatorAnnotationTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/ValidatorAnnotationTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,116 @@
+package org.apache.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.ActionProxy;
+import org.apache.struts2.xwork2.ValidationAware;
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.config.providers.XmlConfigurationProvider;
+
+import java.util.Collection;
+import java.util.HashMap;
+
+/**
+ * Unit test for annotated Validators.
+ *
+ * @author Rainer Hermanns
+ */
+public class ValidatorAnnotationTest extends XWorkTestCase {
+
+ public void testNotAnnotatedMethodSuccess() throws Exception {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("date", "12/23/2002");
+ params.put("foo", "5");
+ params.put("bar", "7");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "notAnnotatedMethod", extraContext);
+ proxy.execute();
+ assertFalse(((ValidationAware) proxy.getAction()).hasActionErrors());
+
+ Collection errors = ((ValidationAware) proxy.getAction()).getActionErrors();
+ assertEquals(0, errors.size());
+ }
+
+ public void testNotAnnotatedMethodSuccess2() throws Exception {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "notAnnotatedMethod", extraContext);
+ proxy.execute();
+ assertFalse(((ValidationAware) proxy.getAction()).hasActionErrors());
+
+ Collection errors = ((ValidationAware) proxy.getAction()).getActionErrors();
+ assertEquals(0, errors.size());
+ }
+
+ public void testAnnotatedMethodFailure() throws Exception {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "annotatedMethod", extraContext);
+ proxy.execute();
+ assertTrue(((ValidationAware) proxy.getAction()).hasActionErrors());
+ Collection errors = ((ValidationAware) proxy.getAction()).getActionErrors();
+ assertEquals(1, errors.size());
+
+ assertEquals("Need param1 or param2.", errors.iterator().next());
+
+ }
+
+ public void testAnnotatedMethodSuccess() throws Exception {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+
+ //make it not fail
+ params.put("param1", "key1");
+ params.put("param2", "key2");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "annotatedMethod", extraContext);
+ proxy.execute();
+ assertFalse(((ValidationAware) proxy.getAction()).hasActionErrors());
+ }
+
+ public void testAnnotatedMethodSuccess2() throws Exception {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+
+ //make it not fail
+ params.put("param2", "key2");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "annotatedMethod", extraContext);
+ proxy.execute();
+ assertFalse(((ValidationAware) proxy.getAction()).hasActionErrors());
+ }
+
+ public void testAnnotatedMethodSuccess3() throws Exception {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+
+ //make it not fail
+ params.put("param1", "key1");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "annotatedMethod", extraContext);
+ proxy.execute();
+ assertFalse(((ValidationAware) proxy.getAction()).hasActionErrors());
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ loadConfigurationProviders(new XmlConfigurationProvider("xwork-default.xml"), new XmlConfigurationProvider("xwork-test-validation.xml"));
+ }
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorModelTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorModelTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorModelTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorModelTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.Action;
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.ActionInvocation;
+import org.apache.struts2.xwork2.ActionProxy;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.test.TestBean2;
+
+import java.util.*;
+
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.TestBean;
+import org.easymock.EasyMock;
+
+
+/**
+ * VisitorFieldValidatorModelTest
+ *
+ * @author Jason Carreira
+ * Date: Mar 18, 2004 2:51:42 PM
+ */
+public class VisitorFieldValidatorModelTest extends XWorkTestCase {
+
+ protected VisitorValidatorModelAction action;
+ private Locale origLocale;
+
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ origLocale = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ action = new VisitorValidatorModelAction();
+
+ TestBean bean = action.getBean();
+ Calendar cal = new GregorianCalendar(1900, 01, 01);
+ bean.setBirth(cal.getTime());
+ bean.setCount(-1);
+
+ ActionConfig config = new ActionConfig.Builder("", "name", "").build();
+ ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class);
+ ActionProxy proxy = EasyMock.createNiceMock(ActionProxy.class);
+
+ EasyMock.expect(invocation.getProxy()).andReturn(proxy).anyTimes();
+ EasyMock.expect(invocation.getAction()).andReturn(null).anyTimes();
+ EasyMock.expect(invocation.invoke()).andReturn(Action.SUCCESS).anyTimes();
+ EasyMock.expect(proxy.getMethod()).andReturn("execute").anyTimes();
+ EasyMock.expect(proxy.getConfig()).andReturn(config).anyTimes();
+
+
+ EasyMock.replay(invocation);
+ EasyMock.replay(proxy);
+
+ ActionContext.getContext().setActionInvocation(invocation);
+
+ }
+
+ public void testModelFieldErrorsAddedWithoutFieldPrefix() throws Exception {
+ container.getInstance(ActionValidatorManager.class).validate(action, null);
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // the required string validation inherited from the VisitorValidatorTestAction
+ assertTrue(fieldErrors.containsKey("context"));
+
+ // the bean validation which is now at the top level because we set the appendPrefix to false
+ assertTrue(fieldErrors.containsKey("name"));
+
+ List<String> nameMessages = fieldErrors.get("name");
+ assertEquals(1, nameMessages.size());
+
+ String nameMessage = (String) nameMessages.get(0);
+ assertEquals("You must enter a name.", nameMessage);
+ }
+
+ public void testModelFieldErrorsAddedWithoutFieldPrefixForInterface() throws Exception {
+ TestBean origBean = action.getBean();
+ TestBean2 bean = new TestBean2();
+ bean.setBirth(origBean.getBirth());
+ bean.setCount(origBean.getCount());
+ action.setBean(bean);
+ assertTrue(action.getBean() instanceof TestBean2);
+
+ container.getInstance(ActionValidatorManager.class).validate(action, null);
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // the required string validation inherited from the VisitorValidatorTestAction
+ assertTrue(fieldErrors.containsKey("context"));
+
+ // the bean validation which is now at the top level because we set the appendPrefix to false
+ assertTrue(fieldErrors.containsKey("name"));
+
+ List<String> nameMessages = fieldErrors.get("name");
+ assertEquals(1, nameMessages.size());
+
+ String nameMessage = nameMessages.get(0);
+ assertEquals("You must enter a name.", nameMessage);
+
+ // should also have picked up validation check for DataAware interface
+ assertTrue(fieldErrors.containsKey("data"));
+
+ List<String> dataMessages = fieldErrors.get("data");
+ assertEquals(1, dataMessages.size());
+
+ String dataMessage = dataMessages.get(0);
+ assertEquals("You must enter a value for data.", dataMessage);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ ActionContext.setContext(null);
+ Locale.setDefault(origLocale);
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorFieldValidatorTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,198 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.Action;
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.ActionInvocation;
+import org.apache.struts2.xwork2.ActionProxy;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+
+import java.util.*;
+
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.TestBean;
+import org.easymock.EasyMock;
+
+
+/**
+ * VisitorFieldValidatorTest
+ *
+ * @author Jason Carreira
+ * Created Aug 4, 2003 1:26:01 AM
+ */
+public class VisitorFieldValidatorTest extends XWorkTestCase {
+
+ protected VisitorValidatorTestAction action;
+ private Locale origLocale;
+
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ origLocale = Locale.getDefault();
+ Locale.setDefault(Locale.US);
+
+ action = new VisitorValidatorTestAction();
+
+ TestBean bean = action.getBean();
+ Calendar cal = new GregorianCalendar(1900, 01, 01);
+ bean.setBirth(cal.getTime());
+ bean.setCount(-1);
+
+ ActionConfig config = new ActionConfig.Builder("", "name", "").build();
+ ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class);
+ ActionProxy proxy = EasyMock.createNiceMock(ActionProxy.class);
+
+ EasyMock.expect(invocation.getProxy()).andReturn(proxy).anyTimes();
+ EasyMock.expect(invocation.getAction()).andReturn(action).anyTimes();
+ EasyMock.expect(invocation.invoke()).andReturn(Action.SUCCESS).anyTimes();
+ EasyMock.expect(proxy.getMethod()).andReturn("execute").anyTimes();
+ EasyMock.expect(proxy.getConfig()).andReturn(config).anyTimes();
+
+
+ EasyMock.replay(invocation);
+ EasyMock.replay(proxy);
+
+ ActionContext.getContext().setActionInvocation(invocation);
+ }
+
+ public void testArrayValidation() throws Exception {
+ TestBean[] beanArray = action.getTestBeanArray();
+ TestBean testBean = beanArray[0];
+ testBean.setName("foo");
+ validate("validateArray");
+
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ //4 errors for the array, one for context
+ assertEquals(5, fieldErrors.size());
+ assertTrue(fieldErrors.containsKey("testBeanArray[1].name"));
+
+ //the error from the action should be there too
+ assertTrue(fieldErrors.containsKey("context"));
+
+ List<String> errors = fieldErrors.get("testBeanArray[1].name");
+ assertEquals(1, errors.size());
+ errors = fieldErrors.get("testBeanArray[2].name");
+ assertEquals(1, errors.size());
+ errors = fieldErrors.get("testBeanArray[3].name");
+ assertEquals(1, errors.size());
+ errors = fieldErrors.get("testBeanArray[4].name");
+ assertEquals(1, errors.size());
+ }
+
+ public void testBeanMessagesUseBeanResourceBundle() throws Exception {
+ validate("beanMessageBundle");
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+ assertTrue(fieldErrors.containsKey("bean.count"));
+
+ List<String> beanCountMessages = fieldErrors.get("bean.count");
+ assertEquals(1, beanCountMessages.size());
+
+ String beanCountMessage = beanCountMessages.get(0);
+ assertEquals("bean: Count must be between 1 and 100, current value is -1.", beanCountMessage);
+ }
+
+ public void testCollectionValidation() throws Exception {
+ List testBeanList = action.getTestBeanList();
+ TestBean testBean = (TestBean) testBeanList.get(0);
+ testBean.setName("foo");
+ validate("validateList");
+
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ //4 for the list, 1 for context
+ assertEquals(5, fieldErrors.size());
+ assertTrue(fieldErrors.containsKey("testBeanList[1].name"));
+
+ //the error from the action should be there too
+ assertTrue(fieldErrors.containsKey("context"));
+
+ List<String> errors = fieldErrors.get("testBeanList[1].name");
+ assertEquals(1, errors.size());
+ errors = fieldErrors.get("testBeanList[2].name");
+ assertEquals(1, errors.size());
+ errors = fieldErrors.get("testBeanList[3].name");
+ assertEquals(1, errors.size());
+ errors = fieldErrors.get("testBeanList[4].name");
+ assertEquals(1, errors.size());
+ }
+
+ public void testContextIsOverriddenByContextParamInValidationXML() throws Exception {
+ validate("visitorValidationAlias");
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+ assertEquals(3, fieldErrors.size());
+ assertTrue(fieldErrors.containsKey("bean.count"));
+ assertTrue(fieldErrors.containsKey("bean.name"));
+ assertTrue(!fieldErrors.containsKey("bean.birth"));
+
+ //the error from the action should be there too
+ assertTrue(fieldErrors.containsKey("context"));
+ }
+
+ public void testContextIsPropagated() throws Exception {
+ validate("visitorValidation");
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+ assertEquals(3, fieldErrors.size());
+ assertTrue(!fieldErrors.containsKey("bean.count"));
+ assertTrue(fieldErrors.containsKey("bean.name"));
+ assertTrue(fieldErrors.containsKey("bean.birth"));
+
+ //the error from the action should be there too
+ assertTrue(fieldErrors.containsKey("context"));
+ }
+
+ public void testVisitorChildValidation() throws Exception {
+ validate("visitorChildValidation");
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+ assertEquals(5, fieldErrors.size());
+ assertTrue(!fieldErrors.containsKey("bean.count"));
+ assertTrue(fieldErrors.containsKey("bean.name"));
+ assertTrue(fieldErrors.containsKey("bean.birth"));
+
+ assertTrue(fieldErrors.containsKey("bean.child.name"));
+ assertTrue(fieldErrors.containsKey("bean.child.birth"));
+
+ //the error from the action should be there too
+ assertTrue(fieldErrors.containsKey("context"));
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ ActionContext.setContext(null);
+ Locale.setDefault(origLocale);
+ }
+
+ private void validate(String context) throws ValidationException {
+ ActionContext actionContext = ActionContext.getContext();
+ actionContext.setName(context);
+ container.getInstance(ActionValidatorManager.class).validate(action, context);
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorModelAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorModelAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorModelAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorModelAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.ModelDriven;
+
+
+/**
+ * VisitorValidatorModelAction
+ *
+ * @author Jason Carreira
+ * Date: Mar 18, 2004 11:26:46 AM
+ */
+public class VisitorValidatorModelAction extends VisitorValidatorTestAction implements ModelDriven {
+
+ /**
+ * @return the model to be pushed onto the ValueStack instead of the Action itself
+ */
+ public Object getModel() {
+ return getBean();
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorTestAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorTestAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorTestAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/VisitorValidatorTestAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator;
+
+import org.apache.struts2.xwork2.ActionSupport;
+import org.apache.struts2.xwork2.TestBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * VisitorValidatorTestAction
+ *
+ * @author Jason Carreira
+ * Created Aug 4, 2003 1:00:04 AM
+ */
+public class VisitorValidatorTestAction extends ActionSupport {
+
+ private List<TestBean> testBeanList = new ArrayList<TestBean>();
+ private String context;
+ private TestBean bean = new TestBean();
+ private TestBean[] testBeanArray;
+
+
+ public VisitorValidatorTestAction() {
+ testBeanArray = new TestBean[5];
+
+ for (int i = 0; i < 5; i++) {
+ testBeanArray[i] = new TestBean();
+ testBeanList.add(new TestBean());
+ }
+ }
+
+
+ public void setBean(TestBean bean) {
+ this.bean = bean;
+ }
+
+ public TestBean getBean() {
+ return bean;
+ }
+
+ public void setContext(String context) {
+ this.context = context;
+ }
+
+ public String getContext() {
+ return context;
+ }
+
+ public void setTestBeanArray(TestBean[] testBeanArray) {
+ this.testBeanArray = testBeanArray;
+ }
+
+ public TestBean[] getTestBeanArray() {
+ return testBeanArray;
+ }
+
+ public void setTestBeanList(List<TestBean> testBeanList) {
+ this.testBeanList = testBeanList;
+ }
+
+ public List<TestBean> getTestBeanList() {
+ return testBeanList;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/validators/ValidatorSupportTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/validators/ValidatorSupportTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/validators/ValidatorSupportTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/validator/validators/ValidatorSupportTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2002-2006,2009 The Apache Software Foundation.
+ *
+ * Licensed 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.struts2.xwork2.validator.validators;
+
+import org.apache.struts2.xwork2.ActionContext;
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.apache.struts2.xwork2.ognl.OgnlValueStack;
+import org.apache.struts2.xwork2.util.ValueStack;
+import org.apache.struts2.xwork2.util.ValueStackFactory;
+import org.apache.struts2.xwork2.validator.ValidationException;
+
+/**
+ * @author tmjee
+ * @version $Date: 2011-12-02 12:24:48 +0100 (Fri, 02 Dec 2011) $ $Id: ValidatorSupportTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class ValidatorSupportTest extends XWorkTestCase {
+
+ public void testConditionalParseExpression() throws Exception {
+ ValueStack oldStack = ActionContext.getContext().getValueStack();
+ try {
+ OgnlValueStack stack = (OgnlValueStack) container.getInstance(ValueStackFactory.class).createValueStack();
+ stack.getContext().put(ActionContext.CONTAINER, container);
+ stack.getContext().put("something", "somevalue");
+ ActionContext.getContext().setValueStack(stack);
+ ValidatorSupport validator = new ValidatorSupport() {
+ public void validate(Object object) throws ValidationException {
+ }
+ };
+ validator.setValueStack(ActionContext.getContext().getValueStack());
+
+ validator.setParse(true);
+ String result1 = validator.conditionalParse("${#something}").toString();
+
+ validator.setParse(false);
+ String result2 = validator.conditionalParse("${#something}").toString();
+
+ assertEquals(result1, "somevalue");
+ assertEquals(result2, "${#something}");
+ }
+ finally {
+ ActionContext.getContext().setValueStack(oldStack);
+ }
+ }
+
+}
Modified: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/includeTest.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/includeTest.xml?rev=1209569&r1=1209568&r2=1209569&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/includeTest.xml (original)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/includeTest.xml Fri Dec 2 16:33:03 2011
@@ -5,6 +5,6 @@
<xwork>
<package name="includeTest" extends="default" namespace="includeTest">
- <action name="includeTest" class="com.opensymphony.xwork2.SimpleAction"></action>
+ <action name="includeTest" class="org.apache.struts2.xwork2.SimpleAction"></action>
</package>
</xwork>
Modified: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/log4j.properties?rev=1209569&r1=1209568&r2=1209569&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/log4j.properties (original)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/log4j.properties Fri Dec 2 16:33:03 2011
@@ -7,11 +7,11 @@ log4j.appender.stdout.layout = org.apach
log4j.appender.stdout.layout.ConversionPattern = %d{ISO8601} %-5p [%F:%L] : %m%n
# set to info to let the code be executed when doing unit test for this interceptor
-log4j.category.com.opensymphony.xwork2.interceptor.LoggingInterceptor=INFO
-log4j.category.com.opensymphony.xwork2.interceptor.TimerInterceptor=INFO
+log4j.category.org.apache.struts2.xwork2.interceptor.LoggingInterceptor=INFO
+log4j.category.org.apache.struts2.xwork2.interceptor.TimerInterceptor=INFO
# set to debug to let the code be executed when doing unit test for this interceptor
-log4j.category.com.opensymphony.xwork2.interceptor.ParametersInterceptor=DEBUG
+log4j.category.org.apache.struts2.xwork2.interceptor.ParametersInterceptor=DEBUG
# set to debug for testing timer interceptor with custom log category
log4j.category.com.mycompany.myapp.actiontiming=DEBUG
Modified: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/my-validators.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/my-validators.xml?rev=1209569&r1=1209568&r2=1209569&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/my-validators.xml (original)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/my-validators.xml Fri Dec 2 16:33:03 2011
@@ -3,5 +3,5 @@
"-//Apache Struts//XWork Validator Config 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
<validators>
- <validator name="requiredAdditional" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
+ <validator name="requiredAdditional" class="org.apache.struts2.xwork2.validator.validators.RequiredFieldValidator"/>
</validators>
Modified: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/myOther-validators.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/myOther-validators.xml?rev=1209569&r1=1209568&r2=1209569&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/myOther-validators.xml (original)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/myOther-validators.xml Fri Dec 2 16:33:03 2011
@@ -3,5 +3,5 @@
"-//Apache Struts//XWork Validator Config 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
<validators>
- <validator name="requiredAnother" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
+ <validator name="requiredAnother" class="org.apache.struts2.xwork2.validator.validators.RequiredFieldValidator"/>
</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ActionSupportTest$MyActionSupport_da.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ActionSupportTest%24MyActionSupport_da.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ActionSupportTest$MyActionSupport_da.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ActionSupportTest$MyActionSupport_da.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,8 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+hello=Hello World
+hello.0=Hello World {0}
+hello.1=Hello World. This is {0} speaking {1}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/AnnotatedTestBean.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/AnnotatedTestBean.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/AnnotatedTestBean.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/AnnotatedTestBean.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,6 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+invalid.count=Count must be between ${min} and ${max}, current value is ${count}.
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/DefaultTextProviderTest_en_CA.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/DefaultTextProviderTest_en_CA.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/DefaultTextProviderTest_en_CA.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/DefaultTextProviderTest_en_CA.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,8 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+hello=Hello World
+hello.0=Hello World {0}
+hello.1=Hello World. This is {0} speaking {1}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,13 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="count">
+ <field-validator type="required">
+ <message>You must enter a value for count.</message>
+ </field-validator>
+ <field-validator type="int">
+ <param name="min">1</param>
+ <param name="max">10</param>
+ <message>count must be between ${min} and ${max}, current value is ${count}.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAction.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1 @@
+invalid.fieldvalue.birth=Invalid date for birth.
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,6 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+invalid.fieldvalue.birth=Invalid date for birth.
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-some-alias-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-some-alias-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-some-alias-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-some-alias-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,13 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="baz">
+ <field-validator type="required">
+ <message>You must enter a value for baz.</message>
+ </field-validator>
+ <field-validator type="int">
+ <param name="min">2</param>
+ <param name="max">4</param>
+ <message>baz out of range.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-subproperty-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-subproperty-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-subproperty-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-subproperty-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,18 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="bean.name">
+ <field-validator type="required">
+ <message>You must enter a name for the bean.</message>
+ </field-validator>
+ </field>
+ <field name="bean.count">
+ <field-validator type="required">
+ <message>You must have a count for the bean.</message>
+ </field-validator>
+ <field-validator type="int">
+ <param name="min">0</param>
+ <param name="max">10</param>
+ <message>bean.count out of range.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,58 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="bar">
+ <field-validator type="required">
+ <message>You must enter a value for bar.</message>
+ </field-validator>
+ <field-validator type="int">
+ <param name="min">6</param>
+ <param name="max">10</param>
+ <message>bar must be between ${min} and ${max}, current value is ${bar}.</message>
+ </field-validator>
+ </field>
+ <field name="percentage">
+ <field-validator type="double">
+ <param name="minExclusive">0.1</param>
+ <param name="maxExclusive">10.1</param>
+ <message>percentage must be between ${minExclusive} and ${maxExclusive}, current value is ${percentage}.</message>
+ </field-validator>
+ </field>
+ <field name="date">
+ <field-validator type="date">
+ <param name="min">12/22/2002</param>
+ <param name="max">12/25/2002</param>
+ <message>The date must be between 12-22-2002 and 12-25-2002.</message>
+ </field-validator>
+ </field>
+ <field name="foo">
+ <field-validator type="int">
+ <param name="min">0</param>
+ <param name="max">100</param>
+ <message key="foo.range">Could not find foo.range!</message>
+ </field-validator>
+ </field>
+ <field name="baz">
+ <field-validator type="int">
+ <param name="min">0</param>
+ <message key="baz.range">Could not find baz.range!</message>
+ </field-validator>
+ </field>
+ <field name="longFoo">
+ <field-validator type="long">
+ <param name="min">0</param>
+ <param name="max">100</param>
+ <message key="foo.range">Could not find foo.range!</message>
+ </field-validator>
+ </field>
+ <field name="shortFoo">
+ <field-validator type="short">
+ <param name="min">0</param>
+ <param name="max">100</param>
+ <message key="foo.range">Could not find foo.range!</message>
+ </field-validator>
+ </field>
+ <validator type="expression">
+ <param name="expression">foo > bar</param>
+ <message>Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.</message>
+ </validator>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validationAlias-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validationAlias-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validationAlias-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction-validationAlias-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,13 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="baz">
+ <field-validator type="required">
+ <message>You must enter a value for baz.</message>
+ </field-validator>
+ <field-validator type="int">
+ <param name="min">2</param>
+ <param name="max">4</param>
+ <message>baz out of range.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,3 @@
+foo.range=Foo Range Message
+baz.range=${getText(fieldName)} must be greater than ${min}
+baz=Baz Field
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction_de.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction_de.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction_de.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction_de.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1 @@
+foo.range=I don''t know German
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction_en.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAction_en.properties?rev=1209569&view=auto
==============================================================================
(empty)
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,8 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+foo.range=Foo Range Message
+baz.range=${getText(fieldName)} must be greater than ${min}
+baz=Baz Field
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_de.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_de.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_de.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_de.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,6 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+foo.range=I don''t know German
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_en.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_en.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_en.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/SimpleAnnotationAction_en.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,5 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-anotherContext-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-anotherContext-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-anotherContext-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-anotherContext-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,10 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="count">
+ <field-validator type="int">
+ <param name="min">1</param>
+ <param name="max">100</param>
+ <message>Count must be between ${min} and ${max}, current value is ${count}.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-badtest-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-badtest-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-badtest-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-badtest-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,8 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="name">
+ <field-validator type="requiredstring" foo="bar">
+ <message>You must enter a name.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-beanMessageBundle-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-beanMessageBundle-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-beanMessageBundle-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-beanMessageBundle-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,15 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
+<validators>
+ <field name="count">
+ <field-validator type="int" short-circuit="true">
+ <param name="min">1</param>
+ <param name="max">100</param>
+ <message key="invalid.count">Invalid Count!</message>
+ </field-validator>
+ <field-validator type="int">
+ <param name="min">20</param>
+ <param name="max">80</param>
+ <message key="invalid.count.bad">Smaller Invalid Count: ${count}</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-expressionValidation-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-expressionValidation-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-expressionValidation-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-expressionValidation-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,9 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="name">
+ <field-validator type="fieldexpression">
+ <param name="expression">name.length() > 5</param>
+ <message>Name must be greater than 5 characters, it is currently '${name}'</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,8 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="name">
+ <field-validator type="requiredstring">
+ <message>You must enter a name.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorChildValidation-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorChildValidation-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorChildValidation-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorChildValidation-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,14 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="birth">
+ <field-validator type="date">
+ <param name="min">01/01/1970</param>
+ <message>You must have been born after 1970.</message>
+ </field-validator>
+ </field>
+ <field name="child">
+ <field-validator type="visitor">
+ <message>child bean: </message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorValidation-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorValidation-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorValidation-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean-visitorValidation-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,9 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.dtd">
+<validators>
+ <field name="birth">
+ <field-validator type="date">
+ <param name="min">01/01/1970</param>
+ <message>You must have been born after 1970.</message>
+ </field-validator>
+ </field>
+</validators>
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestBean.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1 @@
+invalid.count=Count must be between ${min} and ${max}, current value is ${count}.
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestChildBean-validation.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestChildBean-validation.xml?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestChildBean-validation.xml (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/resources/org/apache/struts2/xwork2/TestChildBean-validation.xml Fri Dec 2 16:33:03 2011
@@ -0,0 +1,18 @@
+<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
+<validators>
+ <field name="name">
+ <field-validator type="requiredstring" short-circuit="true">
+ <message>You must enter a name.</message>
+ </field-validator>
+ <field-validator type="fieldexpression">
+ <param name="expression">name == 'test'</param>
+ <message>Name is invalid</message>
+ </field-validator>
+ </field>
+ <field name="birth">
+ <field-validator type="date">
+ <param name="min">01/01/1970</param>
+ <message>You must have been born after 1970.</message>
+ </field-validator>
+ </field>
+</validators>