Polishing

This commit is contained in:
Juergen Hoeller 2016-07-20 22:16:35 +02:00
parent a9136d9638
commit b5127dc152
22 changed files with 116 additions and 121 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2014 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.
@ -151,7 +151,7 @@ class ConstructorResolver {
catch (Throwable ex) { catch (Throwable ex) {
throw new BeanCreationException(mbd.getResourceDescription(), beanName, throw new BeanCreationException(mbd.getResourceDescription(), beanName,
"Resolution of declared constructors on bean Class [" + beanClass.getName() + "Resolution of declared constructors on bean Class [" + beanClass.getName() +
"] from ClassLoader [" + beanClass.getClassLoader() + "] failed", ex); "] from ClassLoader [" + beanClass.getClassLoader() + "] failed", ex);
} }
} }
AutowireUtils.sortConstructors(candidates); AutowireUtils.sortConstructors(candidates);
@ -609,8 +609,8 @@ class ConstructorResolver {
private int resolveConstructorArguments(String beanName, RootBeanDefinition mbd, BeanWrapper bw, private int resolveConstructorArguments(String beanName, RootBeanDefinition mbd, BeanWrapper bw,
ConstructorArgumentValues cargs, ConstructorArgumentValues resolvedValues) { ConstructorArgumentValues cargs, ConstructorArgumentValues resolvedValues) {
TypeConverter converter = (this.beanFactory.getCustomTypeConverter() != null ? TypeConverter customConverter = this.beanFactory.getCustomTypeConverter();
this.beanFactory.getCustomTypeConverter() : bw); TypeConverter converter = (customConverter != null ? customConverter : bw);
BeanDefinitionValueResolver valueResolver = BeanDefinitionValueResolver valueResolver =
new BeanDefinitionValueResolver(this.beanFactory, beanName, mbd, converter); new BeanDefinitionValueResolver(this.beanFactory, beanName, mbd, converter);
@ -666,8 +666,8 @@ class ConstructorResolver {
boolean autowiring) throws UnsatisfiedDependencyException { boolean autowiring) throws UnsatisfiedDependencyException {
String methodType = (methodOrCtor instanceof Constructor ? "constructor" : "factory method"); String methodType = (methodOrCtor instanceof Constructor ? "constructor" : "factory method");
TypeConverter converter = (this.beanFactory.getCustomTypeConverter() != null ? TypeConverter customConverter = this.beanFactory.getCustomTypeConverter();
this.beanFactory.getCustomTypeConverter() : bw); TypeConverter converter = (customConverter != null ? customConverter : bw);
ArgumentsHolder args = new ArgumentsHolder(paramTypes.length); ArgumentsHolder args = new ArgumentsHolder(paramTypes.length);
Set<ConstructorArgumentValues.ValueHolder> usedValueHolders = Set<ConstructorArgumentValues.ValueHolder> usedValueHolders =
@ -768,12 +768,13 @@ class ConstructorResolver {
private Object[] resolvePreparedArguments( private Object[] resolvePreparedArguments(
String beanName, RootBeanDefinition mbd, BeanWrapper bw, Member methodOrCtor, Object[] argsToResolve) { String beanName, RootBeanDefinition mbd, BeanWrapper bw, Member methodOrCtor, Object[] argsToResolve) {
Class<?>[] paramTypes = (methodOrCtor instanceof Method ? TypeConverter customConverter = this.beanFactory.getCustomTypeConverter();
((Method) methodOrCtor).getParameterTypes() : ((Constructor<?>) methodOrCtor).getParameterTypes()); TypeConverter converter = (customConverter != null ? customConverter : bw);
TypeConverter converter = (this.beanFactory.getCustomTypeConverter() != null ?
this.beanFactory.getCustomTypeConverter() : bw);
BeanDefinitionValueResolver valueResolver = BeanDefinitionValueResolver valueResolver =
new BeanDefinitionValueResolver(this.beanFactory, beanName, mbd, converter); new BeanDefinitionValueResolver(this.beanFactory, beanName, mbd, converter);
Class<?>[] paramTypes = (methodOrCtor instanceof Method ?
((Method) methodOrCtor).getParameterTypes() : ((Constructor<?>) methodOrCtor).getParameterTypes());
Object[] resolvedArgs = new Object[argsToResolve.length]; Object[] resolvedArgs = new Object[argsToResolve.length];
for (int argIndex = 0; argIndex < argsToResolve.length; argIndex++) { for (int argIndex = 0; argIndex < argsToResolve.length; argIndex++) {
Object argValue = argsToResolve[argIndex]; Object argValue = argsToResolve[argIndex];

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.
@ -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<String>(Arrays.asList(methodNames)); this.managedMethods = new HashSet<String>(Arrays.asList(methodNames));
} }

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

@ -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.
@ -21,7 +21,6 @@ import java.io.InputStream;
import java.io.NotSerializableException; import java.io.NotSerializableException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectStreamClass; import java.io.ObjectStreamClass;
import java.lang.reflect.Proxy;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
@ -101,7 +100,7 @@ public class ConfigurableObjectInputStream extends ObjectInputStream {
} }
} }
try { try {
return Proxy.getProxyClass(this.classLoader, resolvedInterfaces); return ClassUtils.createCompositeInterface(resolvedInterfaces, this.classLoader);
} }
catch (IllegalArgumentException ex) { catch (IllegalArgumentException ex) {
throw new ClassNotFoundException(null, ex); throw new ClassNotFoundException(null, ex);
@ -117,7 +116,7 @@ public class ConfigurableObjectInputStream extends ObjectInputStream {
for (int i = 0; i < interfaces.length; i++) { for (int i = 0; i < interfaces.length; i++) {
resolvedInterfaces[i] = resolveFallbackIfPossible(interfaces[i], ex); resolvedInterfaces[i] = resolveFallbackIfPossible(interfaces[i], ex);
} }
return Proxy.getProxyClass(getFallbackClassLoader(), resolvedInterfaces); return ClassUtils.createCompositeInterface(resolvedInterfaces, getFallbackClassLoader());
} }
} }
} }
@ -139,8 +138,9 @@ public class ConfigurableObjectInputStream extends ObjectInputStream {
/** /**
* Return the fallback ClassLoader to use when no ClassLoader was specified * Return the fallback ClassLoader to use when no ClassLoader was specified
* and ObjectInputStream's own default ClassLoader failed. * and ObjectInputStream's own default class loader failed.
* <p>The default implementation simply returns {@code null}. * <p>The default implementation simply returns {@code null}, indicating
* that no specific fallback is available.
*/ */
protected ClassLoader getFallbackClassLoader() throws IOException { protected ClassLoader getFallbackClassLoader() throws IOException {
return null; return null;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -72,7 +72,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
} }
/** /**
* This implementation returns a File reference for the underlying class path * This implementation returns a File reference for the given URI-identified
* resource, provided that it refers to a file in the file system. * resource, provided that it refers to a file in the file system.
* @see org.springframework.util.ResourceUtils#getFile(java.net.URI, String) * @see org.springframework.util.ResourceUtils#getFile(java.net.URI, String)
*/ */

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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,8 +182,8 @@ public class PathResource extends AbstractResource implements WritableResource {
return this.path.toFile(); return this.path.toFile();
} }
catch (UnsupportedOperationException ex) { catch (UnsupportedOperationException ex) {
// only Paths on the default file system can be converted to a File // Only paths on the default file system can be converted to a File:
// do exception translation for cases where conversion is not possible // Do exception translation for cases where conversion is not possible.
throw new FileNotFoundException(this.path + " cannot be resolved to " + "absolute file path"); throw new FileNotFoundException(this.path + " cannot be resolved to " + "absolute file path");
} }
} }

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.
@ -37,26 +37,26 @@ import java.net.URL;
* @see #getFile() * @see #getFile()
* @see WritableResource * @see WritableResource
* @see ContextResource * @see ContextResource
* @see FileSystemResource
* @see ClassPathResource
* @see UrlResource * @see UrlResource
* @see ClassPathResource
* @see FileSystemResource
* @see PathResource
* @see ByteArrayResource * @see ByteArrayResource
* @see InputStreamResource * @see InputStreamResource
* @see PathResource
*/ */
public interface Resource extends InputStreamSource { public interface Resource extends InputStreamSource {
/** /**
* Return whether this resource actually exists in physical form. * Determine whether this resource actually exists in physical form.
* <p>This method performs a definitive existence check, whereas the * <p>This method performs a definitive existence check, whereas the
* existence of a {@code Resource} handle only guarantees a * existence of a {@code Resource} handle only guarantees a valid
* valid descriptor handle. * descriptor handle.
*/ */
boolean exists(); boolean exists();
/** /**
* Return whether the contents of this resource can be read, * Indicate whether the contents of this resource can be read via
* e.g. via {@link #getInputStream()} or {@link #getFile()}. * {@link #getInputStream()}.
* <p>Will be {@code true} for typical resource descriptors; * <p>Will be {@code true} for typical resource descriptors;
* note that actual content reading may still fail when attempted. * note that actual content reading may still fail when attempted.
* However, a value of {@code false} is a definitive indication * However, a value of {@code false} is a definitive indication
@ -66,8 +66,8 @@ public interface Resource extends InputStreamSource {
boolean isReadable(); boolean isReadable();
/** /**
* Return whether this resource represents a handle with an open * Indicate whether this resource represents a handle with an open stream.
* stream. If true, the InputStream cannot be read multiple times, * If {@code true}, the InputStream cannot be read multiple times,
* and must be read and closed to avoid resource leaks. * and must be read and closed to avoid resource leaks.
* <p>Will be {@code false} for typical resource descriptors. * <p>Will be {@code false} for typical resource descriptors.
*/ */
@ -84,6 +84,7 @@ public interface Resource extends InputStreamSource {
* Return a URI handle for this resource. * Return a URI handle for this resource.
* @throws IOException if the resource cannot be resolved as URI, * @throws IOException if the resource cannot be resolved as URI,
* i.e. if the resource is not available as descriptor * i.e. if the resource is not available as descriptor
* @since 2.5
*/ */
URI getURI() throws IOException; URI getURI() throws IOException;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -61,6 +61,7 @@ public class UrlResource extends AbstractFileResolvingResource {
* Create a new {@code UrlResource} based on the given URI object. * Create a new {@code UrlResource} based on the given URI object.
* @param uri a URI * @param uri a URI
* @throws MalformedURLException if the given URL path is not valid * @throws MalformedURLException if the given URL path is not valid
* @since 2.5
*/ */
public UrlResource(URI uri) throws MalformedURLException { public UrlResource(URI uri) throws MalformedURLException {
Assert.notNull(uri, "URI must not be null"); Assert.notNull(uri, "URI must not be null");

View File

@ -1158,7 +1158,6 @@ public abstract class ClassUtils {
*/ */
public static Class<?> createCompositeInterface(Class<?>[] interfaces, ClassLoader classLoader) { public static Class<?> createCompositeInterface(Class<?>[] interfaces, ClassLoader classLoader) {
Assert.notEmpty(interfaces, "Interfaces must not be empty"); Assert.notEmpty(interfaces, "Interfaces must not be empty");
Assert.notNull(classLoader, "ClassLoader must not be null");
return Proxy.getProxyClass(classLoader, interfaces); return Proxy.getProxyClass(classLoader, interfaces);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -235,6 +235,7 @@ public abstract class ResourceUtils {
* @return a corresponding File object * @return a corresponding File object
* @throws FileNotFoundException if the URL cannot be resolved to * @throws FileNotFoundException if the URL cannot be resolved to
* a file in the file system * a file in the file system
* @since 2.5
*/ */
public static File getFile(URI resourceUri) throws FileNotFoundException { public static File getFile(URI resourceUri) throws FileNotFoundException {
return getFile(resourceUri, "URI"); return getFile(resourceUri, "URI");
@ -249,6 +250,7 @@ public abstract class ResourceUtils {
* @return a corresponding File object * @return a corresponding File object
* @throws FileNotFoundException if the URL cannot be resolved to * @throws FileNotFoundException if the URL cannot be resolved to
* a file in the file system * a file in the file system
* @since 2.5
*/ */
public static File getFile(URI resourceUri, String description) throws FileNotFoundException { public static File getFile(URI resourceUri, String description) throws FileNotFoundException {
Assert.notNull(resourceUri, "Resource URI must not be null"); Assert.notNull(resourceUri, "Resource URI must not be null");

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

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -75,10 +75,10 @@ public class CollectionToCollectionConverterTests {
conversionService.addConverterFactory(new StringToNumberConverterFactory()); conversionService.addConverterFactory(new StringToNumberConverterFactory());
assertTrue(conversionService.canConvert(sourceType, targetType)); assertTrue(conversionService.canConvert(sourceType, targetType));
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<String> result = (List<String>) conversionService.convert(list, sourceType, targetType); List<Integer> result = (List<Integer>) conversionService.convert(list, sourceType, targetType);
assertFalse(list.equals(result)); assertFalse(list.equals(result));
assertEquals(9, result.get(0)); assertEquals(9, result.get(0).intValue());
assertEquals(37, result.get(1)); assertEquals(37, result.get(1).intValue());
} }
@Test @Test
@ -262,6 +262,25 @@ public class CollectionToCollectionConverterTests {
} }
public ArrayList<Integer> scalarListTarget;
public List<Integer> emptyListTarget;
public LinkedList<Integer> emptyListDifferentTarget;
public List<List<List<Integer>>> objectToCollection;
public List<String> strings;
public List<?> list = Collections.emptyList();
public Collection<?> wildcardCollection = Collections.emptyList();
public List<Resource> resources;
public EnumSet<MyEnum> enumSet;
public static abstract class BaseResource implements Resource { public static abstract class BaseResource implements Resource {
@Override @Override
@ -330,25 +349,6 @@ public class CollectionToCollectionConverterTests {
} }
public static enum MyEnum {A, B, C} public enum MyEnum {A, B, C}
public ArrayList<Integer> scalarListTarget;
public List<Integer> emptyListTarget;
public LinkedList<Integer> emptyListDifferentTarget;
public List<List<List<Integer>>> objectToCollection;
public List<String> strings;
public List<?> list = Collections.emptyList();
public Collection<?> wildcardCollection = Collections.emptyList();
public List<Resource> resources;
public EnumSet<MyEnum> enumSet;
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -58,7 +58,7 @@ import org.springframework.util.StringUtils;
* <p>To facilitate mapping between columns and fields that don't have matching names, * <p>To facilitate mapping between columns and fields that don't have matching names,
* try using column aliases in the SQL statement like "select fname as first_name from customer". * try using column aliases in the SQL statement like "select fname as first_name from customer".
* *
* <p>For 'null' values read from the databasem, we will attempt to call the setter, but in the case of * <p>For 'null' values read from the database, we will attempt to call the setter, but in the case of
* Java primitives, this causes a TypeMismatchException. This class can be configured (using the * Java primitives, this causes a TypeMismatchException. This class can be configured (using the
* primitivesDefaultedForNullValue property) to trap this exception and use the primitives default value. * primitivesDefaultedForNullValue property) to trap this exception and use the primitives default value.
* Be aware that if you use the values from the generated bean to update the database the primitive value * Be aware that if you use the values from the generated bean to update the database the primitive value

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

@ -6,11 +6,9 @@ configurations {
} }
dependencies { dependencies {
castor "org.codehaus.castor:castor-anttasks:1.4.1" castor "org.codehaus.castor:castor-anttasks:1.4.1"
castor "org.apache.velocity:velocity:1.7" jibx "org.jibx:jibx-bind:1.2.6"
xjc "com.sun.xml.bind:jaxb-xjc:2.1.17" xjc "com.sun.xml.bind:jaxb-xjc:2.1.17"
xmlbeans "org.apache.xmlbeans:xmlbeans:2.6.0" xmlbeans "org.apache.xmlbeans:xmlbeans:2.6.0"
jibx "org.jibx:jibx-bind:1.2.6"
jibx "bcel:bcel:5.1"
} }
ext.genSourcesDir = "${buildDir}/generated-sources" ext.genSourcesDir = "${buildDir}/generated-sources"

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2014 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.
@ -17,12 +17,13 @@
package org.springframework.http; package org.springframework.http;
/** /**
* Java 5 enumeration of HTTP status codes. * Enumeration of HTTP status codes.
* *
* <p>The HTTP status code series can be retrieved via {@link #series()}. * <p>The HTTP status code series can be retrieved via {@link #series()}.
* *
* @author Arjen Poutsma * @author Arjen Poutsma
* @author Sebastien Deleuze * @author Sebastien Deleuze
* @since 3.0
* @see HttpStatus.Series * @see HttpStatus.Series
* @see <a href="http://www.iana.org/assignments/http-status-codes">HTTP Status Code Registry</a> * @see <a href="http://www.iana.org/assignments/http-status-codes">HTTP Status Code Registry</a>
* @see <a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes">List of HTTP status codes - Wikipedia</a> * @see <a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes">List of HTTP status codes - Wikipedia</a>
@ -385,17 +386,17 @@ public enum HttpStatus {
NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required"); NETWORK_AUTHENTICATION_REQUIRED(511, "Network Authentication Required");
private final int value; private final int value;
private final String reasonPhrase; private final String reasonPhrase;
private HttpStatus(int value, String reasonPhrase) { HttpStatus(int value, String reasonPhrase) {
this.value = value; this.value = value;
this.reasonPhrase = reasonPhrase; this.reasonPhrase = reasonPhrase;
} }
/** /**
* Return the integer value of this status code. * Return the integer value of this status code.
*/ */
@ -407,7 +408,7 @@ public enum HttpStatus {
* Return the reason phrase of this status code. * Return the reason phrase of this status code.
*/ */
public String getReasonPhrase() { public String getReasonPhrase() {
return reasonPhrase; return this.reasonPhrase;
} }
/** /**
@ -416,7 +417,7 @@ public enum HttpStatus {
* This is a shortcut for checking the value of {@link #series()}. * This is a shortcut for checking the value of {@link #series()}.
*/ */
public boolean is1xxInformational() { public boolean is1xxInformational() {
return (Series.INFORMATIONAL.equals(series())); return Series.INFORMATIONAL.equals(series());
} }
/** /**
@ -425,7 +426,7 @@ public enum HttpStatus {
* This is a shortcut for checking the value of {@link #series()}. * This is a shortcut for checking the value of {@link #series()}.
*/ */
public boolean is2xxSuccessful() { public boolean is2xxSuccessful() {
return (Series.SUCCESSFUL.equals(series())); return Series.SUCCESSFUL.equals(series());
} }
/** /**
@ -434,7 +435,7 @@ public enum HttpStatus {
* This is a shortcut for checking the value of {@link #series()}. * This is a shortcut for checking the value of {@link #series()}.
*/ */
public boolean is3xxRedirection() { public boolean is3xxRedirection() {
return (Series.REDIRECTION.equals(series())); return Series.REDIRECTION.equals(series());
} }
@ -444,7 +445,7 @@ public enum HttpStatus {
* This is a shortcut for checking the value of {@link #series()}. * This is a shortcut for checking the value of {@link #series()}.
*/ */
public boolean is4xxClientError() { public boolean is4xxClientError() {
return (Series.CLIENT_ERROR.equals(series())); return Series.CLIENT_ERROR.equals(series());
} }
/** /**
@ -453,7 +454,7 @@ public enum HttpStatus {
* This is a shortcut for checking the value of {@link #series()}. * This is a shortcut for checking the value of {@link #series()}.
*/ */
public boolean is5xxServerError() { public boolean is5xxServerError() {
return (Series.SERVER_ERROR.equals(series())); return Series.SERVER_ERROR.equals(series());
} }
/** /**
@ -469,7 +470,7 @@ public enum HttpStatus {
*/ */
@Override @Override
public String toString() { public String toString() {
return Integer.toString(value); return Integer.toString(this.value);
} }
@ -490,10 +491,10 @@ public enum HttpStatus {
/** /**
* Java 5 enumeration of HTTP status series. * Enumeration of HTTP status series.
* <p>Retrievable via {@link HttpStatus#series()}. * <p>Retrievable via {@link HttpStatus#series()}.
*/ */
public static enum Series { public enum Series {
INFORMATIONAL(1), INFORMATIONAL(1),
SUCCESSFUL(2), SUCCESSFUL(2),
@ -503,7 +504,7 @@ public enum HttpStatus {
private final int value; private final int value;
private Series(int value) { Series(int value) {
this.value = value; this.value = value;
} }
@ -527,7 +528,6 @@ public enum HttpStatus {
public static Series valueOf(HttpStatus status) { public static Series valueOf(HttpStatus status) {
return valueOf(status.value); return valueOf(status.value);
} }
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -179,8 +179,8 @@ public class UrlPathHelper {
String sanitizedPathWithinApp = getSanitizedPath(pathWithinApp); String sanitizedPathWithinApp = getSanitizedPath(pathWithinApp);
String path; String path;
// if the app container sanitized the servletPath, check against the sanitized version // If the app container sanitized the servletPath, check against the sanitized version
if (servletPath.indexOf(sanitizedPathWithinApp) != -1) { if (servletPath.contains(sanitizedPathWithinApp)) {
path = getRemainingPath(sanitizedPathWithinApp, servletPath, false); path = getRemainingPath(sanitizedPathWithinApp, servletPath, false);
} }
else { else {
@ -485,8 +485,8 @@ public class UrlPathHelper {
* @return the updated URI string * @return the updated URI string
*/ */
public String removeSemicolonContent(String requestUri) { public String removeSemicolonContent(String requestUri) {
return this.removeSemicolonContent ? return (this.removeSemicolonContent ?
removeSemicolonContentInternal(requestUri) : removeJsessionid(requestUri); removeSemicolonContentInternal(requestUri) : removeJsessionid(requestUri));
} }
private String removeSemicolonContentInternal(String requestUri) { private String removeSemicolonContentInternal(String requestUri) {

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

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2014 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.
@ -78,13 +78,11 @@ import org.springframework.web.servlet.ModelAndView;
* @author Juergen Hoeller * @author Juergen Hoeller
* @since 1.1.1 * @since 1.1.1
* @see ServletForwardingController * @see ServletForwardingController
* @see org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor
* @see org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
*/ */
public class ServletWrappingController extends AbstractController public class ServletWrappingController extends AbstractController
implements BeanNameAware, InitializingBean, DisposableBean { implements BeanNameAware, InitializingBean, DisposableBean {
private Class<?> servletClass; private Class<? extends Servlet> servletClass;
private String servletName; private String servletName;
@ -100,7 +98,7 @@ public class ServletWrappingController extends AbstractController
* Needs to implement {@code javax.servlet.Servlet}. * Needs to implement {@code javax.servlet.Servlet}.
* @see javax.servlet.Servlet * @see javax.servlet.Servlet
*/ */
public void setServletClass(Class<?> servletClass) { public void setServletClass(Class<? extends Servlet> servletClass) {
this.servletClass = servletClass; this.servletClass = servletClass;
} }
@ -137,23 +135,23 @@ public class ServletWrappingController extends AbstractController
} }
if (!Servlet.class.isAssignableFrom(this.servletClass)) { if (!Servlet.class.isAssignableFrom(this.servletClass)) {
throw new IllegalArgumentException("servletClass [" + this.servletClass.getName() + throw new IllegalArgumentException("servletClass [" + this.servletClass.getName() +
"] needs to implement interface [javax.servlet.Servlet]"); "] needs to implement interface [javax.servlet.Servlet]");
} }
if (this.servletName == null) { if (this.servletName == null) {
this.servletName = this.beanName; this.servletName = this.beanName;
} }
this.servletInstance = (Servlet) this.servletClass.newInstance(); this.servletInstance = this.servletClass.newInstance();
this.servletInstance.init(new DelegatingServletConfig()); this.servletInstance.init(new DelegatingServletConfig());
} }
/** /**
* Invoke the the wrapped Servlet instance. * Invoke the wrapped Servlet instance.
* @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) * @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
*/ */
@Override @Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception { throws Exception {
this.servletInstance.service(request, response); this.servletInstance.service(request, response);
return null; return null;

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.
@ -73,7 +73,7 @@ import org.springframework.web.util.WebUtils;
*/ */
public class XsltView extends AbstractUrlBasedView { public class XsltView extends AbstractUrlBasedView {
private Class<?> transformerFactoryClass; private Class<? extends TransformerFactory> transformerFactoryClass;
private String sourceKey; private String sourceKey;
@ -97,8 +97,7 @@ public class XsltView extends AbstractUrlBasedView {
* <p>The default constructor of the specified class will be called * <p>The default constructor of the specified class will be called
* to build the TransformerFactory for this view. * to build the TransformerFactory for this view.
*/ */
public void setTransformerFactoryClass(Class<?> transformerFactoryClass) { public void setTransformerFactoryClass(Class<? extends TransformerFactory> transformerFactoryClass) {
Assert.isAssignable(TransformerFactory.class, transformerFactoryClass);
this.transformerFactoryClass = transformerFactoryClass; this.transformerFactoryClass = transformerFactoryClass;
} }
@ -195,10 +194,10 @@ public class XsltView extends AbstractUrlBasedView {
* @see #setTransformerFactoryClass * @see #setTransformerFactoryClass
* @see #getTransformerFactory() * @see #getTransformerFactory()
*/ */
protected TransformerFactory newTransformerFactory(Class<?> transformerFactoryClass) { protected TransformerFactory newTransformerFactory(Class<? extends TransformerFactory> transformerFactoryClass) {
if (transformerFactoryClass != null) { if (transformerFactoryClass != null) {
try { try {
return (TransformerFactory) transformerFactoryClass.newInstance(); return transformerFactoryClass.newInstance();
} }
catch (Exception ex) { catch (Exception ex) {
throw new TransformerFactoryConfigurationError(ex, "Could not instantiate TransformerFactory"); throw new TransformerFactoryConfigurationError(ex, "Could not instantiate TransformerFactory");

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2015 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.
@ -72,25 +72,23 @@ public abstract class AbstractHandshakeHandler implements HandshakeHandler, Life
private static final Charset UTF8_CHARSET = Charset.forName("UTF-8"); private static final Charset UTF8_CHARSET = Charset.forName("UTF-8");
private static final ClassLoader classLoader = AbstractHandshakeHandler.class.getClassLoader();
private static final boolean jettyWsPresent = ClassUtils.isPresent( private static final boolean jettyWsPresent = ClassUtils.isPresent(
"org.eclipse.jetty.websocket.server.WebSocketServerFactory", classLoader); "org.eclipse.jetty.websocket.server.WebSocketServerFactory", AbstractHandshakeHandler.class.getClassLoader());
private static final boolean tomcatWsPresent = ClassUtils.isPresent( private static final boolean tomcatWsPresent = ClassUtils.isPresent(
"org.apache.tomcat.websocket.server.WsHttpUpgradeHandler", classLoader); "org.apache.tomcat.websocket.server.WsHttpUpgradeHandler", AbstractHandshakeHandler.class.getClassLoader());
private static final boolean undertowWsPresent = ClassUtils.isPresent( private static final boolean undertowWsPresent = ClassUtils.isPresent(
"io.undertow.websockets.jsr.ServerWebSocketContainer", classLoader); "io.undertow.websockets.jsr.ServerWebSocketContainer", AbstractHandshakeHandler.class.getClassLoader());
private static final boolean glassfishWsPresent = ClassUtils.isPresent( private static final boolean glassfishWsPresent = ClassUtils.isPresent(
"org.glassfish.tyrus.servlet.TyrusHttpUpgradeHandler", classLoader); "org.glassfish.tyrus.servlet.TyrusHttpUpgradeHandler", AbstractHandshakeHandler.class.getClassLoader());
private static final boolean weblogicWsPresent = ClassUtils.isPresent( private static final boolean weblogicWsPresent = ClassUtils.isPresent(
"weblogic.websocket.tyrus.TyrusServletWriter", classLoader); "weblogic.websocket.tyrus.TyrusServletWriter", AbstractHandshakeHandler.class.getClassLoader());
private static final boolean websphereWsPresent = ClassUtils.isPresent( private static final boolean websphereWsPresent = ClassUtils.isPresent(
"com.ibm.websphere.wsoc.WsWsocServerContainer", classLoader); "com.ibm.websphere.wsoc.WsWsocServerContainer", AbstractHandshakeHandler.class.getClassLoader());
protected final Log logger = LogFactory.getLog(getClass()); protected final Log logger = LogFactory.getLog(getClass());
@ -146,7 +144,7 @@ public abstract class AbstractHandshakeHandler implements HandshakeHandler, Life
} }
try { try {
Class<?> clazz = ClassUtils.forName(className, classLoader); Class<?> clazz = ClassUtils.forName(className, AbstractHandshakeHandler.class.getClassLoader());
return (RequestUpgradeStrategy) clazz.newInstance(); return (RequestUpgradeStrategy) clazz.newInstance();
} }
catch (Throwable ex) { catch (Throwable ex) {