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.
@ -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,10 +1,8 @@
<!-- 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

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;
} }
@ -142,13 +140,13 @@ public class ServletWrappingController extends AbstractController
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

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) {