Polishing

This commit is contained in:
Juergen Hoeller 2016-07-19 20:09:00 +02:00
parent fd4b5ac892
commit a4743c07d4
14 changed files with 42 additions and 56 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -37,7 +37,7 @@ import static org.junit.Assert.*;
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Chris Beams * @author Chris Beams
*/ */
public final class ArgumentBindingTests { public class ArgumentBindingTests {
@Test(expected=IllegalArgumentException.class) @Test(expected=IllegalArgumentException.class)
public void testBindingInPointcutUsedByAdvice() { public void testBindingInPointcutUsedByAdvice() {
@ -45,8 +45,8 @@ public final class ArgumentBindingTests {
AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb); AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb);
proxyFactory.addAspect(NamedPointcutWithArgs.class); proxyFactory.addAspect(NamedPointcutWithArgs.class);
ITestBean proxiedTestBean = (ITestBean) proxyFactory.getProxy(); ITestBean proxiedTestBean = proxyFactory.getProxy();
proxiedTestBean.setName("Supercalifragalisticexpialidocious"); // should throw proxiedTestBean.setName("Supercalifragalisticexpialidocious");
} }
@Test(expected=IllegalStateException.class) @Test(expected=IllegalStateException.class)
@ -55,8 +55,8 @@ public final class ArgumentBindingTests {
AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb); AspectJProxyFactory proxyFactory = new AspectJProxyFactory(tb);
proxyFactory.addAspect(PointcutWithAnnotationArgument.class); proxyFactory.addAspect(PointcutWithAnnotationArgument.class);
ITransactionalBean proxiedTestBean = (ITransactionalBean) proxyFactory.getProxy(); ITransactionalBean proxiedTestBean = proxyFactory.getProxy();
proxiedTestBean.doInTransaction(); // should throw proxiedTestBean.doInTransaction();
} }
@Test @Test
@ -71,6 +71,7 @@ public final class ArgumentBindingTests {
assertEquals("formal", pnames[0]); assertEquals("formal", pnames[0]);
} }
public void methodWithOneParam(String aParam) { public void methodWithOneParam(String aParam) {
} }
@ -100,9 +101,6 @@ public final class ArgumentBindingTests {
} }
/**
* @author Juergen Hoeller
*/
@Aspect @Aspect
class PointcutWithAnnotationArgument { class PointcutWithAnnotationArgument {
@ -115,9 +113,6 @@ class PointcutWithAnnotationArgument {
} }
/**
* @author Adrian Colyer
*/
@Aspect @Aspect
class NamedPointcutWithArgs { class NamedPointcutWithArgs {

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans> <beans>

View File

@ -72,7 +72,7 @@ public class MethodNameBasedMBeanInfoAssembler extends AbstractConfigurableMBean
* @param methodNames an array of method names indicating the methods to use * @param methodNames an array of method names indicating the methods to use
* @see #setMethodMappings * @see #setMethodMappings
*/ */
public void setManagedMethods(String[] methodNames) { public void setManagedMethods(String... methodNames) {
this.managedMethods = new HashSet<>(Arrays.asList(methodNames)); this.managedMethods = new HashSet<>(Arrays.asList(methodNames));
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -27,18 +27,19 @@ import static org.junit.Assert.*;
* @author Adrian Colyer * @author Adrian Colyer
* @author Chris Beams * @author Chris Beams
*/ */
public final class AnnotationBindingTests { public class AnnotationBindingTests {
private AnnotatedTestBean testBean; private AnnotatedTestBean testBean;
@Before @Before
public void setUp() { public void setUp() {
ClassPathXmlApplicationContext ctx = ClassPathXmlApplicationContext ctx =
new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-context.xml", getClass()); new ClassPathXmlApplicationContext(getClass().getSimpleName() + "-context.xml", getClass());
testBean = (AnnotatedTestBean) ctx.getBean("testBean"); testBean = (AnnotatedTestBean) ctx.getBean("testBean");
} }
@Test @Test
public void testAnnotationBindingInAroundAdvice() { public void testAnnotationBindingInAroundAdvice() {
assertEquals("this value", testBean.doThis()); assertEquals("this value", testBean.doThis());

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -182,19 +182,19 @@ public class LocalStatelessSessionProxyFactoryBeanTests {
} }
public static interface MyHome extends EJBLocalHome { public interface MyHome extends EJBLocalHome {
MyBusinessMethods create() throws CreateException; MyBusinessMethods create() throws CreateException;
} }
public static interface MyBusinessMethods { public interface MyBusinessMethods {
int getValue(); int getValue();
} }
public static interface MyEjb extends EJBLocalObject, MyBusinessMethods { public interface MyEjb extends EJBLocalObject, MyBusinessMethods {
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2016 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -279,26 +279,25 @@ public class SimpleRemoteStatelessSessionProxyFactoryBeanTests extends SimpleRem
} }
protected static interface MyHome extends EJBHome { protected interface MyHome extends EJBHome {
MyBusinessMethods create() throws CreateException, RemoteException; MyBusinessMethods create() throws CreateException, RemoteException;
} }
protected static interface MyBusinessMethods { protected interface MyBusinessMethods {
int getValue() throws RemoteException; int getValue() throws RemoteException;
} }
protected static interface MyLocalBusinessMethods { protected interface MyLocalBusinessMethods {
int getValue(); int getValue();
} }
protected static interface MyEjb extends EJBObject, MyBusinessMethods { protected interface MyEjb extends EJBObject, MyBusinessMethods {
} }
} }

View File

@ -47,7 +47,7 @@ public class MethodNameBasedMBeanInfoAssemblerMappedTests extends AbstractJmxAss
public void testWithFallThrough() throws Exception { public void testWithFallThrough() throws Exception {
MethodNameBasedMBeanInfoAssembler assembler = MethodNameBasedMBeanInfoAssembler assembler =
getWithMapping("foobar", "add,myOperation,getName,setName,getAge"); getWithMapping("foobar", "add,myOperation,getName,setName,getAge");
assembler.setManagedMethods(new String[]{"getNickName", "setNickName"}); assembler.setManagedMethods("getNickName", "setNickName");
ModelMBeanInfo inf = assembler.getMBeanInfo(getBean(), getObjectName()); ModelMBeanInfo inf = assembler.getMBeanInfo(getBean(), getObjectName());
MBeanAttributeInfo attr = inf.getAttribute("NickName"); MBeanAttributeInfo attr = inf.getAttribute("NickName");

View File

@ -52,7 +52,7 @@ public class MethodNameBasedMBeanInfoAssemblerTests extends AbstractJmxAssembler
@Override @Override
protected MBeanInfoAssembler getAssembler() { protected MBeanInfoAssembler getAssembler() {
MethodNameBasedMBeanInfoAssembler assembler = new MethodNameBasedMBeanInfoAssembler(); MethodNameBasedMBeanInfoAssembler assembler = new MethodNameBasedMBeanInfoAssembler();
assembler.setManagedMethods(new String[] {"add", "myOperation", "getName", "setName", "getAge"}); assembler.setManagedMethods("add", "myOperation", "getName", "setName", "getAge");
return assembler; return assembler;
} }

View File

@ -28,7 +28,6 @@ import org.springframework.aop.support.AopUtils;
import org.springframework.aop.target.dynamic.Refreshable; import org.springframework.aop.target.dynamic.Refreshable;
import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.UnsatisfiedDependencyException;
import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
@ -268,7 +267,7 @@ public class GroovyScriptFactoryTests {
@Test @Test
public void testScriptedClassThatDoesNotHaveANoArgCtor() throws Exception { public void testScriptedClassThatDoesNotHaveANoArgCtor() throws Exception {
ScriptSource script = mock(ScriptSource.class); ScriptSource script = mock(ScriptSource.class);
final String badScript = "class Foo { public Foo(String foo) {}}"; String badScript = "class Foo { public Foo(String foo) {}}";
given(script.getScriptAsString()).willReturn(badScript); given(script.getScriptAsString()).willReturn(badScript);
given(script.suggestedClassName()).willReturn("someName"); given(script.suggestedClassName()).willReturn("someName");
GroovyScriptFactory factory = new GroovyScriptFactory(ScriptFactoryPostProcessor.INLINE_SCRIPT_PREFIX GroovyScriptFactory factory = new GroovyScriptFactory(ScriptFactoryPostProcessor.INLINE_SCRIPT_PREFIX
@ -278,25 +277,18 @@ public class GroovyScriptFactoryTests {
fail("Must have thrown a ScriptCompilationException (no public no-arg ctor in scripted class)."); fail("Must have thrown a ScriptCompilationException (no public no-arg ctor in scripted class).");
} }
catch (ScriptCompilationException expected) { catch (ScriptCompilationException expected) {
assertTrue(expected.contains(InstantiationException.class)); assertTrue(expected.contains(NoSuchMethodException.class));
} }
} }
@Test @Test
public void testScriptedClassThatHasNoPublicNoArgCtor() throws Exception { public void testScriptedClassThatHasNoPublicNoArgCtor() throws Exception {
ScriptSource script = mock(ScriptSource.class); ScriptSource script = mock(ScriptSource.class);
final String badScript = "class Foo { protected Foo() {}}"; String badScript = "class Foo { protected Foo() {} \n String toString() { 'X' }}";
given(script.getScriptAsString()).willReturn(badScript); given(script.getScriptAsString()).willReturn(badScript);
given(script.suggestedClassName()).willReturn("someName"); given(script.suggestedClassName()).willReturn("someName");
GroovyScriptFactory factory = new GroovyScriptFactory(ScriptFactoryPostProcessor.INLINE_SCRIPT_PREFIX GroovyScriptFactory factory = new GroovyScriptFactory(ScriptFactoryPostProcessor.INLINE_SCRIPT_PREFIX + badScript);
+ badScript); assertEquals("X", factory.getScriptedObject(script).toString());
try {
factory.getScriptedObject(script);
fail("Must have thrown a ScriptCompilationException (no oublic no-arg ctor in scripted class).");
}
catch (ScriptCompilationException expected) {
assertTrue(expected.contains(IllegalAccessException.class));
}
} }
@Test @Test
@ -553,7 +545,7 @@ public class GroovyScriptFactoryTests {
testMetaClass("org/springframework/scripting/groovy/calculators-with-xsd.xml"); testMetaClass("org/springframework/scripting/groovy/calculators-with-xsd.xml");
} }
private void testMetaClass(final String xmlFile) { private void testMetaClass(String xmlFile) {
// expect the exception we threw in the custom metaclass to show it got invoked // expect the exception we threw in the custom metaclass to show it got invoked
try { try {
ApplicationContext ctx = new ClassPathXmlApplicationContext(xmlFile); ApplicationContext ctx = new ClassPathXmlApplicationContext(xmlFile);

View File

@ -350,7 +350,8 @@ public class AnnotationAttributes extends LinkedHashMap<String, Object> {
} }
private void assertAttributePresence(String attributeName, Object attributeValue) { private void assertAttributePresence(String attributeName, Object attributeValue) {
Assert.notNull(attributeValue, () -> String.format("Attribute '%s' not found in attributes for annotation [%s]", Assert.notNull(attributeValue, () -> String.format(
"Attribute '%s' not found in attributes for annotation [%s]",
attributeName, this.displayName)); attributeName, this.displayName));
} }

View File

@ -1237,8 +1237,8 @@ public abstract class AnnotationUtils {
(annotatedElement != null ? annotatedElement.toString() : "unknown element"); (annotatedElement != null ? annotatedElement.toString() : "unknown element");
throw new AnnotationConfigurationException(String.format( throw new AnnotationConfigurationException(String.format(
"In AnnotationAttributes for annotation [%s] declared on %s, " + "In AnnotationAttributes for annotation [%s] declared on %s, " +
"attribute '%s' and its alias '%s' are declared with values of [%s] and [%s], " + "attribute '%s' and its alias '%s' are declared with values of [%s] and [%s], " +
"but only one is permitted.", annotationType.getName(), elementAsString, "but only one is permitted.", annotationType.getName(), elementAsString,
attributeName, aliasedAttributeName, ObjectUtils.nullSafeToString(value), attributeName, aliasedAttributeName, ObjectUtils.nullSafeToString(value),
ObjectUtils.nullSafeToString(aliasedValue))); ObjectUtils.nullSafeToString(aliasedValue)));
} }

View File

@ -80,7 +80,7 @@ public class SerializableTypeWrapperTests {
} }
@Test @Test
public void forTypeParamters() throws Exception { public void forTypeParameters() throws Exception {
Type type = SerializableTypeWrapper.forTypeParameters(List.class)[0]; Type type = SerializableTypeWrapper.forTypeParameters(List.class)[0];
assertThat(type.toString(), equalTo("E")); assertThat(type.toString(), equalTo("E"));
assertSerializable(type); assertSerializable(type);

View File

@ -107,7 +107,7 @@ import org.springframework.util.StringUtils;
* </pre> * </pre>
* *
* <p>Note that the above examples aim to demonstrate the general idea of using * <p>Note that the above examples aim to demonstrate the general idea of using
* header accessors. The most likely usage however is through sub-classes. * header accessors. The most likely usage however is through subclasses.
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Juergen Hoeller * @author Juergen Hoeller

View File

@ -1,11 +1,9 @@
<!-- File containing all charcter entity references definied <!-- File containing all character entity references defined
by the HTML 4.0 standard. --> by the HTML 4.0 standard. -->
<!-- Valuable informations and a complete description of the <!-- Valuable information and a complete description of the
HTML 4.0 character set can be found at HTML 4.0 character set can be found at
http://www.w3.org/TR/html4/charset.html. http://www.w3.org/TR/html4/charset.html. -->
-->
<!-- Portions © International Organization for Standardization 1986 <!-- Portions © International Organization for Standardization 1986
Permission to copy in any form is granted for use with Permission to copy in any form is granted for use with
conforming SGML systems and applications as defined in conforming SGML systems and applications as defined in
@ -520,4 +518,4 @@
<!ENTITY rsaquo CDATA "&#8250;" -- single right-pointing angle quotation mark, <!ENTITY rsaquo CDATA "&#8250;" -- single right-pointing angle quotation mark,
U+203A ISO proposed --> U+203A ISO proposed -->
<!-- rsaquo is proposed but not yet ISO standardized --> <!-- rsaquo is proposed but not yet ISO standardized -->
<!ENTITY euro CDATA "&#8364;" -- euro sign, U+20AC NEW --> <!ENTITY euro CDATA "&#8364;" -- euro sign, U+20AC NEW -->