moving unit tests from .testsuite -> .core, .beans, .web, .web.portlet, .web.servlet

This commit is contained in:
Chris Beams 2008-12-17 18:45:41 +00:00
parent 285be534df
commit 93e30a4fc5
138 changed files with 2932 additions and 966 deletions

View File

@ -14,50 +14,24 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.util.comparator; package org.springframework.beans.support;
import java.util.Comparator; import static org.junit.Assert.assertTrue;
import junit.framework.TestCase; import org.junit.Test;
import org.springframework.util.comparator.CompoundComparator;
import org.springframework.beans.support.PropertyComparator;
/** /**
* Unit tests for {@link PropertyComparator}
*
* @see org.springframework.util.comparator.ComparatorTests
*
* @author Keith Donald * @author Keith Donald
* @author Chris Beams
*/ */
public class ComparatorTests extends TestCase { public class PropertyComparatorTests {
public void testComparableComparator() {
Comparator c = new ComparableComparator();
String s1 = "abc";
String s2 = "cde";
assertTrue(c.compare(s1, s2) < 0);
}
public void testComparableComparatorIllegalArgs() {
Comparator c = new ComparableComparator();
Object o1 = new Object();
Object o2 = new Object();
try {
c.compare(o1, o2);
}
catch (ClassCastException e) {
return;
}
fail("Comparator should have thrown a cce");
}
public void testBooleanComparatorTrueLow() {
Comparator c = BooleanComparator.TRUE_LOW;
assertTrue(c.compare(new Boolean(true), new Boolean(false)) < 0);
}
public void testBooleanComparatorTrueHigh() {
Comparator c = BooleanComparator.TRUE_HIGH;
assertTrue(c.compare(new Boolean(true), new Boolean(false)) > 0);
assertTrue(c.compare(Boolean.TRUE, Boolean.TRUE) == 0);
}
@Test
public void testPropertyComparator() { public void testPropertyComparator() {
Dog dog = new Dog(); Dog dog = new Dog();
dog.setNickName("mace"); dog.setNickName("mace");
@ -71,6 +45,7 @@ public class ComparatorTests extends TestCase {
assertTrue(c.compare(dog2, dog) < 0); assertTrue(c.compare(dog2, dog) < 0);
} }
@Test
public void testPropertyComparatorNulls() { public void testPropertyComparatorNulls() {
Dog dog = new Dog(); Dog dog = new Dog();
Dog dog2 = new Dog(); Dog dog2 = new Dog();
@ -78,30 +53,10 @@ public class ComparatorTests extends TestCase {
assertTrue(c.compare(dog, dog2) == 0); assertTrue(c.compare(dog, dog2) == 0);
} }
public void testNullSafeComparatorNullsLow() { @SuppressWarnings("unchecked")
Comparator c = NullSafeComparator.NULLS_LOW; @Test
assertTrue(c.compare(null, "boo") < 0);
}
public void testNullSafeComparatorNullsHigh() {
Comparator c = NullSafeComparator.NULLS_HIGH;
assertTrue(c.compare(null, "boo") > 0);
assertTrue(c.compare(null, null) == 0);
}
public void testCompoundComparatorEmpty() {
Comparator c = new CompoundComparator();
try {
c.compare("foo", "bar");
}
catch (IllegalStateException e) {
return;
}
fail("illegal state should've been thrown on empty list");
}
public void testCompoundComparator() { public void testCompoundComparator() {
CompoundComparator c = new CompoundComparator(); CompoundComparator<Dog> c = new CompoundComparator<Dog>();
c.addComparator(new PropertyComparator("lastName", false, true)); c.addComparator(new PropertyComparator("lastName", false, true));
Dog dog1 = new Dog(); Dog dog1 = new Dog();
@ -121,8 +76,10 @@ public class ComparatorTests extends TestCase {
assertTrue(c.compare(dog2, dog1) > 0); assertTrue(c.compare(dog2, dog1) > 0);
} }
@SuppressWarnings("unchecked")
@Test
public void testCompoundComparatorInvert() { public void testCompoundComparatorInvert() {
CompoundComparator c = new CompoundComparator(); CompoundComparator<Dog> c = new CompoundComparator<Dog>();
c.addComparator(new PropertyComparator("lastName", false, true)); c.addComparator(new PropertyComparator("lastName", false, true));
c.addComparator(new PropertyComparator("firstName", false, true)); c.addComparator(new PropertyComparator("firstName", false, true));
Dog dog1 = new Dog(); Dog dog1 = new Dog();
@ -139,7 +96,7 @@ public class ComparatorTests extends TestCase {
} }
private static class Dog implements Comparable { private static class Dog implements Comparable<Object> {
private String nickName; private String nickName;

View File

@ -16,6 +16,8 @@
package org.springframework.ui; package org.springframework.ui;
import static org.junit.Assert.*;
import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@ -28,20 +30,20 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import junit.framework.TestCase; import org.junit.Test;
import org.springframework.aop.framework.ProxyFactory; import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.TestBean; import org.springframework.beans.TestBean;
import org.springframework.test.AssertThrows;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
/** /**
* @author Rick Evans * @author Rick Evans
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Chris Beams
*/ */
public final class ModelMapTests extends TestCase { public final class ModelMapTests {
@Test
public void testNoArgCtorYieldsEmptyModel() throws Exception { public void testNoArgCtorYieldsEmptyModel() throws Exception {
assertEquals(0, new ModelMap().size()); assertEquals(0, new ModelMap().size());
} }
@ -49,6 +51,7 @@ public final class ModelMapTests extends TestCase {
/* /*
* SPR-2185 - Null model assertion causes backwards compatibility issue * SPR-2185 - Null model assertion causes backwards compatibility issue
*/ */
@Test
public void testAddNullObjectWithExplicitKey() throws Exception { public void testAddNullObjectWithExplicitKey() throws Exception {
ModelMap model = new ModelMap(); ModelMap model = new ModelMap();
model.addAttribute("foo", null); model.addAttribute("foo", null);
@ -59,12 +62,14 @@ public final class ModelMapTests extends TestCase {
/* /*
* SPR-2185 - Null model assertion causes backwards compatibility issue * SPR-2185 - Null model assertion causes backwards compatibility issue
*/ */
@Test
public void testAddNullObjectViaCtorWithExplicitKey() throws Exception { public void testAddNullObjectViaCtorWithExplicitKey() throws Exception {
ModelMap model = new ModelMap("foo", null); ModelMap model = new ModelMap("foo", null);
assertTrue(model.containsKey("foo")); assertTrue(model.containsKey("foo"));
assertNull(model.get("foo")); assertNull(model.get("foo"));
} }
@Test
public void testNamedObjectCtor() throws Exception { public void testNamedObjectCtor() throws Exception {
ModelMap model = new ModelMap("foo", "bing"); ModelMap model = new ModelMap("foo", "bing");
assertEquals(1, model.size()); assertEquals(1, model.size());
@ -73,6 +78,7 @@ public final class ModelMapTests extends TestCase {
assertEquals("bing", bing); assertEquals("bing", bing);
} }
@Test
public void testUnnamedCtorScalar() throws Exception { public void testUnnamedCtorScalar() throws Exception {
ModelMap model = new ModelMap("foo", "bing"); ModelMap model = new ModelMap("foo", "bing");
assertEquals(1, model.size()); assertEquals(1, model.size());
@ -81,6 +87,7 @@ public final class ModelMapTests extends TestCase {
assertEquals("bing", bing); assertEquals("bing", bing);
} }
@Test
public void testOneArgCtorWithScalar() throws Exception { public void testOneArgCtorWithScalar() throws Exception {
ModelMap model = new ModelMap("bing"); ModelMap model = new ModelMap("bing");
assertEquals(1, model.size()); assertEquals(1, model.size());
@ -89,14 +96,13 @@ public final class ModelMapTests extends TestCase {
assertEquals("bing", string); assertEquals("bing", string);
} }
public void testOneArgCtorWithNull() throws Exception { @Test(expected=IllegalArgumentException.class)
new AssertThrows(IllegalArgumentException.class, "Null model arguments added without a name being explicitly supplied are not allowed.") { public void testOneArgCtorWithNull() {
public void test() throws Exception { //Null model arguments added without a name being explicitly supplied are not allowed
new ModelMap(null); new ModelMap(null);
}
}.runTest();
} }
@Test
public void testOneArgCtorWithCollection() throws Exception { public void testOneArgCtorWithCollection() throws Exception {
ModelMap model = new ModelMap(new String[]{"foo", "boing"}); ModelMap model = new ModelMap(new String[]{"foo", "boing"});
assertEquals(1, model.size()); assertEquals(1, model.size());
@ -107,21 +113,21 @@ public final class ModelMapTests extends TestCase {
assertEquals("boing", strings[1]); assertEquals("boing", strings[1]);
} }
@Test
public void testOneArgCtorWithEmptyCollection() throws Exception { public void testOneArgCtorWithEmptyCollection() throws Exception {
ModelMap model = new ModelMap(new HashSet()); ModelMap model = new ModelMap(new HashSet<Object>());
// must not add if collection is empty... // must not add if collection is empty...
assertEquals(0, model.size()); assertEquals(0, model.size());
} }
@Test(expected=IllegalArgumentException.class)
public void testAddObjectWithNull() throws Exception { public void testAddObjectWithNull() throws Exception {
new AssertThrows(IllegalArgumentException.class, "Null model arguments added without a name being explicitly supplied are not allowed.") { // Null model arguments added without a name being explicitly supplied are not allowed
public void test() throws Exception { ModelMap model = new ModelMap();
ModelMap model = new ModelMap(); model.addAttribute(null);
model.addAttribute(null);
}
}.runTest();
} }
@Test
public void testAddObjectWithEmptyArray() throws Exception { public void testAddObjectWithEmptyArray() throws Exception {
ModelMap model = new ModelMap(new int[]{}); ModelMap model = new ModelMap(new int[]{});
assertEquals(1, model.size()); assertEquals(1, model.size());
@ -130,32 +136,33 @@ public final class ModelMapTests extends TestCase {
assertEquals(0, ints.length); assertEquals(0, ints.length);
} }
@Test
public void testAddAllObjectsWithNullMap() throws Exception { public void testAddAllObjectsWithNullMap() throws Exception {
ModelMap model = new ModelMap(); ModelMap model = new ModelMap();
model.addAllAttributes((Map) null); model.addAllAttributes((Map<String, ?>) null);
assertEquals(0, model.size()); assertEquals(0, model.size());
} }
@Test
public void testAddAllObjectsWithNullCollection() throws Exception { public void testAddAllObjectsWithNullCollection() throws Exception {
ModelMap model = new ModelMap(); ModelMap model = new ModelMap();
model.addAllAttributes((Collection) null); model.addAllAttributes((Collection<Object>) null);
assertEquals(0, model.size()); assertEquals(0, model.size());
} }
@Test(expected=IllegalArgumentException.class)
public void testAddAllObjectsWithSparseArrayList() throws Exception { public void testAddAllObjectsWithSparseArrayList() throws Exception {
new AssertThrows(IllegalArgumentException.class, "Null model arguments added without a name being explicitly supplied are not allowed.") { // Null model arguments added without a name being explicitly supplied are not allowed
public void test() throws Exception { ModelMap model = new ModelMap();
ModelMap model = new ModelMap(); ArrayList<String> list = new ArrayList<String>();
ArrayList list = new ArrayList(); list.add("bing");
list.add("bing"); list.add(null);
list.add(null); model.addAllAttributes(list);
model.addAllAttributes(list);
}
}.runTest();
} }
@Test
public void testAddMap() throws Exception { public void testAddMap() throws Exception {
Map map = new HashMap(); Map<String, String> map = new HashMap<String, String>();
map.put("one", "one-value"); map.put("one", "one-value");
map.put("two", "two-value"); map.put("two", "two-value");
ModelMap model = new ModelMap(); ModelMap model = new ModelMap();
@ -165,6 +172,7 @@ public final class ModelMapTests extends TestCase {
assertTrue(model.containsKey(key)); assertTrue(model.containsKey(key));
} }
@Test
public void testAddObjectNoKeyOfSameTypeOverrides() throws Exception { public void testAddObjectNoKeyOfSameTypeOverrides() throws Exception {
ModelMap model = new ModelMap(); ModelMap model = new ModelMap();
model.addAttribute("foo"); model.addAttribute("foo");
@ -174,8 +182,9 @@ public final class ModelMapTests extends TestCase {
assertEquals("bar", bar); assertEquals("bar", bar);
} }
@Test
public void testAddListOfTheSameObjects() throws Exception { public void testAddListOfTheSameObjects() throws Exception {
List beans = new ArrayList(); List<TestBean> beans = new ArrayList<TestBean>();
beans.add(new TestBean("one")); beans.add(new TestBean("one"));
beans.add(new TestBean("two")); beans.add(new TestBean("two"));
beans.add(new TestBean("three")); beans.add(new TestBean("three"));
@ -184,8 +193,9 @@ public final class ModelMapTests extends TestCase {
assertEquals(1, model.size()); assertEquals(1, model.size());
} }
@Test
public void testMergeMapWithOverriding() throws Exception { public void testMergeMapWithOverriding() throws Exception {
Map beans = new HashMap(); Map<String, TestBean> beans = new HashMap<String, TestBean>();
beans.put("one", new TestBean("one")); beans.put("one", new TestBean("one"));
beans.put("two", new TestBean("two")); beans.put("two", new TestBean("two"));
beans.put("three", new TestBean("three")); beans.put("three", new TestBean("three"));
@ -196,6 +206,7 @@ public final class ModelMapTests extends TestCase {
assertEquals("oneOld", ((TestBean) model.get("one")).getName()); assertEquals("oneOld", ((TestBean) model.get("one")).getName());
} }
@Test
public void testInnerClass() throws Exception { public void testInnerClass() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
SomeInnerClass inner = new SomeInnerClass(); SomeInnerClass inner = new SomeInnerClass();
@ -203,6 +214,7 @@ public final class ModelMapTests extends TestCase {
assertSame(inner, map.get("someInnerClass")); assertSame(inner, map.get("someInnerClass"));
} }
@Test
public void testInnerClassWithTwoUpperCaseLetters() throws Exception { public void testInnerClassWithTwoUpperCaseLetters() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
UKInnerClass inner = new UKInnerClass(); UKInnerClass inner = new UKInnerClass();
@ -210,6 +222,7 @@ public final class ModelMapTests extends TestCase {
assertSame(inner, map.get("UKInnerClass")); assertSame(inner, map.get("UKInnerClass"));
} }
@Test
public void testAopCglibProxy() throws Exception { public void testAopCglibProxy() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
ProxyFactory factory = new ProxyFactory(); ProxyFactory factory = new ProxyFactory();
@ -221,10 +234,11 @@ public final class ModelMapTests extends TestCase {
assertEquals(date, map.get("date")); assertEquals(date, map.get("date"));
} }
@Test
public void testAopJdkProxy() throws Exception { public void testAopJdkProxy() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
ProxyFactory factory = new ProxyFactory(); ProxyFactory factory = new ProxyFactory();
Map target = new HashMap(); Map<?, ?> target = new HashMap<Object, Object>();
factory.setTarget(target); factory.setTarget(target);
factory.addInterface(Map.class); factory.addInterface(Map.class);
Object proxy = factory.getProxy(); Object proxy = factory.getProxy();
@ -232,9 +246,10 @@ public final class ModelMapTests extends TestCase {
assertSame(proxy, map.get("map")); assertSame(proxy, map.get("map"));
} }
@Test
public void testAopJdkProxyWithMultipleInterfaces() throws Exception { public void testAopJdkProxyWithMultipleInterfaces() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
Map target = new HashMap(); Map<?, ?> target = new HashMap<Object, Object>();
ProxyFactory factory = new ProxyFactory(); ProxyFactory factory = new ProxyFactory();
factory.setTarget(target); factory.setTarget(target);
factory.addInterface(Serializable.class); factory.addInterface(Serializable.class);
@ -246,15 +261,17 @@ public final class ModelMapTests extends TestCase {
assertSame(proxy, map.get("map")); assertSame(proxy, map.get("map"));
} }
@Test
public void testAopJdkProxyWithDetectedInterfaces() throws Exception { public void testAopJdkProxyWithDetectedInterfaces() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
Map target = new HashMap(); Map<?, ?> target = new HashMap<Object, Object>();
ProxyFactory factory = new ProxyFactory(target); ProxyFactory factory = new ProxyFactory(target);
Object proxy = factory.getProxy(); Object proxy = factory.getProxy();
map.addAttribute(proxy); map.addAttribute(proxy);
assertSame(proxy, map.get("map")); assertSame(proxy, map.get("map"));
} }
@Test
public void testRawJdkProxy() throws Exception { public void testRawJdkProxy() throws Exception {
ModelMap map = new ModelMap(); ModelMap map = new ModelMap();
Object proxy = Proxy.newProxyInstance( Object proxy = Proxy.newProxyInstance(

View File

@ -16,37 +16,35 @@
package org.springframework.validation; package org.springframework.validation;
import junit.framework.TestCase; import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.beans.TestBean; import org.springframework.beans.TestBean;
import org.springframework.test.AssertThrows;
/** /**
* Unit tests for {@link ValidationUtils}.
*
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Rick Evans * @author Rick Evans
* @author Chris Beams
* @since 08.10.2004 * @since 08.10.2004
*/ */
public class ValidationUtilsTests extends TestCase { public class ValidationUtilsTests {
@Test(expected=IllegalArgumentException.class)
public void testInvokeValidatorWithNullValidator() throws Exception { public void testInvokeValidatorWithNullValidator() throws Exception {
new AssertThrows(IllegalArgumentException.class) { TestBean tb = new TestBean();
public void test() throws Exception { Errors errors = new BeanPropertyBindingResult(tb, "tb");
TestBean tb = new TestBean(); ValidationUtils.invokeValidator(null, tb, errors);
Errors errors = new BeanPropertyBindingResult(tb, "tb");
ValidationUtils.invokeValidator(null, tb, errors);
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testInvokeValidatorWithNullErrors() throws Exception { public void testInvokeValidatorWithNullErrors() throws Exception {
new AssertThrows(IllegalArgumentException.class) { TestBean tb = new TestBean();
public void test() throws Exception { ValidationUtils.invokeValidator(new EmptyValidator(), tb, null);
TestBean tb = new TestBean();
ValidationUtils.invokeValidator(new EmptyValidator(), tb, null);
}
}.runTest();
} }
@Test
public void testInvokeValidatorSunnyDay() throws Exception { public void testInvokeValidatorSunnyDay() throws Exception {
TestBean tb = new TestBean(); TestBean tb = new TestBean();
Errors errors = new BeanPropertyBindingResult(tb, "tb"); Errors errors = new BeanPropertyBindingResult(tb, "tb");
@ -55,6 +53,7 @@ public class ValidationUtilsTests extends TestCase {
assertEquals("EMPTY", errors.getFieldError("name").getCode()); assertEquals("EMPTY", errors.getFieldError("name").getCode());
} }
@Test
public void testValidationUtilsSunnyDay() throws Exception { public void testValidationUtilsSunnyDay() throws Exception {
TestBean tb = new TestBean(""); TestBean tb = new TestBean("");
@ -70,6 +69,7 @@ public class ValidationUtilsTests extends TestCase {
assertFalse(errors.hasFieldErrors("name")); assertFalse(errors.hasFieldErrors("name"));
} }
@Test
public void testValidationUtilsNull() throws Exception { public void testValidationUtilsNull() throws Exception {
TestBean tb = new TestBean(); TestBean tb = new TestBean();
Errors errors = new BeanPropertyBindingResult(tb, "tb"); Errors errors = new BeanPropertyBindingResult(tb, "tb");
@ -79,6 +79,7 @@ public class ValidationUtilsTests extends TestCase {
assertEquals("EMPTY", errors.getFieldError("name").getCode()); assertEquals("EMPTY", errors.getFieldError("name").getCode());
} }
@Test
public void testValidationUtilsEmpty() throws Exception { public void testValidationUtilsEmpty() throws Exception {
TestBean tb = new TestBean(""); TestBean tb = new TestBean("");
Errors errors = new BeanPropertyBindingResult(tb, "tb"); Errors errors = new BeanPropertyBindingResult(tb, "tb");
@ -88,6 +89,7 @@ public class ValidationUtilsTests extends TestCase {
assertEquals("EMPTY", errors.getFieldError("name").getCode()); assertEquals("EMPTY", errors.getFieldError("name").getCode());
} }
@Test
public void testValidationUtilsEmptyVariants() { public void testValidationUtilsEmptyVariants() {
TestBean tb = new TestBean(); TestBean tb = new TestBean();
@ -105,6 +107,7 @@ public class ValidationUtilsTests extends TestCase {
assertEquals("msg", errors.getFieldError("name").getDefaultMessage()); assertEquals("msg", errors.getFieldError("name").getDefaultMessage());
} }
@Test
public void testValidationUtilsEmptyOrWhitespace() throws Exception { public void testValidationUtilsEmptyOrWhitespace() throws Exception {
TestBean tb = new TestBean(); TestBean tb = new TestBean();
Validator testValidator = new EmptyOrWhitespaceValidator(); Validator testValidator = new EmptyOrWhitespaceValidator();
@ -136,6 +139,7 @@ public class ValidationUtilsTests extends TestCase {
assertFalse(errors.hasFieldErrors("name")); assertFalse(errors.hasFieldErrors("name"));
} }
@Test
public void testValidationUtilsEmptyOrWhitespaceVariants() { public void testValidationUtilsEmptyOrWhitespaceVariants() {
TestBean tb = new TestBean(); TestBean tb = new TestBean();
tb.setName(" "); tb.setName(" ");

View File

@ -0,0 +1,82 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.beans;
import java.io.Serializable;
/**
* @author Juergen Hoeller
* @since 21.08.2003
*/
public class DerivedTestBean extends TestBean implements Serializable {
private String beanName;
private boolean initialized;
private boolean destroyed;
public DerivedTestBean() {
}
public DerivedTestBean(String[] names) {
if (names == null || names.length < 2) {
throw new IllegalArgumentException("Invalid names array");
}
setName(names[0]);
setBeanName(names[1]);
}
public static DerivedTestBean create(String[] names) {
return new DerivedTestBean(names);
}
public void setBeanName(String beanName) {
if (this.beanName == null || beanName == null) {
this.beanName = beanName;
}
}
public String getBeanName() {
return beanName;
}
public void setSpouseRef(String name) {
setSpouse(new TestBean(name));
}
public void initialize() {
this.initialized = true;
}
public boolean wasInitialized() {
return initialized;
}
public void destroy() {
this.destroyed = true;
}
public boolean wasDestroyed() {
return destroyed;
}
}

View File

@ -28,7 +28,7 @@ import java.util.List;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.springframework.aop.framework.ProxyFactory; import org.junit.Ignore;
import org.springframework.beans.DerivedTestBean; import org.springframework.beans.DerivedTestBean;
import org.springframework.beans.IOther; import org.springframework.beans.IOther;
import org.springframework.beans.ITestBean; import org.springframework.beans.ITestBean;
@ -129,14 +129,15 @@ public class ClassUtilsTests extends TestCase {
assertEquals("Class name did not match", "ClassUtilsTests.InnerClass", className); assertEquals("Class name did not match", "ClassUtilsTests.InnerClass", className);
} }
public void testGetShortNameForCglibClass() { @Ignore
TestBean tb = new TestBean(); public void ignoreTestGetShortNameForCglibClass() {
ProxyFactory pf = new ProxyFactory(); // TestBean tb = new TestBean();
pf.setTarget(tb); // ProxyFactory pf = new ProxyFactory();
pf.setProxyTargetClass(true); // pf.setTarget(tb);
TestBean proxy = (TestBean) pf.getProxy(); // pf.setProxyTargetClass(true);
String className = ClassUtils.getShortName(proxy.getClass()); // TestBean proxy = (TestBean) pf.getProxy();
assertEquals("Class name did not match", "TestBean", className); // String className = ClassUtils.getShortName(proxy.getClass());
// assertEquals("Class name did not match", "TestBean", className);
} }
public void testGetShortNameAsProperty() { public void testGetShortNameAsProperty() {
@ -253,7 +254,7 @@ public class ClassUtilsTests extends TestCase {
public void testGetAllInterfaces() { public void testGetAllInterfaces() {
DerivedTestBean testBean = new DerivedTestBean(); DerivedTestBean testBean = new DerivedTestBean();
List ifcs = Arrays.asList(ClassUtils.getAllInterfaces(testBean)); List ifcs = Arrays.asList(ClassUtils.getAllInterfaces(testBean));
assertEquals("Correct number of interfaces", 7, ifcs.size()); assertEquals("Correct number of interfaces", 4, ifcs.size());
assertTrue("Contains Serializable", ifcs.contains(Serializable.class)); assertTrue("Contains Serializable", ifcs.contains(Serializable.class));
assertTrue("Contains ITestBean", ifcs.contains(ITestBean.class)); assertTrue("Contains ITestBean", ifcs.contains(ITestBean.class));
assertTrue("Contains IOther", ifcs.contains(IOther.class)); assertTrue("Contains IOther", ifcs.contains(IOther.class));

View File

@ -0,0 +1,135 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.util.comparator;
import static org.junit.Assert.*;
import java.util.Comparator;
import org.junit.Test;
/**
* Unit tests for {@link PropertyComparator}
*
* @see org.springframework.beans.support.PropertyComparatorTests
*
* @author Keith Donald
* @author Chris Beams
*/
public class ComparatorTests {
@Test
public void testComparableComparator() {
Comparator<String> c = new ComparableComparator<String>();
String s1 = "abc";
String s2 = "cde";
assertTrue(c.compare(s1, s2) < 0);
}
@SuppressWarnings("unchecked")
@Test
public void testComparableComparatorIllegalArgs() {
Comparator c = new ComparableComparator();
Object o1 = new Object();
Object o2 = new Object();
try {
c.compare(o1, o2);
}
catch (ClassCastException e) {
return;
}
fail("Comparator should have thrown a cce");
}
@Test
public void testBooleanComparatorTrueLow() {
Comparator<Boolean> c = BooleanComparator.TRUE_LOW;
assertTrue(c.compare(new Boolean(true), new Boolean(false)) < 0);
}
@Test
public void testBooleanComparatorTrueHigh() {
Comparator<Boolean> c = BooleanComparator.TRUE_HIGH;
assertTrue(c.compare(new Boolean(true), new Boolean(false)) > 0);
assertTrue(c.compare(Boolean.TRUE, Boolean.TRUE) == 0);
}
@SuppressWarnings("unchecked")
@Test
public void testNullSafeComparatorNullsLow() {
Comparator<String> c = NullSafeComparator.NULLS_LOW;
assertTrue(c.compare(null, "boo") < 0);
}
@SuppressWarnings("unchecked")
@Test
public void testNullSafeComparatorNullsHigh() {
Comparator<String> c = NullSafeComparator.NULLS_HIGH;
assertTrue(c.compare(null, "boo") > 0);
assertTrue(c.compare(null, null) == 0);
}
@Test
public void testCompoundComparatorEmpty() {
Comparator<String> c = new CompoundComparator<String>();
try {
c.compare("foo", "bar");
}
catch (IllegalStateException e) {
return;
}
fail("illegal state should've been thrown on empty list");
}
private static class Dog implements Comparable<Object> {
private String nickName;
private String firstName;
private String lastName;
public int compareTo(Object o) {
return nickName.compareTo(((Dog)o).nickName);
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
}

View File

@ -1 +0,0 @@
typeMismatch=Field {0} did not have correct type

View File

@ -1,2 +0,0 @@
typeMismatch=Field {0} did not have correct type
age=Age

View File

@ -1,2 +0,0 @@
typeMismatch=Field {0} did not have correct type
person.age=Person Age

View File

@ -1,461 +0,0 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.web.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.BeansException;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.ManagedList;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ApplicationObjectSupport;
import org.springframework.core.Ordered;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.ServletRequestBindingException;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
import org.springframework.web.context.support.RequestHandledEvent;
import org.springframework.web.context.support.StaticWebApplicationContext;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.multipart.MultipartException;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.support.AbstractMultipartHttpServletRequest;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
import org.springframework.web.servlet.handler.SimpleServletHandlerAdapter;
import org.springframework.web.servlet.handler.SimpleServletPostProcessor;
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
import org.springframework.web.servlet.handler.UserRoleAuthorizationInterceptor;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.mvc.ParameterizableViewController;
import org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.support.RequestContextUtils;
import org.springframework.web.servlet.theme.SessionThemeResolver;
import org.springframework.web.servlet.theme.ThemeChangeInterceptor;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.ResourceBundleViewResolver;
/**
* @author Juergen Hoeller
* @since 21.05.2003
*/
public class ComplexWebApplicationContext extends StaticWebApplicationContext {
public void refresh() throws BeansException {
registerSingleton(DispatcherServlet.LOCALE_RESOLVER_BEAN_NAME, SessionLocaleResolver.class);
registerSingleton(DispatcherServlet.THEME_RESOLVER_BEAN_NAME, SessionThemeResolver.class);
LocaleChangeInterceptor interceptor1 = new LocaleChangeInterceptor();
LocaleChangeInterceptor interceptor2 = new LocaleChangeInterceptor();
interceptor2.setParamName("locale2");
ThemeChangeInterceptor interceptor3 = new ThemeChangeInterceptor();
ThemeChangeInterceptor interceptor4 = new ThemeChangeInterceptor();
interceptor4.setParamName("theme2");
UserRoleAuthorizationInterceptor interceptor5 = new UserRoleAuthorizationInterceptor();
interceptor5.setAuthorizedRoles(new String[] {"role1", "role2"});
List interceptors = new ArrayList();
interceptors.add(interceptor5);
interceptors.add(interceptor1);
interceptors.add(interceptor2);
interceptors.add(interceptor3);
interceptors.add(interceptor4);
interceptors.add(new MyHandlerInterceptor1());
interceptors.add(new MyHandlerInterceptor2());
interceptors.add(new MyWebRequestInterceptor());
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.addPropertyValue(
"mappings", "/view.do=viewHandler\n/locale.do=localeHandler\nloc.do=anotherLocaleHandler");
pvs.addPropertyValue("interceptors", interceptors);
registerSingleton("myUrlMapping1", SimpleUrlHandlerMapping.class, pvs);
pvs = new MutablePropertyValues();
pvs.addPropertyValue(
"mappings", "/form.do=localeHandler\n/unknown.do=unknownHandler\nservlet.do=myServlet");
pvs.addPropertyValue("order", "2");
registerSingleton("myUrlMapping2", SimpleUrlHandlerMapping.class, pvs);
pvs = new MutablePropertyValues();
pvs.addPropertyValue(
"mappings", "/form.do=formHandler\n/head.do=headController\n" +
"body.do=bodyController\n/noview*=noviewController\n/noview/simple*=noviewController");
pvs.addPropertyValue("order", "1");
registerSingleton("handlerMapping", SimpleUrlHandlerMapping.class, pvs);
registerSingleton("myDummyAdapter", MyDummyAdapter.class);
registerSingleton("myHandlerAdapter", MyHandlerAdapter.class);
registerSingleton("standardHandlerAdapter", SimpleControllerHandlerAdapter.class);
registerSingleton("noviewController", NoViewController.class);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("order", new Integer(0));
pvs.addPropertyValue("basename", "org.springframework.web.servlet.complexviews");
registerSingleton("viewResolver", ResourceBundleViewResolver.class, pvs);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("suffix", ".jsp");
registerSingleton("viewResolver2", InternalResourceViewResolver.class, pvs);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("commandClass", "org.springframework.beans.TestBean");
pvs.addPropertyValue("formView", "form");
registerSingleton("formHandler", SimpleFormController.class, pvs);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("viewName", "form");
registerSingleton("viewHandler", ParameterizableViewController.class, pvs);
registerSingleton("localeHandler", ComplexLocaleChecker.class);
registerSingleton("anotherLocaleHandler", ComplexLocaleChecker.class);
registerSingleton("unknownHandler", Object.class);
registerSingleton("headController", HeadController.class);
registerSingleton("bodyController", BodyController.class);
registerSingleton("servletPostProcessor", SimpleServletPostProcessor.class);
registerSingleton("handlerAdapter", SimpleServletHandlerAdapter.class);
registerSingleton("myServlet", MyServlet.class);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("order", "1");
pvs.addPropertyValue("exceptionMappings",
"java.lang.IllegalAccessException=failed2\n" +
"ServletRequestBindingException=failed3");
pvs.addPropertyValue("defaultErrorView", "failed0");
registerSingleton("exceptionResolver1", SimpleMappingExceptionResolver.class, pvs);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("order", "0");
pvs.addPropertyValue("exceptionMappings", "java.lang.Exception=failed1");
List mappedHandlers = new ManagedList();
mappedHandlers.add(new RuntimeBeanReference("anotherLocaleHandler"));
pvs.addPropertyValue("mappedHandlers", mappedHandlers);
pvs.addPropertyValue("defaultStatusCode", "500");
pvs.addPropertyValue("defaultErrorView", "failed2");
registerSingleton("handlerExceptionResolver", SimpleMappingExceptionResolver.class, pvs);
registerSingleton("multipartResolver", MockMultipartResolver.class);
registerSingleton("testListener", TestApplicationListener.class);
addMessage("test", Locale.ENGLISH, "test message");
addMessage("test", Locale.CANADA, "Canadian & test message");
super.refresh();
}
public static class HeadController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
if ("HEAD".equals(request.getMethod())) {
response.setContentLength(5);
}
return null;
}
}
public static class BodyController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
response.getOutputStream().write("body".getBytes());
return null;
}
}
public static class NoViewController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
return new ModelAndView();
}
}
public static class MyServlet implements Servlet {
private ServletConfig servletConfig;
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig = servletConfig;
}
public ServletConfig getServletConfig() {
return servletConfig;
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException {
servletResponse.getOutputStream().write("body".getBytes());
}
public String getServletInfo() {
return null;
}
public void destroy() {
this.servletConfig = null;
}
}
public static interface MyHandler {
public void doSomething(HttpServletRequest request) throws ServletException, IllegalAccessException;
public long lastModified();
}
public static class MyHandlerAdapter extends ApplicationObjectSupport implements HandlerAdapter, Ordered {
public int getOrder() {
return 99;
}
public boolean supports(Object handler) {
return handler != null && MyHandler.class.isAssignableFrom(handler.getClass());
}
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object delegate)
throws ServletException, IllegalAccessException {
((MyHandler) delegate).doSomething(request);
return null;
}
public long getLastModified(HttpServletRequest request, Object delegate) {
return ((MyHandler) delegate).lastModified();
}
}
public static class MyDummyAdapter extends ApplicationObjectSupport implements HandlerAdapter {
public boolean supports(Object handler) {
return handler != null && MyHandler.class.isAssignableFrom(handler.getClass());
}
public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object delegate)
throws IOException, ServletException {
throw new ServletException("dummy");
}
public long getLastModified(HttpServletRequest request, Object delegate) {
return -1;
}
}
public static class MyHandlerInterceptor1 implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws ServletException {
if (request.getAttribute("test2") != null) {
throw new ServletException("Wrong interceptor order");
}
request.setAttribute("test1", "test1");
request.setAttribute("test1x", "test1x");
request.setAttribute("test1y", "test1y");
return true;
}
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws ServletException {
if (request.getAttribute("test2x") != null) {
throw new ServletException("Wrong interceptor order");
}
if (!"test1x".equals(request.getAttribute("test1x"))) {
throw new ServletException("Incorrect request attribute");
}
request.removeAttribute("test1x");
}
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws ServletException {
if (request.getAttribute("test2y") != null) {
throw new ServletException("Wrong interceptor order");
}
request.removeAttribute("test1y");
}
}
public static class MyHandlerInterceptor2 implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws ServletException {
if (request.getAttribute("test1x") == null) {
throw new ServletException("Wrong interceptor order");
}
if (request.getParameter("abort") != null) {
return false;
}
request.setAttribute("test2", "test2");
request.setAttribute("test2x", "test2x");
request.setAttribute("test2y", "test2y");
return true;
}
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws ServletException {
if (request.getParameter("noView") != null) {
modelAndView.clear();
}
if (request.getAttribute("test1x") == null) {
throw new ServletException("Wrong interceptor order");
}
if (!"test2x".equals(request.getAttribute("test2x"))) {
throw new ServletException("Incorrect request attribute");
}
request.removeAttribute("test2x");
}
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
if (request.getAttribute("test1y") == null) {
throw new ServletException("Wrong interceptor order");
}
request.removeAttribute("test2y");
}
}
public static class MyWebRequestInterceptor implements WebRequestInterceptor {
public void preHandle(WebRequest request) throws Exception {
request.setAttribute("test3", "test3", WebRequest.SCOPE_REQUEST);
}
public void postHandle(WebRequest request, ModelMap model) throws Exception {
request.setAttribute("test3x", "test3x", WebRequest.SCOPE_REQUEST);
}
public void afterCompletion(WebRequest request, Exception ex) throws Exception {
request.setAttribute("test3y", "test3y", WebRequest.SCOPE_REQUEST);
}
}
public static class ComplexLocaleChecker implements MyHandler {
public void doSomething(HttpServletRequest request) throws ServletException, IllegalAccessException {
WebApplicationContext wac = RequestContextUtils.getWebApplicationContext(request);
if (!(wac instanceof ComplexWebApplicationContext)) {
throw new ServletException("Incorrect WebApplicationContext");
}
if (!(request instanceof MultipartHttpServletRequest)) {
throw new ServletException("Not in a MultipartHttpServletRequest");
}
if (!(RequestContextUtils.getLocaleResolver(request) instanceof SessionLocaleResolver)) {
throw new ServletException("Incorrect LocaleResolver");
}
if (!Locale.CANADA.equals(RequestContextUtils.getLocale(request))) {
throw new ServletException("Incorrect Locale");
}
if (!Locale.CANADA.equals(LocaleContextHolder.getLocale())) {
throw new ServletException("Incorrect Locale");
}
if (!(RequestContextUtils.getThemeResolver(request) instanceof SessionThemeResolver)) {
throw new ServletException("Incorrect ThemeResolver");
}
if (!"theme".equals(RequestContextUtils.getThemeResolver(request).resolveThemeName(request))) {
throw new ServletException("Incorrect theme name");
}
if (request.getParameter("fail") != null) {
throw new ModelAndViewDefiningException(new ModelAndView("failed1"));
}
if (request.getParameter("access") != null) {
throw new IllegalAccessException("illegal access");
}
if (request.getParameter("servlet") != null) {
throw new ServletRequestBindingException("servlet");
}
if (request.getParameter("exception") != null) {
throw new RuntimeException("servlet");
}
}
public long lastModified() {
return 99;
}
}
public static class MockMultipartResolver implements MultipartResolver {
public boolean isMultipart(HttpServletRequest request) {
return true;
}
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException {
if (request.getAttribute("fail") != null) {
throw new MaxUploadSizeExceededException(1000);
}
if (request instanceof MultipartHttpServletRequest) {
throw new IllegalStateException("Already a multipart request");
}
if (request.getAttribute("resolved") != null) {
throw new IllegalStateException("Already resolved");
}
request.setAttribute("resolved", Boolean.TRUE);
return new AbstractMultipartHttpServletRequest(request) {
};
}
public void cleanupMultipart(MultipartHttpServletRequest request) {
if (request.getAttribute("cleanedUp") != null) {
throw new IllegalStateException("Already cleaned up");
}
request.setAttribute("cleanedUp", Boolean.TRUE);
}
}
public static class TestApplicationListener implements ApplicationListener {
public int counter = 0;
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof RequestHandledEvent) {
this.counter++;
}
}
}
}

View File

@ -1,118 +0,0 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.web.servlet;
import java.io.IOException;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.BeansException;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.context.support.StaticMessageSource;
import org.springframework.ui.context.Theme;
import org.springframework.ui.context.ThemeSource;
import org.springframework.ui.context.support.SimpleTheme;
import org.springframework.ui.context.support.UiApplicationContextUtils;
import org.springframework.web.context.support.StaticWebApplicationContext;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.mvc.LastModified;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.support.RequestContextUtils;
import org.springframework.web.servlet.theme.AbstractThemeResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.XmlViewResolver;
import org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping;
/**
* @author Juergen Hoeller
* @since 21.05.2003
*/
public class SimpleWebApplicationContext extends StaticWebApplicationContext {
public void refresh() throws BeansException {
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.addPropertyValue("commandClass", "org.springframework.beans.TestBean");
pvs.addPropertyValue("formView", "form");
registerSingleton("/form.do", SimpleFormController.class, pvs);
registerSingleton("/locale.do", LocaleChecker.class);
addMessage("test", Locale.ENGLISH, "test message");
addMessage("test", Locale.CANADA, "Canadian & test message");
addMessage("testArgs", Locale.ENGLISH, "test {0} message {1}");
addMessage("testArgsFormat", Locale.ENGLISH, "test {0} message {1,number,#.##} X");
registerSingleton(UiApplicationContextUtils.THEME_SOURCE_BEAN_NAME, DummyThemeSource.class);
registerSingleton("handlerMapping", BeanNameUrlHandlerMapping.class);
registerSingleton("viewResolver", InternalResourceViewResolver.class);
pvs = new MutablePropertyValues();
pvs.addPropertyValue("location", "org/springframework/web/context/WEB-INF/sessionContext.xml");
registerSingleton("viewResolver2", XmlViewResolver.class, pvs);
super.refresh();
}
public static class LocaleChecker implements Controller, LastModified {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (!(RequestContextUtils.getWebApplicationContext(request) instanceof SimpleWebApplicationContext)) {
throw new ServletException("Incorrect WebApplicationContext");
}
if (!(RequestContextUtils.getLocaleResolver(request) instanceof AcceptHeaderLocaleResolver)) {
throw new ServletException("Incorrect LocaleResolver");
}
if (!Locale.CANADA.equals(RequestContextUtils.getLocale(request))) {
throw new ServletException("Incorrect Locale");
}
return null;
}
public long getLastModified(HttpServletRequest request) {
return 98;
}
}
public static class DummyThemeSource implements ThemeSource {
private StaticMessageSource messageSource;
public DummyThemeSource() {
this.messageSource = new StaticMessageSource();
this.messageSource.addMessage("themetest", Locale.ENGLISH, "theme test message");
this.messageSource.addMessage("themetestArgs", Locale.ENGLISH, "theme test message {0}");
}
public Theme getTheme(String themeName) {
if (AbstractThemeResolver.ORIGINAL_DEFAULT_THEME_NAME.equals(themeName)) {
return new SimpleTheme(AbstractThemeResolver.ORIGINAL_DEFAULT_THEME_NAME, this.messageSource);
}
else {
return null;
}
}
}
}

View File

@ -14,5 +14,9 @@
<classpathentry kind="var" path="IVY_CACHE/javax.portlet/com.springsource.javax.portlet/1.0.0/com.springsource.javax.portlet-1.0.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/javax.portlet/com.springsource.javax.portlet/1.0.0/com.springsource.javax.portlet-1.0.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.fileupload/1.2.0/com.springsource.org.apache.commons.fileupload-1.2.0.jar" sourcepath="/IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.fileupload/1.2.0/com.springsource.org.apache.commons.fileupload-sources-1.2.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.fileupload/1.2.0/com.springsource.org.apache.commons.fileupload-1.2.0.jar" sourcepath="/IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.fileupload/1.2.0/com.springsource.org.apache.commons.fileupload-sources-1.2.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar" sourcepath="/IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-sources-1.1.1.jar"/> <classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-1.1.1.jar" sourcepath="/IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1/com.springsource.org.apache.commons.logging-sources-1.1.1.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.5.0/com.springsource.org.junit-4.5.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.5.0/com.springsource.org.junit-sources-4.5.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-2.3.0.jar" sourcepath="/IVY_CACHE/org.easymock/com.springsource.org.easymock/2.3.0/com.springsource.org.easymock-sources-2.3.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.objectweb.asm/com.springsource.org.objectweb.asm/2.2.3/com.springsource.org.objectweb.asm-2.2.3.jar" sourcepath="/IVY_CACHE/org.objectweb.asm/com.springsource.org.objectweb.asm/2.2.3/com.springsource.org.objectweb.asm-sources-2.2.3.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.objectweb.asm/com.springsource.org.objectweb.asm.commons/2.2.3/com.springsource.org.objectweb.asm.commons-2.2.3.jar" sourcepath="/IVY_CACHE/org.objectweb.asm/com.springsource.org.objectweb.asm.commons/2.2.3/com.springsource.org.objectweb.asm.commons-sources-2.2.3.jar"/>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
</classpath> </classpath>

View File

@ -29,6 +29,10 @@
<dependency org="org.springframework" name="org.springframework.core" rev="latest.integration" conf="compile->compile"/> <dependency org="org.springframework" name="org.springframework.core" rev="latest.integration" conf="compile->compile"/>
<dependency org="org.springframework" name="org.springframework.web" rev="latest.integration" conf="compile->compile"/> <dependency org="org.springframework" name="org.springframework.web" rev="latest.integration" conf="compile->compile"/>
<dependency org="org.springframework" name="org.springframework.web.servlet" rev="latest.integration" conf="compile->compile"/> <dependency org="org.springframework" name="org.springframework.web.servlet" rev="latest.integration" conf="compile->compile"/>
<dependency org="org.objectweb.asm" name="com.springsource.org.objectweb.asm" rev="2.2.3" conf="test->runtime" />
<dependency org="org.objectweb.asm" name="com.springsource.org.objectweb.asm.commons" rev="2.2.3" conf="test->runtime" />
<dependency org="org.easymock" name="com.springsource.org.easymock" rev="2.3.0" conf="test->compile"/>
<dependency org="org.junit" name="com.springsource.org.junit" rev="4.5.0" conf="test->runtime"/>
</dependencies> </dependencies>
</ivy-module> </ivy-module>

View File

@ -0,0 +1,67 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.mock.web;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletInputStream;
import org.springframework.util.Assert;
/**
* Delegating implementation of {@link javax.servlet.ServletInputStream}.
*
* <p>Used by {@link org.springframework.mock.web.MockHttpServletRequest}; typically not directly
* used for testing application controllers.
*
* @author Juergen Hoeller
* @since 1.0.2
* @see org.springframework.mock.web.MockHttpServletRequest
*/
public class DelegatingServletInputStream extends ServletInputStream {
private final InputStream sourceStream;
/**
* Create a DelegatingServletInputStream for the given source stream.
* @param sourceStream the source stream (never <code>null</code>)
*/
public DelegatingServletInputStream(InputStream sourceStream) {
Assert.notNull(sourceStream, "Source InputStream must not be null");
this.sourceStream = sourceStream;
}
/**
* Return the underlying source stream (never <code>null</code>).
*/
public final InputStream getSourceStream() {
return this.sourceStream;
}
public int read() throws IOException {
return this.sourceStream.read();
}
public void close() throws IOException {
super.close();
this.sourceStream.close();
}
}

View File

@ -0,0 +1,35 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.beans;
import org.springframework.core.enums.ShortCodedLabeledEnum;
/**
* @author Rob Harrop
*/
public class Colour extends ShortCodedLabeledEnum {
public static final Colour RED = new Colour(0, "RED");
public static final Colour BLUE = new Colour(1, "BLUE");
public static final Colour GREEN = new Colour(2, "GREEN");
public static final Colour PURPLE = new Colour(3, "PURPLE");
private Colour(int code, String label) {
super(code, label);
}
}

View File

@ -0,0 +1,85 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.beans;
import java.io.Serializable;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
/**
* @author Juergen Hoeller
* @since 21.08.2003
*/
public class DerivedTestBean extends TestBean implements Serializable, BeanNameAware, DisposableBean {
private String beanName;
private boolean initialized;
private boolean destroyed;
public DerivedTestBean() {
}
public DerivedTestBean(String[] names) {
if (names == null || names.length < 2) {
throw new IllegalArgumentException("Invalid names array");
}
setName(names[0]);
setBeanName(names[1]);
}
public static DerivedTestBean create(String[] names) {
return new DerivedTestBean(names);
}
public void setBeanName(String beanName) {
if (this.beanName == null || beanName == null) {
this.beanName = beanName;
}
}
public String getBeanName() {
return beanName;
}
public void setSpouseRef(String name) {
setSpouse(new TestBean(name));
}
public void initialize() {
this.initialized = true;
}
public boolean wasInitialized() {
return initialized;
}
public void destroy() {
this.destroyed = true;
}
public boolean wasDestroyed() {
return destroyed;
}
}

View File

@ -0,0 +1,23 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.beans;
public interface INestedTestBean {
public String getCompany();
}

View File

@ -0,0 +1,24 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.beans;
public interface IOther {
void absquatulate();
}

View File

@ -0,0 +1,71 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.beans;
import java.io.IOException;
/**
* Interface used for {@link org.springframework.beans.TestBean}.
*
* <p>Two methods are the same as on Person, but if this
* extends person it breaks quite a few tests..
*
* @author Rod Johnson
* @author Juergen Hoeller
*/
public interface ITestBean {
int getAge();
void setAge(int age);
String getName();
void setName(String name);
ITestBean getSpouse();
void setSpouse(ITestBean spouse);
ITestBean[] getSpouses();
String[] getStringArray();
void setStringArray(String[] stringArray);
/**
* Throws a given (non-null) exception.
*/
void exceptional(Throwable t) throws Throwable;
Object returnsThis();
INestedTestBean getDoctor();
INestedTestBean getLawyer();
IndexedTestBean getNestedIndexedBean();
/**
* Increment the age by one.
* @return the previous age
*/
int haveBirthday();
void unreliableFileOperation() throws IOException;
}

View File

@ -0,0 +1,145 @@
/*
* Copyright 2002-2006 the original author or authors.
*
* 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.springframework.beans;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* @author Juergen Hoeller
* @since 11.11.2003
*/
public class IndexedTestBean {
private TestBean[] array;
private Collection collection;
private List list;
private Set set;
private SortedSet sortedSet;
private Map map;
private SortedMap sortedMap;
public IndexedTestBean() {
this(true);
}
public IndexedTestBean(boolean populate) {
if (populate) {
populate();
}
}
public void populate() {
TestBean tb0 = new TestBean("name0", 0);
TestBean tb1 = new TestBean("name1", 0);
TestBean tb2 = new TestBean("name2", 0);
TestBean tb3 = new TestBean("name3", 0);
TestBean tb4 = new TestBean("name4", 0);
TestBean tb5 = new TestBean("name5", 0);
TestBean tb6 = new TestBean("name6", 0);
TestBean tb7 = new TestBean("name7", 0);
TestBean tbX = new TestBean("nameX", 0);
TestBean tbY = new TestBean("nameY", 0);
this.array = new TestBean[] {tb0, tb1};
this.list = new ArrayList();
this.list.add(tb2);
this.list.add(tb3);
this.set = new TreeSet();
this.set.add(tb6);
this.set.add(tb7);
this.map = new HashMap();
this.map.put("key1", tb4);
this.map.put("key2", tb5);
this.map.put("key.3", tb5);
List list = new ArrayList();
list.add(tbX);
list.add(tbY);
this.map.put("key4", list);
}
public TestBean[] getArray() {
return array;
}
public void setArray(TestBean[] array) {
this.array = array;
}
public Collection getCollection() {
return collection;
}
public void setCollection(Collection collection) {
this.collection = collection;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Set getSet() {
return set;
}
public void setSet(Set set) {
this.set = set;
}
public SortedSet getSortedSet() {
return sortedSet;
}
public void setSortedSet(SortedSet sortedSet) {
this.sortedSet = sortedSet;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public SortedMap getSortedMap() {
return sortedMap;
}
public void setSortedMap(SortedMap sortedMap) {
this.sortedMap = sortedMap;
}
}

View File

@ -0,0 +1,60 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.beans;
/**
* Simple nested test bean used for testing bean factories, AOP framework etc.
*
* @author Trevor D. Cook
* @since 30.09.2003
*/
public class NestedTestBean implements INestedTestBean {
private String company = "";
public NestedTestBean() {
}
public NestedTestBean(String company) {
setCompany(company);
}
public void setCompany(String company) {
this.company = (company != null ? company : "");
}
public String getCompany() {
return company;
}
public boolean equals(Object obj) {
if (!(obj instanceof NestedTestBean)) {
return false;
}
NestedTestBean ntb = (NestedTestBean) obj;
return this.company.equals(ntb.company);
}
public int hashCode() {
return this.company.hashCode();
}
public String toString() {
return "NestedTestBean: " + this.company;
}
}

View File

@ -0,0 +1,437 @@
/*
* Copyright 2002-2008 the original author or authors.
*
* 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.springframework.beans;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.util.ObjectUtils;
/**
* Simple test bean used for testing bean factories, the AOP framework etc.
*
* @author Rod Johnson
* @author Juergen Hoeller
* @since 15 April 2001
*/
public class TestBean implements BeanNameAware, BeanFactoryAware, ITestBean, IOther, Comparable {
private String beanName;
private String country;
private BeanFactory beanFactory;
private boolean postProcessed;
private String name;
private String sex;
private int age;
private boolean jedi;
private ITestBean[] spouses;
private String touchy;
private String[] stringArray;
private Integer[] someIntegerArray;
private Date date = new Date();
private Float myFloat = new Float(0.0);
private Collection friends = new LinkedList();
private Set someSet = new HashSet();
private Map someMap = new HashMap();
private List someList = new ArrayList();
private Properties someProperties = new Properties();
private INestedTestBean doctor = new NestedTestBean();
private INestedTestBean lawyer = new NestedTestBean();
private IndexedTestBean nestedIndexedBean;
private boolean destroyed;
private Number someNumber;
private Colour favouriteColour;
private Boolean someBoolean;
private List otherColours;
private List pets;
public TestBean() {
}
public TestBean(String name) {
this.name = name;
}
public TestBean(ITestBean spouse) {
this.spouses = new ITestBean[] {spouse};
}
public TestBean(String name, int age) {
this.name = name;
this.age = age;
}
public TestBean(ITestBean spouse, Properties someProperties) {
this.spouses = new ITestBean[] {spouse};
this.someProperties = someProperties;
}
public TestBean(List someList) {
this.someList = someList;
}
public TestBean(Set someSet) {
this.someSet = someSet;
}
public TestBean(Map someMap) {
this.someMap = someMap;
}
public TestBean(Properties someProperties) {
this.someProperties = someProperties;
}
public void setBeanName(String beanName) {
this.beanName = beanName;
}
public String getBeanName() {
return beanName;
}
public void setBeanFactory(BeanFactory beanFactory) {
this.beanFactory = beanFactory;
}
public BeanFactory getBeanFactory() {
return beanFactory;
}
public void setPostProcessed(boolean postProcessed) {
this.postProcessed = postProcessed;
}
public boolean isPostProcessed() {
return postProcessed;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
if (this.name == null) {
this.name = sex;
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isJedi() {
return jedi;
}
public void setJedi(boolean jedi) {
this.jedi = jedi;
}
public ITestBean getSpouse() {
return (spouses != null ? spouses[0] : null);
}
public void setSpouse(ITestBean spouse) {
this.spouses = new ITestBean[] {spouse};
}
public ITestBean[] getSpouses() {
return spouses;
}
public String getTouchy() {
return touchy;
}
public void setTouchy(String touchy) throws Exception {
if (touchy.indexOf('.') != -1) {
throw new Exception("Can't contain a .");
}
if (touchy.indexOf(',') != -1) {
throw new NumberFormatException("Number format exception: contains a ,");
}
this.touchy = touchy;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String[] getStringArray() {
return stringArray;
}
public void setStringArray(String[] stringArray) {
this.stringArray = stringArray;
}
public Integer[] getSomeIntegerArray() {
return someIntegerArray;
}
public void setSomeIntegerArray(Integer[] someIntegerArray) {
this.someIntegerArray = someIntegerArray;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Float getMyFloat() {
return myFloat;
}
public void setMyFloat(Float myFloat) {
this.myFloat = myFloat;
}
public Collection getFriends() {
return friends;
}
public void setFriends(Collection friends) {
this.friends = friends;
}
public Set getSomeSet() {
return someSet;
}
public void setSomeSet(Set someSet) {
this.someSet = someSet;
}
public Map getSomeMap() {
return someMap;
}
public void setSomeMap(Map someMap) {
this.someMap = someMap;
}
public List getSomeList() {
return someList;
}
public void setSomeList(List someList) {
this.someList = someList;
}
public Properties getSomeProperties() {
return someProperties;
}
public void setSomeProperties(Properties someProperties) {
this.someProperties = someProperties;
}
public INestedTestBean getDoctor() {
return doctor;
}
public void setDoctor(INestedTestBean doctor) {
this.doctor = doctor;
}
public INestedTestBean getLawyer() {
return lawyer;
}
public void setLawyer(INestedTestBean lawyer) {
this.lawyer = lawyer;
}
public Number getSomeNumber() {
return someNumber;
}
public void setSomeNumber(Number someNumber) {
this.someNumber = someNumber;
}
public Colour getFavouriteColour() {
return favouriteColour;
}
public void setFavouriteColour(Colour favouriteColour) {
this.favouriteColour = favouriteColour;
}
public Boolean getSomeBoolean() {
return someBoolean;
}
public void setSomeBoolean(Boolean someBoolean) {
this.someBoolean = someBoolean;
}
public IndexedTestBean getNestedIndexedBean() {
return nestedIndexedBean;
}
public void setNestedIndexedBean(IndexedTestBean nestedIndexedBean) {
this.nestedIndexedBean = nestedIndexedBean;
}
public List getOtherColours() {
return otherColours;
}
public void setOtherColours(List otherColours) {
this.otherColours = otherColours;
}
public List getPets() {
return pets;
}
public void setPets(List pets) {
this.pets = pets;
}
/**
* @see org.springframework.beans.ITestBean#exceptional(Throwable)
*/
public void exceptional(Throwable t) throws Throwable {
if (t != null) {
throw t;
}
}
public void unreliableFileOperation() throws IOException {
throw new IOException();
}
/**
* @see org.springframework.beans.ITestBean#returnsThis()
*/
public Object returnsThis() {
return this;
}
/**
* @see org.springframework.beans.IOther#absquatulate()
*/
public void absquatulate() {
}
public int haveBirthday() {
return age++;
}
public void destroy() {
this.destroyed = true;
}
public boolean wasDestroyed() {
return destroyed;
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (other == null || !(other instanceof TestBean)) {
return false;
}
TestBean tb2 = (TestBean) other;
return (ObjectUtils.nullSafeEquals(this.name, tb2.name) && this.age == tb2.age);
}
public int hashCode() {
return this.age;
}
public int compareTo(Object other) {
if (this.name != null && other instanceof TestBean) {
return this.name.compareTo(((TestBean) other).getName());
}
else {
return 1;
}
}
public String toString() {
return this.name;
}
}

View File

@ -0,0 +1,172 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.beans.factory;
import org.springframework.beans.BeansException;
import org.springframework.beans.TestBean;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
/**
* Simple factory to allow testing of FactoryBean support in AbstractBeanFactory.
* Depending on whether its singleton property is set, it will return a singleton
* or a prototype instance.
*
* <p>Implements InitializingBean interface, so we can check that
* factories get this lifecycle callback if they want.
*
* @author Rod Johnson
* @since 10.03.2003
*/
public class DummyFactory
implements FactoryBean, BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean {
public static final String SINGLETON_NAME = "Factory singleton";
private static boolean prototypeCreated;
/**
* Clear static state.
*/
public static void reset() {
prototypeCreated = false;
}
/**
* Default is for factories to return a singleton instance.
*/
private boolean singleton = true;
private String beanName;
private AutowireCapableBeanFactory beanFactory;
private boolean postProcessed;
private boolean initialized;
private TestBean testBean;
private TestBean otherTestBean;
public DummyFactory() {
this.testBean = new TestBean();
this.testBean.setName(SINGLETON_NAME);
this.testBean.setAge(25);
}
/**
* Return if the bean managed by this factory is a singleton.
* @see FactoryBean#isSingleton()
*/
public boolean isSingleton() {
return this.singleton;
}
/**
* Set if the bean managed by this factory is a singleton.
*/
public void setSingleton(boolean singleton) {
this.singleton = singleton;
}
public void setBeanName(String beanName) {
this.beanName = beanName;
}
public String getBeanName() {
return beanName;
}
public void setBeanFactory(BeanFactory beanFactory) {
this.beanFactory = (AutowireCapableBeanFactory) beanFactory;
this.beanFactory.applyBeanPostProcessorsBeforeInitialization(this.testBean, this.beanName);
}
public BeanFactory getBeanFactory() {
return beanFactory;
}
public void setPostProcessed(boolean postProcessed) {
this.postProcessed = postProcessed;
}
public boolean isPostProcessed() {
return postProcessed;
}
public void setOtherTestBean(TestBean otherTestBean) {
this.otherTestBean = otherTestBean;
this.testBean.setSpouse(otherTestBean);
}
public TestBean getOtherTestBean() {
return otherTestBean;
}
public void afterPropertiesSet() {
if (initialized) {
throw new RuntimeException("Cannot call afterPropertiesSet twice on the one bean");
}
this.initialized = true;
}
/**
* Was this initialized by invocation of the
* afterPropertiesSet() method from the InitializingBean interface?
*/
public boolean wasInitialized() {
return initialized;
}
public static boolean wasPrototypeCreated() {
return prototypeCreated;
}
/**
* Return the managed object, supporting both singleton
* and prototype mode.
* @see FactoryBean#getObject()
*/
public Object getObject() throws BeansException {
if (isSingleton()) {
return this.testBean;
}
else {
TestBean prototype = new TestBean("prototype created at " + System.currentTimeMillis(), 11);
if (this.beanFactory != null) {
this.beanFactory.applyBeanPostProcessorsBeforeInitialization(prototype, this.beanName);
}
prototypeCreated = true;
return prototype;
}
}
public Class getObjectType() {
return TestBean.class;
}
public void destroy() {
if (this.testBean != null) {
this.testBean.setName(null);
}
}
}

View File

@ -0,0 +1,158 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.beans.factory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
/**
* Simple test of BeanFactory initialization and lifecycle callbacks.
*
* @author Rod Johnson
* @author Colin Sampaleanu
* @since 12.03.2003
*/
public class LifecycleBean implements BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean {
protected boolean initMethodDeclared = false;
protected String beanName;
protected BeanFactory owningFactory;
protected boolean postProcessedBeforeInit;
protected boolean inited;
protected boolean initedViaDeclaredInitMethod;
protected boolean postProcessedAfterInit;
protected boolean destroyed;
public void setInitMethodDeclared(boolean initMethodDeclared) {
this.initMethodDeclared = initMethodDeclared;
}
public boolean isInitMethodDeclared() {
return initMethodDeclared;
}
public void setBeanName(String name) {
this.beanName = name;
}
public String getBeanName() {
return beanName;
}
public void setBeanFactory(BeanFactory beanFactory) {
this.owningFactory = beanFactory;
}
public void postProcessBeforeInit() {
if (this.inited || this.initedViaDeclaredInitMethod) {
throw new RuntimeException("Factory called postProcessBeforeInit after afterPropertiesSet");
}
if (this.postProcessedBeforeInit) {
throw new RuntimeException("Factory called postProcessBeforeInit twice");
}
this.postProcessedBeforeInit = true;
}
public void afterPropertiesSet() {
if (this.owningFactory == null) {
throw new RuntimeException("Factory didn't call setBeanFactory before afterPropertiesSet on lifecycle bean");
}
if (!this.postProcessedBeforeInit) {
throw new RuntimeException("Factory didn't call postProcessBeforeInit before afterPropertiesSet on lifecycle bean");
}
if (this.initedViaDeclaredInitMethod) {
throw new RuntimeException("Factory initialized via declared init method before initializing via afterPropertiesSet");
}
if (this.inited) {
throw new RuntimeException("Factory called afterPropertiesSet twice");
}
this.inited = true;
}
public void declaredInitMethod() {
if (!this.inited) {
throw new RuntimeException("Factory didn't call afterPropertiesSet before declared init method");
}
if (this.initedViaDeclaredInitMethod) {
throw new RuntimeException("Factory called declared init method twice");
}
this.initedViaDeclaredInitMethod = true;
}
public void postProcessAfterInit() {
if (!this.inited) {
throw new RuntimeException("Factory called postProcessAfterInit before afterPropertiesSet");
}
if (this.initMethodDeclared && !this.initedViaDeclaredInitMethod) {
throw new RuntimeException("Factory called postProcessAfterInit before calling declared init method");
}
if (this.postProcessedAfterInit) {
throw new RuntimeException("Factory called postProcessAfterInit twice");
}
this.postProcessedAfterInit = true;
}
/**
* Dummy business method that will fail unless the factory
* managed the bean's lifecycle correctly
*/
public void businessMethod() {
if (!this.inited || (this.initMethodDeclared && !this.initedViaDeclaredInitMethod) ||
!this.postProcessedAfterInit) {
throw new RuntimeException("Factory didn't initialize lifecycle object correctly");
}
}
public void destroy() {
if (this.destroyed) {
throw new IllegalStateException("Already destroyed");
}
this.destroyed = true;
}
public boolean isDestroyed() {
return destroyed;
}
public static class PostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {
if (bean instanceof LifecycleBean) {
((LifecycleBean) bean).postProcessBeforeInit();
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String name) throws BeansException {
if (bean instanceof LifecycleBean) {
((LifecycleBean) bean).postProcessAfterInit();
}
return bean;
}
}
}

View File

@ -0,0 +1,46 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.beans.factory;
import org.springframework.beans.factory.InitializingBean;
/**
* Simple test of BeanFactory initialization
* @author Rod Johnson
* @since 12.03.2003
*/
public class MustBeInitialized implements InitializingBean {
private boolean inited;
/**
* @see InitializingBean#afterPropertiesSet()
*/
public void afterPropertiesSet() throws Exception {
this.inited = true;
}
/**
* Dummy business method that will fail unless the factory
* managed the bean's lifecycle correctly
*/
public void businessMethod() {
if (!this.inited)
throw new RuntimeException("Factory didn't call afterPropertiesSet() on MustBeInitialized object");
}
}

View File

@ -0,0 +1,53 @@
/*
* Copyright 2002-2005 the original author or authors.
*
* 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.springframework.context;
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationContextException;
import org.springframework.context.NoSuchMessageException;
public class ACATester implements ApplicationContextAware {
private ApplicationContext ac;
public void setApplicationContext(ApplicationContext ctx) throws ApplicationContextException {
// check reinitialization
if (this.ac != null) {
throw new IllegalStateException("Already initialized");
}
// check message source availability
if (ctx != null) {
try {
ctx.getMessage("code1", null, Locale.getDefault());
}
catch (NoSuchMessageException ex) {
// expected
}
}
this.ac = ctx;
}
public ApplicationContext getApplicationContext() {
return ac;
}
}

View File

@ -0,0 +1,39 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.context;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
* @author Juergen Hoeller
*/
public class BeanThatBroadcasts implements ApplicationContextAware {
public ApplicationContext applicationContext;
public int receivedCount;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
if (applicationContext.getDisplayName().indexOf("listener") != -1) {
applicationContext.getBean("listener");
}
}
}

View File

@ -0,0 +1,61 @@
/*
* Copyright 2002-2007 the original author or authors.
*
* 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.springframework.context;
import java.util.Map;
/**
* A stub {@link ApplicationListener}.
*
* @author Thomas Risberg
* @author Juergen Hoeller
*/
public class BeanThatListens implements ApplicationListener {
private BeanThatBroadcasts beanThatBroadcasts;
private int eventCount;
public BeanThatListens() {
}
public BeanThatListens(BeanThatBroadcasts beanThatBroadcasts) {
this.beanThatBroadcasts = beanThatBroadcasts;
Map beans = beanThatBroadcasts.applicationContext.getBeansOfType(BeanThatListens.class);
if (!beans.isEmpty()) {
throw new IllegalStateException("Shouldn't have found any BeanThatListens instances");
}
}
public void onApplicationEvent(ApplicationEvent event) {
eventCount++;
if (beanThatBroadcasts != null) {
beanThatBroadcasts.receivedCount++;
}
}
public int getEventCount() {
return eventCount;
}
public void zero() {
eventCount = 0;
}
}

View File

@ -0,0 +1,37 @@
package org.springframework.context;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.LifecycleBean;
/**
* Simple bean to test ApplicationContext lifecycle methods for beans
*
* @author Colin Sampaleanu
* @since 03.07.2004
*/
public class LifecycleContextBean extends LifecycleBean implements ApplicationContextAware {
protected ApplicationContext owningContext;
public void setBeanFactory(BeanFactory beanFactory) {
super.setBeanFactory(beanFactory);
if (this.owningContext != null)
throw new RuntimeException("Factory called setBeanFactory after setApplicationContext");
}
public void afterPropertiesSet() {
super.afterPropertiesSet();
if (this.owningContext == null)
throw new RuntimeException("Factory didn't call setAppliationContext before afterPropertiesSet on lifecycle bean");
}
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (this.owningFactory == null)
throw new RuntimeException("Factory called setApplicationContext before setBeanFactory");
this.owningContext = applicationContext;
}
}

View File

@ -0,0 +1,28 @@
package org.springframework.context;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
/**
* Listener that maintains a global count of events.
*
* @author Rod Johnson
* @since January 21, 2001
*/
public class TestListener implements ApplicationListener {
private int eventCount;
public int getEventCount() {
return eventCount;
}
public void zeroCounter() {
eventCount = 0;
}
public void onApplicationEvent(ApplicationEvent e) {
++eventCount;
}
}

View File

@ -16,39 +16,38 @@
package org.springframework.web.portlet.context; package org.springframework.web.portlet.context;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import java.io.Serializable; import java.io.Serializable;
import javax.portlet.PortletRequest; import javax.portlet.PortletRequest;
import junit.framework.TestCase; import org.junit.Test;
import org.easymock.MockControl;
import org.springframework.mock.web.portlet.MockPortletRequest; import org.springframework.mock.web.portlet.MockPortletRequest;
import org.springframework.mock.web.portlet.MockPortletSession; import org.springframework.mock.web.portlet.MockPortletSession;
import org.springframework.test.AssertThrows;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
/** /**
* @author Rick Evans * @author Rick Evans
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Chris Beams
*/ */
public class PortletRequestAttributesTests extends TestCase { public class PortletRequestAttributesTests {
private static final String KEY = "ThatThingThatThing"; private static final String KEY = "ThatThingThatThing";
private static final Serializable VALUE = new Serializable() { @SuppressWarnings("serial")
}; private static final Serializable VALUE = new Serializable() { };
@Test(expected=IllegalArgumentException.class)
public void testCtorRejectsNullArg() throws Exception { public void testCtorRejectsNullArg() throws Exception {
new AssertThrows(IllegalArgumentException.class) { new PortletRequestAttributes(null);
public void test() throws Exception {
new PortletRequestAttributes(null);
}
}.runTest();
} }
@Test
public void testUpdateAccessedAttributes() throws Exception { public void testUpdateAccessedAttributes() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute(KEY, VALUE); session.setAttribute(KEY, VALUE);
@ -60,6 +59,7 @@ public class PortletRequestAttributesTests extends TestCase {
attrs.requestCompleted(); attrs.requestCompleted();
} }
@Test
public void testSetRequestScopedAttribute() throws Exception { public void testSetRequestScopedAttribute() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
PortletRequestAttributes attrs = new PortletRequestAttributes(request); PortletRequestAttributes attrs = new PortletRequestAttributes(request);
@ -68,6 +68,7 @@ public class PortletRequestAttributesTests extends TestCase {
assertSame(VALUE, value); assertSame(VALUE, value);
} }
@Test
public void testSetRequestScopedAttributeAfterCompletion() throws Exception { public void testSetRequestScopedAttributeAfterCompletion() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
PortletRequestAttributes attrs = new PortletRequestAttributes(request); PortletRequestAttributes attrs = new PortletRequestAttributes(request);
@ -81,6 +82,7 @@ public class PortletRequestAttributesTests extends TestCase {
} }
} }
@Test
public void testSetSessionScopedAttribute() throws Exception { public void testSetSessionScopedAttribute() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute(KEY, VALUE); session.setAttribute(KEY, VALUE);
@ -92,6 +94,7 @@ public class PortletRequestAttributesTests extends TestCase {
assertSame(VALUE, value); assertSame(VALUE, value);
} }
@Test
public void testSetSessionScopedAttributeAfterCompletion() throws Exception { public void testSetSessionScopedAttributeAfterCompletion() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute(KEY, VALUE); session.setAttribute(KEY, VALUE);
@ -105,6 +108,7 @@ public class PortletRequestAttributesTests extends TestCase {
assertSame(VALUE, value); assertSame(VALUE, value);
} }
@Test
public void testSetGlobalSessionScopedAttribute() throws Exception { public void testSetGlobalSessionScopedAttribute() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute(KEY, VALUE); session.setAttribute(KEY, VALUE);
@ -116,6 +120,7 @@ public class PortletRequestAttributesTests extends TestCase {
assertSame(VALUE, value); assertSame(VALUE, value);
} }
@Test
public void testSetGlobalSessionScopedAttributeAfterCompletion() throws Exception { public void testSetGlobalSessionScopedAttributeAfterCompletion() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute(KEY, VALUE); session.setAttribute(KEY, VALUE);
@ -129,20 +134,20 @@ public class PortletRequestAttributesTests extends TestCase {
assertSame(VALUE, value); assertSame(VALUE, value);
} }
@Test
public void testGetSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception { public void testGetSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception {
MockControl mockRequest = MockControl.createControl(PortletRequest.class); PortletRequest request = createMock(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock(); expect(request.getPortletSession(false)).andReturn(null);
request.getPortletSession(false); replay(request);
mockRequest.setReturnValue(null, 1);
mockRequest.replay();
PortletRequestAttributes attrs = new PortletRequestAttributes(request); PortletRequestAttributes attrs = new PortletRequestAttributes(request);
Object value = attrs.getAttribute(KEY, RequestAttributes.SCOPE_SESSION); Object value = attrs.getAttribute(KEY, RequestAttributes.SCOPE_SESSION);
assertNull(value); assertNull(value);
mockRequest.verify(); verify(request);
} }
@Test
public void testRemoveSessionScopedAttribute() throws Exception { public void testRemoveSessionScopedAttribute() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute(KEY, VALUE); session.setAttribute(KEY, VALUE);
@ -154,17 +159,16 @@ public class PortletRequestAttributesTests extends TestCase {
assertNull(value); assertNull(value);
} }
@Test
public void testRemoveSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception { public void testRemoveSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception {
MockControl mockRequest = MockControl.createControl(PortletRequest.class); PortletRequest request = createMock(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock(); expect(request.getPortletSession(false)).andReturn(null);
request.getPortletSession(false); replay(request);
mockRequest.setReturnValue(null, 1);
mockRequest.replay();
PortletRequestAttributes attrs = new PortletRequestAttributes(request); PortletRequestAttributes attrs = new PortletRequestAttributes(request);
attrs.removeAttribute(KEY, RequestAttributes.SCOPE_SESSION); attrs.removeAttribute(KEY, RequestAttributes.SCOPE_SESSION);
mockRequest.verify(); verify(request);
} }
} }

View File

@ -16,24 +16,39 @@
package org.springframework.web.portlet.mvc; package org.springframework.web.portlet.mvc;
import junit.framework.TestCase; import static org.junit.Assert.assertEquals;
import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.MutablePropertyValues;
import org.springframework.mock.web.portlet.*; import org.springframework.mock.web.portlet.MockActionRequest;
import org.springframework.test.AssertThrows; import org.springframework.mock.web.portlet.MockActionResponse;
import org.springframework.mock.web.portlet.MockPortletConfig;
import org.springframework.mock.web.portlet.MockPortletContext;
import org.springframework.mock.web.portlet.MockRenderRequest;
import org.springframework.mock.web.portlet.MockRenderResponse;
import org.springframework.web.portlet.context.ConfigurablePortletApplicationContext; import org.springframework.web.portlet.context.ConfigurablePortletApplicationContext;
import org.springframework.web.portlet.context.StaticPortletApplicationContext; import org.springframework.web.portlet.context.StaticPortletApplicationContext;
import javax.portlet.*;
import java.io.IOException;
/** /**
* Unit tests for the {@link PortletWrappingController} class. * Unit tests for the {@link PortletWrappingController} class.
* *
* @author Mark Fisher * @author Mark Fisher
* @author Rick Evans * @author Rick Evans
* @author Chris Beams
*/ */
public final class PortletWrappingControllerTests extends TestCase { public final class PortletWrappingControllerTests {
private static final String RESULT_RENDER_PARAMETER_NAME = "result"; private static final String RESULT_RENDER_PARAMETER_NAME = "result";
private static final String PORTLET_WRAPPING_CONTROLLER_BEAN_NAME = "controller"; private static final String PORTLET_WRAPPING_CONTROLLER_BEAN_NAME = "controller";
@ -44,6 +59,7 @@ public final class PortletWrappingControllerTests extends TestCase {
private PortletWrappingController controller; private PortletWrappingController controller;
@Before
public void setUp() { public void setUp() {
ConfigurablePortletApplicationContext applicationContext = new MyApplicationContext(); ConfigurablePortletApplicationContext applicationContext = new MyApplicationContext();
MockPortletConfig config = new MockPortletConfig(new MockPortletContext(), "wrappedPortlet"); MockPortletConfig config = new MockPortletConfig(new MockPortletContext(), "wrappedPortlet");
@ -53,6 +69,7 @@ public final class PortletWrappingControllerTests extends TestCase {
} }
@Test
public void testActionRequest() throws Exception { public void testActionRequest() throws Exception {
MockActionRequest request = new MockActionRequest(); MockActionRequest request = new MockActionRequest();
MockActionResponse response = new MockActionResponse(); MockActionResponse response = new MockActionResponse();
@ -62,6 +79,7 @@ public final class PortletWrappingControllerTests extends TestCase {
assertEquals("myPortlet-action", result); assertEquals("myPortlet-action", result);
} }
@Test
public void testRenderRequest() throws Exception { public void testRenderRequest() throws Exception {
MockRenderRequest request = new MockRenderRequest(); MockRenderRequest request = new MockRenderRequest();
MockRenderResponse response = new MockRenderResponse(); MockRenderResponse response = new MockRenderResponse();
@ -70,48 +88,37 @@ public final class PortletWrappingControllerTests extends TestCase {
assertEquals(RENDERED_RESPONSE_CONTENT, result); assertEquals(RENDERED_RESPONSE_CONTENT, result);
} }
@Test(expected=IllegalArgumentException.class)
public void testActionRequestWithNoParameters() throws Exception { public void testActionRequestWithNoParameters() throws Exception {
final MockActionRequest request = new MockActionRequest(); MockActionRequest request = new MockActionRequest();
final MockActionResponse response = new MockActionResponse(); MockActionResponse response = new MockActionResponse();
new AssertThrows(IllegalArgumentException.class) { controller.handleActionRequest(request, response);
public void test() throws Exception {
controller.handleActionRequest(request, response);
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testRejectsPortletClassThatDoesNotImplementPortletInterface() throws Exception { public void testRejectsPortletClassThatDoesNotImplementPortletInterface() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletWrappingController controller = new PortletWrappingController();
public void test() throws Exception { controller.setPortletClass(String.class);
PortletWrappingController controller = new PortletWrappingController(); controller.afterPropertiesSet();
controller.setPortletClass(String.class);
controller.afterPropertiesSet();
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testRejectsIfPortletClassIsNotSupplied() throws Exception { public void testRejectsIfPortletClassIsNotSupplied() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletWrappingController controller = new PortletWrappingController();
public void test() throws Exception { controller.setPortletClass(null);
PortletWrappingController controller = new PortletWrappingController(); controller.afterPropertiesSet();
controller.setPortletClass(null);
controller.afterPropertiesSet();
}
}.runTest();
} }
@Test(expected=IllegalStateException.class)
public void testDestroyingTheControllerPropagatesDestroyToWrappedPortlet() throws Exception { public void testDestroyingTheControllerPropagatesDestroyToWrappedPortlet() throws Exception {
final PortletWrappingController controller = new PortletWrappingController(); final PortletWrappingController controller = new PortletWrappingController();
controller.setPortletClass(MyPortlet.class); controller.setPortletClass(MyPortlet.class);
controller.afterPropertiesSet(); controller.afterPropertiesSet();
// test for destroy() call being propagated via exception being thrown :( // test for destroy() call being propagated via exception being thrown :(
new AssertThrows(IllegalStateException.class) { controller.destroy();
public void test() throws Exception {
controller.destroy();
}
}.runTest();
} }
@Test
public void testPortletName() throws Exception { public void testPortletName() throws Exception {
MockActionRequest request = new MockActionRequest(); MockActionRequest request = new MockActionRequest();
MockActionResponse response = new MockActionResponse(); MockActionResponse response = new MockActionResponse();
@ -121,6 +128,7 @@ public final class PortletWrappingControllerTests extends TestCase {
assertEquals("wrappedPortlet", result); assertEquals("wrappedPortlet", result);
} }
@Test
public void testDelegationToMockPortletConfigIfSoConfigured() throws Exception { public void testDelegationToMockPortletConfigIfSoConfigured() throws Exception {
final String BEAN_NAME = "Sixpence None The Richer"; final String BEAN_NAME = "Sixpence None The Richer";

View File

@ -16,6 +16,9 @@
package org.springframework.web.portlet.util; package org.springframework.web.portlet.util;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.util.Collections; import java.util.Collections;
@ -27,31 +30,27 @@ import javax.portlet.PortletContext;
import javax.portlet.PortletRequest; import javax.portlet.PortletRequest;
import javax.portlet.PortletSession; import javax.portlet.PortletSession;
import junit.framework.TestCase; import org.junit.Test;
import org.easymock.MockControl;
import org.springframework.beans.ITestBean; import org.springframework.beans.ITestBean;
import org.springframework.beans.TestBean; import org.springframework.beans.TestBean;
import org.springframework.mock.easymock.AbstractScalarMockTemplate;
import org.springframework.mock.web.portlet.MockActionRequest; import org.springframework.mock.web.portlet.MockActionRequest;
import org.springframework.mock.web.portlet.MockActionResponse; import org.springframework.mock.web.portlet.MockActionResponse;
import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockPortletContext;
import org.springframework.mock.web.portlet.MockPortletRequest; import org.springframework.mock.web.portlet.MockPortletRequest;
import org.springframework.mock.web.portlet.MockPortletSession; import org.springframework.mock.web.portlet.MockPortletSession;
import org.springframework.test.AssertThrows;
import org.springframework.web.util.WebUtils; import org.springframework.web.util.WebUtils;
/** /**
* Unit tests for {@link PortletUtils}.
*
* @author Rick Evans * @author Rick Evans
* @author Chris Beams
*/ */
public final class PortletUtilsTests extends TestCase { public final class PortletUtilsTests {
@Test(expected=IllegalArgumentException.class)
public void testGetTempDirWithNullPortletContext() throws Exception { public void testGetTempDirWithNullPortletContext() throws Exception {
new AssertThrows(IllegalArgumentException.class, "null PortletContext passed as argument") { PortletUtils.getTempDir(null);
public void test() throws Exception {
PortletUtils.getTempDir(null);
}
}.runTest();
} }
public void testGetTempDirSunnyDay() throws Exception { public void testGetTempDirSunnyDay() throws Exception {
@ -64,48 +63,36 @@ public final class PortletUtilsTests extends TestCase {
public void testGetRealPathInterpretsLocationAsRelativeToWebAppRootIfPathDoesNotBeginWithALeadingSlash() throws Exception { public void testGetRealPathInterpretsLocationAsRelativeToWebAppRootIfPathDoesNotBeginWithALeadingSlash() throws Exception {
final String originalPath = "web/foo"; final String originalPath = "web/foo";
final String expectedRealPath = "/" + originalPath; final String expectedRealPath = "/" + originalPath;
new AbstractScalarMockTemplate(PortletContext.class) { PortletContext ctx = createMock(PortletContext.class);
public void setupExpectations(MockControl mockControl, Object mockObject) throws Exception { expect(ctx.getRealPath(expectedRealPath)).andReturn(expectedRealPath);
PortletContext ctx = (PortletContext) mockObject; replay(ctx);
ctx.getRealPath(expectedRealPath);
mockControl.setReturnValue(expectedRealPath); String actualRealPath = PortletUtils.getRealPath(ctx, originalPath);
} assertEquals(expectedRealPath, actualRealPath);
public void doTest(Object mockObject) throws Exception {
PortletContext ctx = (PortletContext) mockObject; verify(ctx);
String actualRealPath = PortletUtils.getRealPath(ctx, originalPath);
assertEquals(expectedRealPath, actualRealPath);
}
}.test();
} }
@Test(expected=IllegalArgumentException.class)
public void testGetRealPathWithNullPortletContext() throws Exception { public void testGetRealPathWithNullPortletContext() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getRealPath(null, "/foo");
public void test() throws Exception {
PortletUtils.getRealPath(null, "/foo");
}
}.runTest();
} }
@Test(expected=NullPointerException.class)
public void testGetRealPathWithNullPath() throws Exception { public void testGetRealPathWithNullPath() throws Exception {
new AssertThrows(NullPointerException.class) { PortletUtils.getRealPath(new MockPortletContext(), null);
public void test() throws Exception {
PortletUtils.getRealPath(new MockPortletContext(), null);
}
}.runTest();
} }
@Test(expected=FileNotFoundException.class)
public void testGetRealPathWithPathThatCannotBeResolvedToFile() throws Exception { public void testGetRealPathWithPathThatCannotBeResolvedToFile() throws Exception {
new AssertThrows(FileNotFoundException.class) { PortletUtils.getRealPath(new MockPortletContext() {
public void test() throws Exception { public String getRealPath(String path) {
PortletUtils.getRealPath(new MockPortletContext() { return null;
public String getRealPath(String path) {
return null;
}
}, "/rubbish");
} }
}.runTest(); }, "/rubbish");
} }
@Test
public void testPassAllParametersToRenderPhase() throws Exception { public void testPassAllParametersToRenderPhase() throws Exception {
MockActionRequest request = new MockActionRequest(); MockActionRequest request = new MockActionRequest();
request.setParameter("William", "Baskerville"); request.setParameter("William", "Baskerville");
@ -116,6 +103,7 @@ public final class PortletUtilsTests extends TestCase {
request.getParameterMap().size(), response.getRenderParameterMap().size()); request.getParameterMap().size(), response.getRenderParameterMap().size());
} }
@Test
public void testGetParametersStartingWith() throws Exception { public void testGetParametersStartingWith() throws Exception {
final String targetPrefix = "francisan_"; final String targetPrefix = "francisan_";
final String badKey = "dominican_Bernard"; final String badKey = "dominican_Bernard";
@ -123,7 +111,7 @@ public final class PortletUtilsTests extends TestCase {
request.setParameter(targetPrefix + "William", "Baskerville"); request.setParameter(targetPrefix + "William", "Baskerville");
request.setParameter(targetPrefix + "Adso", "Melk"); request.setParameter(targetPrefix + "Adso", "Melk");
request.setParameter(badKey, "Gui"); request.setParameter(badKey, "Gui");
Map actualParameters = PortletUtils.getParametersStartingWith(request, targetPrefix); Map<?, ?> actualParameters = PortletUtils.getParametersStartingWith(request, targetPrefix);
assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters); assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters);
assertEquals("Obviously not finding all of the correct parameters", 2, actualParameters.size()); assertEquals("Obviously not finding all of the correct parameters", 2, actualParameters.size());
assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William")); assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William"));
@ -132,6 +120,7 @@ public final class PortletUtilsTests extends TestCase {
actualParameters.containsKey(badKey)); actualParameters.containsKey(badKey));
} }
@Test
public void testGetParametersStartingWithUnpicksScalarParameterValues() throws Exception { public void testGetParametersStartingWithUnpicksScalarParameterValues() throws Exception {
final String targetPrefix = "francisan_"; final String targetPrefix = "francisan_";
final String badKey = "dominican_Bernard"; final String badKey = "dominican_Bernard";
@ -139,7 +128,7 @@ public final class PortletUtilsTests extends TestCase {
request.setParameter(targetPrefix + "William", "Baskerville"); request.setParameter(targetPrefix + "William", "Baskerville");
request.setParameter(targetPrefix + "Adso", new String[]{"Melk", "Of Melk"}); request.setParameter(targetPrefix + "Adso", new String[]{"Melk", "Of Melk"});
request.setParameter(badKey, "Gui"); request.setParameter(badKey, "Gui");
Map actualParameters = PortletUtils.getParametersStartingWith(request, targetPrefix); Map<?, ?> actualParameters = PortletUtils.getParametersStartingWith(request, targetPrefix);
assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters); assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters);
assertEquals("Obviously not finding all of the correct parameters", 2, actualParameters.size()); assertEquals("Obviously not finding all of the correct parameters", 2, actualParameters.size());
assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William")); assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William"));
@ -150,12 +139,13 @@ public final class PortletUtilsTests extends TestCase {
actualParameters.containsKey(badKey)); actualParameters.containsKey(badKey));
} }
@Test
public void testGetParametersStartingWithYieldsEverythingIfTargetPrefixIsNull() throws Exception { public void testGetParametersStartingWithYieldsEverythingIfTargetPrefixIsNull() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
request.setParameter("William", "Baskerville"); request.setParameter("William", "Baskerville");
request.setParameter("Adso", "Melk"); request.setParameter("Adso", "Melk");
request.setParameter("dominican_Bernard", "Gui"); request.setParameter("dominican_Bernard", "Gui");
Map actualParameters = PortletUtils.getParametersStartingWith(request, null); Map<?, ?> actualParameters = PortletUtils.getParametersStartingWith(request, null);
assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters); assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters);
assertEquals("Obviously not finding all of the correct parameters", request.getParameterMap().size(), actualParameters.size()); assertEquals("Obviously not finding all of the correct parameters", request.getParameterMap().size(), actualParameters.size());
assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William")); assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William"));
@ -163,12 +153,13 @@ public final class PortletUtilsTests extends TestCase {
assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("dominican_Bernard")); assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("dominican_Bernard"));
} }
@Test
public void testGetParametersStartingWithYieldsEverythingIfTargetPrefixIsTheEmptyString() throws Exception { public void testGetParametersStartingWithYieldsEverythingIfTargetPrefixIsTheEmptyString() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
request.setParameter("William", "Baskerville"); request.setParameter("William", "Baskerville");
request.setParameter("Adso", "Melk"); request.setParameter("Adso", "Melk");
request.setParameter("dominican_Bernard", "Gui"); request.setParameter("dominican_Bernard", "Gui");
Map actualParameters = PortletUtils.getParametersStartingWith(request, ""); Map<?, ?> actualParameters = PortletUtils.getParametersStartingWith(request, "");
assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters); assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters);
assertEquals("Obviously not finding all of the correct parameters", request.getParameterMap().size(), actualParameters.size()); assertEquals("Obviously not finding all of the correct parameters", request.getParameterMap().size(), actualParameters.size());
assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William")); assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("William"));
@ -176,14 +167,16 @@ public final class PortletUtilsTests extends TestCase {
assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("dominican_Bernard")); assertTrue("Obviously not finding all of the correct parameters", actualParameters.containsKey("dominican_Bernard"));
} }
@Test
public void testGetParametersStartingWithYieldsEmptyNonNullMapWhenNoParamaterExistInRequest() throws Exception { public void testGetParametersStartingWithYieldsEmptyNonNullMapWhenNoParamaterExistInRequest() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
Map actualParameters = PortletUtils.getParametersStartingWith(request, null); Map<?, ?> actualParameters = PortletUtils.getParametersStartingWith(request, null);
assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters); assertNotNull("PortletUtils.getParametersStartingWith(..) must never return a null Map", actualParameters);
assertEquals("Obviously finding some parameters from somewhere (incorrectly)", assertEquals("Obviously finding some parameters from somewhere (incorrectly)",
request.getParameterMap().size(), actualParameters.size()); request.getParameterMap().size(), actualParameters.size());
} }
@Test
public void testGetSubmitParameterWithStraightNameMatch() throws Exception { public void testGetSubmitParameterWithStraightNameMatch() throws Exception {
final String targetSubmitParameter = "William"; final String targetSubmitParameter = "William";
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
@ -195,6 +188,7 @@ public final class PortletUtilsTests extends TestCase {
assertEquals(targetSubmitParameter, submitParameter); assertEquals(targetSubmitParameter, submitParameter);
} }
@Test
public void testGetSubmitParameterWithPrefixedParameterMatch() throws Exception { public void testGetSubmitParameterWithPrefixedParameterMatch() throws Exception {
final String bareParameterName = "William"; final String bareParameterName = "William";
final String targetParameterName = bareParameterName + WebUtils.SUBMIT_IMAGE_SUFFIXES[0]; final String targetParameterName = bareParameterName + WebUtils.SUBMIT_IMAGE_SUFFIXES[0];
@ -206,6 +200,7 @@ public final class PortletUtilsTests extends TestCase {
assertEquals(targetParameterName, submitParameter); assertEquals(targetParameterName, submitParameter);
} }
@Test
public void testGetSubmitParameterWithNoParameterMatchJustReturnsNull() throws Exception { public void testGetSubmitParameterWithNoParameterMatchJustReturnsNull() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
request.setParameter("Bill", "Baskerville"); request.setParameter("Bill", "Baskerville");
@ -214,18 +209,16 @@ public final class PortletUtilsTests extends TestCase {
assertNull(submitParameter); assertNull(submitParameter);
} }
@Test(expected=IllegalArgumentException.class)
public void testGetSubmitParameterWithNullRequest() throws Exception { public void testGetSubmitParameterWithNullRequest() throws Exception {
new AssertThrows(IllegalArgumentException.class) { final String targetSubmitParameter = "William";
public void test() throws Exception { MockPortletRequest request = new MockPortletRequest();
final String targetSubmitParameter = "William"; request.setParameter(targetSubmitParameter, "Baskerville");
MockPortletRequest request = new MockPortletRequest(); request.setParameter("Adso", "Melk");
request.setParameter(targetSubmitParameter, "Baskerville"); PortletUtils.getSubmitParameter(null, targetSubmitParameter);
request.setParameter("Adso", "Melk");
PortletUtils.getSubmitParameter(null, targetSubmitParameter);
}
}.runTest();
} }
@Test
public void testPassAllParametersToRenderPhaseDoesNotPropagateExceptionIfRedirectAlreadySentAtTimeOfCall() throws Exception { public void testPassAllParametersToRenderPhaseDoesNotPropagateExceptionIfRedirectAlreadySentAtTimeOfCall() throws Exception {
MockActionRequest request = new MockActionRequest(); MockActionRequest request = new MockActionRequest();
request.setParameter("William", "Baskerville"); request.setParameter("William", "Baskerville");
@ -240,6 +233,7 @@ public final class PortletUtilsTests extends TestCase {
0, response.getRenderParameterMap().size()); 0, response.getRenderParameterMap().size());
} }
@Test
public void testClearAllRenderParameters() throws Exception { public void testClearAllRenderParameters() throws Exception {
MockActionResponse response = new MockActionResponse(); MockActionResponse response = new MockActionResponse();
response.setRenderParameter("William", "Baskerville"); response.setRenderParameter("William", "Baskerville");
@ -249,8 +243,10 @@ public final class PortletUtilsTests extends TestCase {
0, response.getRenderParameterMap().size()); 0, response.getRenderParameterMap().size());
} }
@Test
public void testClearAllRenderParametersDoesNotPropagateExceptionIfRedirectAlreadySentAtTimeOfCall() throws Exception { public void testClearAllRenderParametersDoesNotPropagateExceptionIfRedirectAlreadySentAtTimeOfCall() throws Exception {
MockActionResponse response = new MockActionResponse() { MockActionResponse response = new MockActionResponse() {
@SuppressWarnings("unchecked")
public void setRenderParameters(Map parameters) { public void setRenderParameters(Map parameters) {
throw new IllegalStateException(); throw new IllegalStateException();
} }
@ -262,6 +258,7 @@ public final class PortletUtilsTests extends TestCase {
2, response.getRenderParameterMap().size()); 2, response.getRenderParameterMap().size());
} }
@Test
public void testHasSubmitParameterWithStraightNameMatch() throws Exception { public void testHasSubmitParameterWithStraightNameMatch() throws Exception {
final String targetSubmitParameter = "William"; final String targetSubmitParameter = "William";
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
@ -271,6 +268,7 @@ public final class PortletUtilsTests extends TestCase {
assertTrue(PortletUtils.hasSubmitParameter(request, targetSubmitParameter)); assertTrue(PortletUtils.hasSubmitParameter(request, targetSubmitParameter));
} }
@Test
public void testHasSubmitParameterWithPrefixedParameterMatch() throws Exception { public void testHasSubmitParameterWithPrefixedParameterMatch() throws Exception {
final String bareParameterName = "William"; final String bareParameterName = "William";
final String targetParameterName = bareParameterName + WebUtils.SUBMIT_IMAGE_SUFFIXES[0]; final String targetParameterName = bareParameterName + WebUtils.SUBMIT_IMAGE_SUFFIXES[0];
@ -280,6 +278,7 @@ public final class PortletUtilsTests extends TestCase {
assertTrue(PortletUtils.hasSubmitParameter(request, bareParameterName)); assertTrue(PortletUtils.hasSubmitParameter(request, bareParameterName));
} }
@Test
public void testHasSubmitParameterWithNoParameterMatch() throws Exception { public void testHasSubmitParameterWithNoParameterMatch() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
request.setParameter("Bill", "Baskerville"); request.setParameter("Bill", "Baskerville");
@ -287,44 +286,39 @@ public final class PortletUtilsTests extends TestCase {
assertFalse(PortletUtils.hasSubmitParameter(request, "William")); assertFalse(PortletUtils.hasSubmitParameter(request, "William"));
} }
@Test(expected=IllegalArgumentException.class)
public void testHasSubmitParameterWithNullRequest() throws Exception { public void testHasSubmitParameterWithNullRequest() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.hasSubmitParameter(null, "bingo");
public void test() throws Exception {
PortletUtils.hasSubmitParameter(null, "bingo");
}
}.runTest();
} }
@SuppressWarnings("unchecked")
@Test(expected=IllegalArgumentException.class)
public void testExposeRequestAttributesWithNullRequest() throws Exception { public void testExposeRequestAttributesWithNullRequest() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.exposeRequestAttributes(null, Collections.EMPTY_MAP);
public void test() throws Exception {
PortletUtils.exposeRequestAttributes(null, Collections.EMPTY_MAP);
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testExposeRequestAttributesWithNullAttributesMap() throws Exception { public void testExposeRequestAttributesWithNullAttributesMap() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.exposeRequestAttributes(new MockPortletRequest(), null);
public void test() throws Exception {
PortletUtils.exposeRequestAttributes(new MockPortletRequest(), null);
}
}.runTest();
} }
@SuppressWarnings("unchecked")
@Test(expected=ClassCastException.class)
public void testExposeRequestAttributesWithAttributesMapContainingBadKeyType() throws Exception { public void testExposeRequestAttributesWithAttributesMapContainingBadKeyType() throws Exception {
new AssertThrows(ClassCastException.class) { MockPortletRequest request = new MockPortletRequest();
public void test() throws Exception { Map attributes = new HashMap<Object, Object>();
MockPortletRequest request = new MockPortletRequest(); attributes.put(new Object(), "bad key type");
Map attributes = new HashMap(); PortletUtils.exposeRequestAttributes(request, attributes);
attributes.put(new Object(), "bad key type");
PortletUtils.exposeRequestAttributes(request, attributes);
}
}.runTest();
} }
@SuppressWarnings("unchecked")
@Test
public void testExposeRequestAttributesSunnyDay() throws Exception { public void testExposeRequestAttributesSunnyDay() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
Map attributes = new HashMap(); Map attributes = new HashMap<Object, Object>();
attributes.put("ace", "Rick Hunter"); attributes.put("ace", "Rick Hunter");
attributes.put("mentor", "Roy Fokker"); attributes.put("mentor", "Roy Fokker");
PortletUtils.exposeRequestAttributes(request, attributes); PortletUtils.exposeRequestAttributes(request, attributes);
@ -334,22 +328,22 @@ public final class PortletUtilsTests extends TestCase {
assertEquals("Roy Fokker", request.getAttribute("mentor")); assertEquals("Roy Fokker", request.getAttribute("mentor"));
} }
@SuppressWarnings("unchecked")
@Test
public void testExposeRequestAttributesWithEmptyAttributesMapIsAnIdempotentOperation() throws Exception { public void testExposeRequestAttributesWithEmptyAttributesMapIsAnIdempotentOperation() throws Exception {
MockPortletRequest request = new MockPortletRequest(); MockPortletRequest request = new MockPortletRequest();
Map attributes = new HashMap(); Map attributes = new HashMap<Object, Object>();
PortletUtils.exposeRequestAttributes(request, attributes); PortletUtils.exposeRequestAttributes(request, attributes);
assertEquals("Obviously all of the entries in the supplied attributes Map are not being copied over (exposed)", assertEquals("Obviously all of the entries in the supplied attributes Map are not being copied over (exposed)",
attributes.size(), countElementsIn(request.getAttributeNames())); attributes.size(), countElementsIn(request.getAttributeNames()));
} }
@Test(expected=IllegalArgumentException.class)
public void testGetOrCreateSessionAttributeWithNullSession() throws Exception { public void testGetOrCreateSessionAttributeWithNullSession() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getOrCreateSessionAttribute(null, "bean", TestBean.class);
public void test() throws Exception {
PortletUtils.getOrCreateSessionAttribute(null, "bean", TestBean.class);
}
}.runTest();
} }
@Test
public void testGetOrCreateSessionAttributeJustReturnsAttributeIfItAlreadyExists() throws Exception { public void testGetOrCreateSessionAttributeJustReturnsAttributeIfItAlreadyExists() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
final TestBean expectedAttribute = new TestBean("Donna Tartt"); final TestBean expectedAttribute = new TestBean("Donna Tartt");
@ -358,6 +352,7 @@ public final class PortletUtilsTests extends TestCase {
assertSame(expectedAttribute, actualAttribute); assertSame(expectedAttribute, actualAttribute);
} }
@Test
public void testGetOrCreateSessionAttributeCreatesAttributeIfItDoesNotAlreadyExist() throws Exception { public void testGetOrCreateSessionAttributeCreatesAttributeIfItDoesNotAlreadyExist() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
Object actualAttribute = PortletUtils.getOrCreateSessionAttribute(session, "bean", TestBean.class); Object actualAttribute = PortletUtils.getOrCreateSessionAttribute(session, "bean", TestBean.class);
@ -365,38 +360,27 @@ public final class PortletUtilsTests extends TestCase {
assertEquals("Wrong type of object being instantiated", TestBean.class, actualAttribute.getClass()); assertEquals("Wrong type of object being instantiated", TestBean.class, actualAttribute.getClass());
} }
@Test(expected=IllegalArgumentException.class)
public void testGetOrCreateSessionAttributeWithNoExistingAttributeAndNullClass() throws Exception { public void testGetOrCreateSessionAttributeWithNoExistingAttributeAndNullClass() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getOrCreateSessionAttribute(new MockPortletSession(), "bean", null);
public void test() throws Exception {
PortletUtils.getOrCreateSessionAttribute(new MockPortletSession(), "bean", null);
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testGetOrCreateSessionAttributeWithNoExistingAttributeAndClassThatIsAnInterfaceType() throws Exception { public void testGetOrCreateSessionAttributeWithNoExistingAttributeAndClassThatIsAnInterfaceType() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getOrCreateSessionAttribute(new MockPortletSession(), "bean", ITestBean.class);
public void test() throws Exception {
PortletUtils.getOrCreateSessionAttribute(new MockPortletSession(), "bean", ITestBean.class);
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testGetOrCreateSessionAttributeWithNoExistingAttributeAndClassWithNoPublicCtor() throws Exception { public void testGetOrCreateSessionAttributeWithNoExistingAttributeAndClassWithNoPublicCtor() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getOrCreateSessionAttribute(new MockPortletSession(), "bean", NoPublicCtor.class);
public void test() throws Exception {
PortletUtils.getOrCreateSessionAttribute(new MockPortletSession(), "bean", NoPublicCtor.class);
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testGetSessionMutexWithNullSession() throws Exception { public void testGetSessionMutexWithNullSession() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getSessionMutex(null);
public void test() throws Exception {
PortletUtils.getSessionMutex(null);
}
}.runTest();
} }
@Test
public void testGetSessionMutexWithNoExistingSessionMutexDefinedJustReturnsTheSessionArgument() throws Exception { public void testGetSessionMutexWithNoExistingSessionMutexDefinedJustReturnsTheSessionArgument() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
Object sessionMutex = PortletUtils.getSessionMutex(session); Object sessionMutex = PortletUtils.getSessionMutex(session);
@ -405,6 +389,7 @@ public final class PortletUtilsTests extends TestCase {
session, sessionMutex); session, sessionMutex);
} }
@Test
public void testGetSessionMutexWithExistingSessionMutexReturnsTheExistingSessionMutex() throws Exception { public void testGetSessionMutexWithExistingSessionMutexReturnsTheExistingSessionMutex() throws Exception {
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
Object expectSessionMutex = new Object(); Object expectSessionMutex = new Object();
@ -415,177 +400,153 @@ public final class PortletUtilsTests extends TestCase {
expectSessionMutex, actualSessionMutex); expectSessionMutex, actualSessionMutex);
} }
@Test(expected=IllegalArgumentException.class)
public void testGetSessionAttributeWithNullPortletRequest() throws Exception { public void testGetSessionAttributeWithNullPortletRequest() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getSessionAttribute(null, "foo");
public void test() throws Exception {
PortletUtils.getSessionAttribute(null, "foo");
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testGetRequiredSessionAttributeWithNullPortletRequest() throws Exception { public void testGetRequiredSessionAttributeWithNullPortletRequest() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.getRequiredSessionAttribute(null, "foo");
public void test() throws Exception {
PortletUtils.getRequiredSessionAttribute(null, "foo");
}
}.runTest();
} }
@Test(expected=IllegalArgumentException.class)
public void testSetSessionAttributeWithNullPortletRequest() throws Exception { public void testSetSessionAttributeWithNullPortletRequest() throws Exception {
new AssertThrows(IllegalArgumentException.class) { PortletUtils.setSessionAttribute(null, "foo", "bar");
public void test() throws Exception {
PortletUtils.setSessionAttribute(null, "foo", "bar");
}
}.runTest();
} }
@Test
public void testGetSessionAttributeDoes_Not_CreateANewSession() throws Exception { public void testGetSessionAttributeDoes_Not_CreateANewSession() throws Exception {
MockControl mock = MockControl.createControl(PortletRequest.class); PortletRequest request = createMock(PortletRequest.class);
PortletRequest request = (PortletRequest) mock.getMock(); expect(request.getPortletSession(false)).andReturn(null);
request.getPortletSession(false); replay(request);
mock.setReturnValue(null);
mock.replay();
Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo"); Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo");
assertNull("Must return null if session attribute does not exist (or if Session does not exist)", sessionAttribute); assertNull("Must return null if session attribute does not exist (or if Session does not exist)", sessionAttribute);
mock.verify(); verify(request);
} }
@Test
public void testGetSessionAttributeWithExistingSession() throws Exception { public void testGetSessionAttributeWithExistingSession() throws Exception {
MockControl mock = MockControl.createControl(PortletRequest.class);
PortletRequest request = (PortletRequest) mock.getMock();
request.getPortletSession(false);
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute("foo", "foo"); session.setAttribute("foo", "foo");
mock.setReturnValue(session);
mock.replay(); PortletRequest request = createMock(PortletRequest.class);
expect(request.getPortletSession(false)).andReturn(session);
replay(request);
Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo"); Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo");
assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute); assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute);
assertEquals("foo", sessionAttribute); assertEquals("foo", sessionAttribute);
mock.verify();
verify(request);
} }
@Test
public void testGetRequiredSessionAttributeWithExistingSession() throws Exception { public void testGetRequiredSessionAttributeWithExistingSession() throws Exception {
MockControl mock = MockControl.createControl(PortletRequest.class);
PortletRequest request = (PortletRequest) mock.getMock();
request.getPortletSession(false);
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
session.setAttribute("foo", "foo"); session.setAttribute("foo", "foo");
mock.setReturnValue(session);
mock.replay(); PortletRequest request = createMock(PortletRequest.class);
expect(request.getPortletSession(false)).andReturn(session);
replay(request);
Object sessionAttribute = PortletUtils.getRequiredSessionAttribute(request, "foo"); Object sessionAttribute = PortletUtils.getRequiredSessionAttribute(request, "foo");
assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute); assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute);
assertEquals("foo", sessionAttribute); assertEquals("foo", sessionAttribute);
mock.verify();
verify(request);
} }
@Test
public void testGetRequiredSessionAttributeWithExistingSessionAndNoAttribute() throws Exception { public void testGetRequiredSessionAttributeWithExistingSessionAndNoAttribute() throws Exception {
MockControl mock = MockControl.createControl(PortletRequest.class);
final PortletRequest request = (PortletRequest) mock.getMock();
request.getPortletSession(false);
MockPortletSession session = new MockPortletSession(); MockPortletSession session = new MockPortletSession();
mock.setReturnValue(session);
mock.replay(); final PortletRequest request = createMock(PortletRequest.class);
new AssertThrows(IllegalStateException.class) { expect(request.getPortletSession(false)).andReturn(session);
public void test() throws Exception { replay(request);
PortletUtils.getRequiredSessionAttribute(request, "foo"); try {
} PortletUtils.getRequiredSessionAttribute(request, "foo");
}.runTest(); fail("expected IllegalStateException");
mock.verify(); } catch (IllegalStateException ex) { /* expected */ }
verify(request);
} }
@Test
public void testSetSessionAttributeWithExistingSessionAndNullValue() throws Exception { public void testSetSessionAttributeWithExistingSessionAndNullValue() throws Exception {
MockControl mockSession = MockControl.createControl(PortletSession.class); PortletSession session = createMock(PortletSession.class);
PortletSession session = (PortletSession) mockSession.getMock(); PortletRequest request = createMock(PortletRequest.class);
MockControl mockRequest = MockControl.createControl(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock();
request.getPortletSession(false); // must not create Session for null value... expect(request.getPortletSession(false)).andReturn(session); // must not create Session for null value...
mockRequest.setReturnValue(session);
session.removeAttribute("foo", PortletSession.APPLICATION_SCOPE); session.removeAttribute("foo", PortletSession.APPLICATION_SCOPE);
mockSession.setVoidCallable(); replay(request, session);
mockRequest.replay();
mockSession.replay();
PortletUtils.setSessionAttribute(request, "foo", null, PortletSession.APPLICATION_SCOPE); PortletUtils.setSessionAttribute(request, "foo", null, PortletSession.APPLICATION_SCOPE);
mockRequest.verify();
mockSession.verify(); verify(request, session);
} }
@Test
public void testSetSessionAttributeWithNoExistingSessionAndNullValue() throws Exception { public void testSetSessionAttributeWithNoExistingSessionAndNullValue() throws Exception {
MockControl mockRequest = MockControl.createControl(PortletRequest.class); PortletRequest request = createMock(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock();
request.getPortletSession(false); // must not create Session for null value... expect(request.getPortletSession(false)).andReturn(null); // must not create Session for null value...
mockRequest.setReturnValue(null); replay(request);
mockRequest.replay();
PortletUtils.setSessionAttribute(request, "foo", null, PortletSession.APPLICATION_SCOPE); PortletUtils.setSessionAttribute(request, "foo", null, PortletSession.APPLICATION_SCOPE);
mockRequest.verify();
verify(request);
} }
@Test
public void testSetSessionAttributeWithExistingSessionAndSpecificScope() throws Exception { public void testSetSessionAttributeWithExistingSessionAndSpecificScope() throws Exception {
MockControl mockSession = MockControl.createControl(PortletSession.class); PortletSession session = createMock(PortletSession.class);
PortletSession session = (PortletSession) mockSession.getMock(); PortletRequest request = createMock(PortletRequest.class);
MockControl mockRequest = MockControl.createControl(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock();
request.getPortletSession(); // must create Session... expect(request.getPortletSession()).andReturn(session); // must not create Session ...
mockRequest.setReturnValue(session);
session.setAttribute("foo", "foo", PortletSession.APPLICATION_SCOPE); session.setAttribute("foo", "foo", PortletSession.APPLICATION_SCOPE);
mockSession.setVoidCallable(); replay(request, session);
mockRequest.replay();
mockSession.replay();
PortletUtils.setSessionAttribute(request, "foo", "foo", PortletSession.APPLICATION_SCOPE); PortletUtils.setSessionAttribute(request, "foo", "foo", PortletSession.APPLICATION_SCOPE);
mockRequest.verify();
mockSession.verify(); verify(request, session);
} }
@Test
public void testGetSessionAttributeWithExistingSessionAndSpecificScope() throws Exception { public void testGetSessionAttributeWithExistingSessionAndSpecificScope() throws Exception {
MockControl mockSession = MockControl.createControl(PortletSession.class); PortletSession session = createMock(PortletSession.class);
PortletSession session = (PortletSession) mockSession.getMock(); PortletRequest request = createMock(PortletRequest.class);
MockControl mockRequest = MockControl.createControl(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock();
request.getPortletSession(false); expect(request.getPortletSession(false)).andReturn(session);
mockRequest.setReturnValue(session); expect(session.getAttribute("foo", PortletSession.APPLICATION_SCOPE)).andReturn("foo");
session.getAttribute("foo", PortletSession.APPLICATION_SCOPE); replay(request, session);
mockSession.setReturnValue("foo");
mockRequest.replay();
mockSession.replay();
Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo", PortletSession.APPLICATION_SCOPE); Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo", PortletSession.APPLICATION_SCOPE);
assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute); assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute);
assertEquals("foo", sessionAttribute); assertEquals("foo", sessionAttribute);
mockRequest.verify();
mockSession.verify(); verify(request, session);
} }
@Test
public void testGetSessionAttributeWithExistingSessionDefaultsToPortletScope() throws Exception { public void testGetSessionAttributeWithExistingSessionDefaultsToPortletScope() throws Exception {
MockControl mockSession = MockControl.createControl(PortletSession.class); PortletSession session = createMock(PortletSession.class);
PortletSession session = (PortletSession) mockSession.getMock(); PortletRequest request = createMock(PortletRequest.class);
MockControl mockRequest = MockControl.createControl(PortletRequest.class);
PortletRequest request = (PortletRequest) mockRequest.getMock();
request.getPortletSession(false); expect(request.getPortletSession(false)).andReturn(session);
mockRequest.setReturnValue(session); expect(session.getAttribute("foo", PortletSession.PORTLET_SCOPE)).andReturn("foo");
session.getAttribute("foo", PortletSession.PORTLET_SCOPE);
mockSession.setReturnValue("foo"); replay(request, session);
mockRequest.replay();
mockSession.replay();
Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo"); Object sessionAttribute = PortletUtils.getSessionAttribute(request, "foo");
assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute); assertNotNull("Must not return null if session attribute exists (and Session exists)", sessionAttribute);
assertEquals("foo", sessionAttribute); assertEquals("foo", sessionAttribute);
mockRequest.verify();
mockSession.verify(); verify(request, session);
} }
private static int countElementsIn(Enumeration enumeration) { private static int countElementsIn(Enumeration<?> enumeration) {
int count = 0; int count = 0;
while (enumeration.hasMoreElements()) { while (enumeration.hasMoreElements()) {
enumeration.nextElement(); enumeration.nextElement();

View File

@ -38,5 +38,6 @@
<classpathentry kind="var" path="IVY_CACHE"/> <classpathentry kind="var" path="IVY_CACHE"/>
<classpathentry kind="var" path="IVY_CACHE/javax.activation/com.springsource.javax.activation/1.1.0/com.springsource.javax.activation-1.1.0.jar" sourcepath="/IVY_CACHE/javax.activation/com.springsource.javax.activation/1.1.0/com.springsource.javax.activation-sources-1.1.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/javax.activation/com.springsource.javax.activation/1.1.0/com.springsource.javax.activation-1.1.0.jar" sourcepath="/IVY_CACHE/javax.activation/com.springsource.javax.activation/1.1.0/com.springsource.javax.activation-sources-1.1.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/javax.el/com.springsource.javax.el/1.0.0/com.springsource.javax.el-1.0.0.jar" sourcepath="/IVY_CACHE/javax.el/com.springsource.javax.el/1.0.0/com.springsource.javax.el-sources-1.0.0.jar"/> <classpathentry kind="var" path="IVY_CACHE/javax.el/com.springsource.javax.el/1.0.0/com.springsource.javax.el-1.0.0.jar" sourcepath="/IVY_CACHE/javax.el/com.springsource.javax.el/1.0.0/com.springsource.javax.el-sources-1.0.0.jar"/>
<classpathentry kind="var" path="IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.lang/2.1.0/com.springsource.org.apache.commons.lang-2.1.0.jar" sourcepath="/IVY_CACHE/org.apache.commons/com.springsource.org.apache.commons.lang/2.1.0/com.springsource.org.apache.commons.lang-sources-2.1.0.jar"/>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
</classpath> </classpath>

View File

@ -458,4 +458,4 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
} }
} }
} }

Some files were not shown because too many files have changed in this diff Show More