Polishing
This commit is contained in:
parent
a9136d9638
commit
b5127dc152
|
@ -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];
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue