Reverted to r143, before IntelliJ screwed up the imports...
This commit is contained in:
parent
9178e97fb4
commit
34ab7832c8
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package org.springframework.core;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Support class for {@link AttributeAccessor AttributeAccessors}, providing
|
||||
* a base implementation of all methods. To be extended by subclasses.
|
||||
|
|
@ -84,7 +84,6 @@ public abstract class AttributeAccessorSupport implements AttributeAccessor, Ser
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
return true;
|
||||
|
|
@ -96,7 +95,6 @@ public abstract class AttributeAccessorSupport implements AttributeAccessor, Ser
|
|||
return this.attributes.equals(that.attributes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.attributes.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,15 +16,33 @@
|
|||
|
||||
package org.springframework.core;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NavigableMap;
|
||||
import java.util.NavigableSet;
|
||||
import java.util.Set;
|
||||
import java.util.SortedMap;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
import org.apache.commons.collections.map.CaseInsensitiveMap;
|
||||
import org.apache.commons.collections.map.ListOrderedMap;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Factory for collections, being aware of Commons Collection 3.x's extended
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@
|
|||
|
||||
package org.springframework.core;
|
||||
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectStreamClass;
|
||||
import java.lang.reflect.Proxy;
|
||||
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Special ObjectInputStream subclass that resolves class names
|
||||
* against a specific ClassLoader. Serves as base class for
|
||||
|
|
@ -49,7 +49,6 @@ public class ConfigurableObjectInputStream extends ObjectInputStream {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Class resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
|
||||
try {
|
||||
if (this.classLoader != null) {
|
||||
|
|
@ -66,7 +65,6 @@ public class ConfigurableObjectInputStream extends ObjectInputStream {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException {
|
||||
if (this.classLoader != null) {
|
||||
// Use the specified ClassLoader to resolve local proxy classes.
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@
|
|||
|
||||
package org.springframework.core;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Static factory to conceal the automatic choice of the ControlFlow
|
||||
* implementation class.
|
||||
|
|
@ -103,7 +103,6 @@ public abstract class ControlFlowFactory {
|
|||
return stackTrace.indexOf(token) != -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer("Jdk14ControlFlow: ");
|
||||
for (int i = 0; i < this.stack.length; i++) {
|
||||
|
|
|
|||
|
|
@ -16,12 +16,6 @@
|
|||
|
||||
package org.springframework.core;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.objectweb.asm.*;
|
||||
import org.objectweb.asm.commons.EmptyVisitor;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
|
@ -31,6 +25,17 @@ import java.lang.reflect.Modifier;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.objectweb.asm.ClassReader;
|
||||
import org.objectweb.asm.Label;
|
||||
import org.objectweb.asm.MethodVisitor;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.Type;
|
||||
import org.objectweb.asm.commons.EmptyVisitor;
|
||||
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* Implementation of {@link ParameterNameDiscoverer} that uses the LocalVariableTable
|
||||
* information in the method attributes to discover parameter names. Returns
|
||||
|
|
@ -172,7 +177,6 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
|
|||
this.descriptorToMatch = descriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
|
||||
if (name.equals(this.methodNameToMatch) && desc.equals(this.descriptorToMatch)) {
|
||||
return new LocalVariableTableVisitor(this, isStatic(access));
|
||||
|
|
@ -249,7 +253,6 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
|
|||
this.parameterNames = new String[memberVisitor.numParamsExpected];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitLocalVariable(
|
||||
String name, String description, String signature, Label start, Label end, int index) {
|
||||
this.hasLvtInfo = true;
|
||||
|
|
@ -261,7 +264,6 @@ public class LocalVariableTableParameterNameDiscoverer implements ParameterNameD
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitEnd() {
|
||||
if (this.hasLvtInfo || (this.isStatic && this.parameterNames.length == 0)) {
|
||||
// visitLocalVariable will never be called for static no args methods
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ public class NamedInheritableThreadLocal extends InheritableThreadLocal {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ public class NamedThreadLocal extends ThreadLocal {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,6 @@ public abstract class NestedCheckedException extends Exception {
|
|||
* Return the detail message, including the message from the nested exception
|
||||
* if there is one.
|
||||
*/
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return NestedExceptionUtils.buildMessage(super.getMessage(), getCause());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,6 @@ public class NestedIOException extends IOException {
|
|||
* Return the detail message, including the message from the nested exception
|
||||
* if there is one.
|
||||
*/
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return NestedExceptionUtils.buildMessage(super.getMessage(), getCause());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,6 @@ public abstract class NestedRuntimeException extends RuntimeException {
|
|||
* Return the detail message, including the message from the nested exception
|
||||
* if there is one.
|
||||
*/
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return NestedExceptionUtils.buildMessage(super.getMessage(), getCause());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@
|
|||
|
||||
package org.springframework.core;
|
||||
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
|
||||
/**
|
||||
* <code>ClassLoader</code> that does <i>not</i> always delegate to the
|
||||
* parent loader, as normal class loaders do. This enables, for example,
|
||||
|
|
@ -54,7 +54,6 @@ public class OverridingClassLoader extends DecoratingClassLoader {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
|
||||
Class result = null;
|
||||
if (isEligibleForOverriding(name)) {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ import org.springframework.core.Ordered;
|
|||
*/
|
||||
public class AnnotationAwareOrderComparator extends OrderComparator {
|
||||
|
||||
@Override
|
||||
protected int getOrder(Object obj) {
|
||||
if (obj instanceof Ordered) {
|
||||
return ((Ordered) obj).getOrder();
|
||||
|
|
|
|||
|
|
@ -16,14 +16,20 @@
|
|||
|
||||
package org.springframework.core.enums;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CachingMapDecorator;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Abstract base class for {@link LabeledEnumResolver} implementations,
|
||||
* caching all retrieved {@link LabeledEnum} instances.
|
||||
|
|
@ -42,7 +48,6 @@ public abstract class AbstractCachingLabeledEnumResolver implements LabeledEnumR
|
|||
|
||||
|
||||
private final CachingMapDecorator labeledEnumCache = new CachingMapDecorator(true) {
|
||||
@Override
|
||||
protected Object create(Object key) {
|
||||
Class enumType = (Class) key;
|
||||
Set typeEnums = findLabeledEnums(enumType);
|
||||
|
|
@ -59,7 +64,6 @@ public abstract class AbstractCachingLabeledEnumResolver implements LabeledEnumR
|
|||
}
|
||||
return Collections.unmodifiableMap(typeEnumMap);
|
||||
}
|
||||
@Override
|
||||
protected boolean useWeakValue(Object key, Object value) {
|
||||
Class enumType = (Class) key;
|
||||
if (!ClassUtils.isCacheSafe(enumType, AbstractCachingLabeledEnumResolver.this.getClass().getClassLoader())) {
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ public abstract class AbstractLabeledEnum implements LabeledEnum {
|
|||
return this.getCode().compareTo(that.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -61,12 +60,10 @@ public abstract class AbstractLabeledEnum implements LabeledEnum {
|
|||
return (this.getType().equals(other.getType()) && this.getCode().equals(other.getCode()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (getType().hashCode() * 29 + getCode().hashCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getLabel();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package org.springframework.core.enums;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* {@link LabeledEnumResolver} that resolves statically defined enumerations.
|
||||
* Static implies all enum instances were defined within Java code,
|
||||
|
|
@ -50,7 +50,6 @@ public class StaticLabeledEnumResolver extends AbstractCachingLabeledEnumResolve
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Set findLabeledEnums(Class type) {
|
||||
Set typeEnums = new TreeSet();
|
||||
Field[] fields = type.getFields();
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@
|
|||
|
||||
package org.springframework.core.io;
|
||||
|
||||
import org.springframework.core.NestedIOException;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
|
|
@ -27,6 +24,9 @@ import java.net.URI;
|
|||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.springframework.core.NestedIOException;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
|
||||
/**
|
||||
* Convenience base class for {@link Resource} implementations,
|
||||
* pre-implementing typical behavior.
|
||||
|
|
@ -153,7 +153,6 @@ public abstract class AbstractResource implements Resource {
|
|||
* This implementation returns the description of this resource.
|
||||
* @see #getDescription()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return getDescription();
|
||||
}
|
||||
|
|
@ -162,7 +161,6 @@ public abstract class AbstractResource implements Resource {
|
|||
* This implementation compares description strings.
|
||||
* @see #getDescription()
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj == this ||
|
||||
(obj instanceof Resource && ((Resource) obj).getDescription().equals(getDescription())));
|
||||
|
|
@ -172,7 +170,6 @@ public abstract class AbstractResource implements Resource {
|
|||
* This implementation returns the description's hash code.
|
||||
* @see #getDescription()
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getDescription().hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@ public class ByteArrayResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation always returns <code>true</code>.
|
||||
*/
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -101,7 +100,6 @@ public class ByteArrayResource extends AbstractResource {
|
|||
* This implementation compares the underlying byte array.
|
||||
* @see java.util.Arrays#equals(byte[], byte[])
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj == this ||
|
||||
(obj instanceof ByteArrayResource && Arrays.equals(((ByteArrayResource) obj).byteArray, this.byteArray)));
|
||||
|
|
@ -111,7 +109,6 @@ public class ByteArrayResource extends AbstractResource {
|
|||
* This implementation returns the hash code based on the
|
||||
* underlying byte array.
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (byte[].class.hashCode() * 29 * this.byteArray.length);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,14 +16,18 @@
|
|||
|
||||
package org.springframework.core.io;
|
||||
|
||||
import org.springframework.util.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* {@link Resource} implementation for class path resources.
|
||||
* Uses either a given ClassLoader or a given Class for loading resources.
|
||||
|
|
@ -147,7 +151,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
* @see java.lang.ClassLoader#getResource(String)
|
||||
* @see java.lang.Class#getResource(String)
|
||||
*/
|
||||
@Override
|
||||
public URL getURL() throws IOException {
|
||||
URL url = null;
|
||||
if (this.clazz != null) {
|
||||
|
|
@ -168,7 +171,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
* resource, provided that it refers to a file in the file system.
|
||||
* @see org.springframework.util.ResourceUtils#getFile(java.net.URL, String)
|
||||
*/
|
||||
@Override
|
||||
public File getFile() throws IOException {
|
||||
return ResourceUtils.getFile(getURL(), getDescription());
|
||||
}
|
||||
|
|
@ -177,7 +179,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
* This implementation determines the underlying File
|
||||
* (or jar file, in case of a resource in a jar/zip).
|
||||
*/
|
||||
@Override
|
||||
protected File getFileForLastModifiedCheck() throws IOException {
|
||||
URL url = getURL();
|
||||
if (ResourceUtils.isJarURL(url)) {
|
||||
|
|
@ -194,7 +195,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
* relative to the path of the underlying resource of this descriptor.
|
||||
* @see org.springframework.util.StringUtils#applyRelativePath(String, String)
|
||||
*/
|
||||
@Override
|
||||
public Resource createRelative(String relativePath) {
|
||||
String pathToUse = StringUtils.applyRelativePath(this.path, relativePath);
|
||||
return new ClassPathResource(pathToUse, this.classLoader, this.clazz);
|
||||
|
|
@ -205,7 +205,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
* resource refers to.
|
||||
* @see org.springframework.util.StringUtils#getFilename(String)
|
||||
*/
|
||||
@Override
|
||||
public String getFilename() {
|
||||
return StringUtils.getFilename(this.path);
|
||||
}
|
||||
|
|
@ -221,7 +220,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation compares the underlying class path locations.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == this) {
|
||||
return true;
|
||||
|
|
@ -239,7 +237,6 @@ public class ClassPathResource extends AbstractResource {
|
|||
* This implementation returns the hash code of the underlying
|
||||
* class path location.
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.path.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package org.springframework.core.io;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Default implementation of the {@link ResourceLoader} interface.
|
||||
* Used by {@link ResourceEditor}, and serves as base class for
|
||||
|
|
@ -134,7 +134,6 @@ public class DefaultResourceLoader implements ResourceLoader {
|
|||
return getPath();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource createRelative(String relativePath) {
|
||||
String pathToUse = StringUtils.applyRelativePath(getPath(), relativePath);
|
||||
return new ClassPathContextResource(pathToUse, getClassLoader());
|
||||
|
|
|
|||
|
|
@ -44,12 +44,10 @@ public class DescriptiveResource extends AbstractResource {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadable() {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -67,7 +65,6 @@ public class DescriptiveResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation compares the underlying description String.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj == this ||
|
||||
(obj instanceof DescriptiveResource && ((DescriptiveResource) obj).description.equals(this.description)));
|
||||
|
|
@ -76,7 +73,6 @@ public class DescriptiveResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the hash code of the underlying description String.
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.description.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@
|
|||
|
||||
package org.springframework.core.io;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
|
@ -26,6 +23,9 @@ import java.io.InputStream;
|
|||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* {@link Resource} implementation for <code>java.io.File</code> handles.
|
||||
* Obviously supports resolution as File, and also as URL.
|
||||
|
|
@ -86,7 +86,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
* This implementation returns whether the underlying file exists.
|
||||
* @see java.io.File#exists()
|
||||
*/
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return this.file.exists();
|
||||
}
|
||||
|
|
@ -97,7 +96,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
* @see java.io.File#canRead()
|
||||
* @see java.io.File#isDirectory()
|
||||
*/
|
||||
@Override
|
||||
public boolean isReadable() {
|
||||
return (this.file.canRead() && !this.file.isDirectory());
|
||||
}
|
||||
|
|
@ -114,7 +112,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
* This implementation returns a URL for the underlying file.
|
||||
* @see java.io.File#toURI()
|
||||
*/
|
||||
@Override
|
||||
public URL getURL() throws IOException {
|
||||
return this.file.toURI().toURL();
|
||||
}
|
||||
|
|
@ -123,7 +120,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
* This implementation returns a URI for the underlying file.
|
||||
* @see java.io.File#toURI()
|
||||
*/
|
||||
@Override
|
||||
public URI getURI() throws IOException {
|
||||
return this.file.toURI();
|
||||
}
|
||||
|
|
@ -131,7 +127,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the underlying File reference.
|
||||
*/
|
||||
@Override
|
||||
public File getFile() {
|
||||
return this.file;
|
||||
}
|
||||
|
|
@ -141,7 +136,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
* relative to the path of the underlying file of this resource descriptor.
|
||||
* @see org.springframework.util.StringUtils#applyRelativePath(String, String)
|
||||
*/
|
||||
@Override
|
||||
public Resource createRelative(String relativePath) {
|
||||
String pathToUse = StringUtils.applyRelativePath(this.path, relativePath);
|
||||
return new FileSystemResource(pathToUse);
|
||||
|
|
@ -151,7 +145,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
* This implementation returns the name of the file.
|
||||
* @see java.io.File#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getFilename() {
|
||||
return this.file.getName();
|
||||
}
|
||||
|
|
@ -169,7 +162,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation compares the underlying File references.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj == this ||
|
||||
(obj instanceof FileSystemResource && this.path.equals(((FileSystemResource) obj).path)));
|
||||
|
|
@ -178,7 +170,6 @@ public class FileSystemResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the hash code of the underlying File reference.
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.path.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,6 @@ public class FileSystemResourceLoader extends DefaultResourceLoader {
|
|||
* @see FileSystemResource
|
||||
* @see org.springframework.web.context.support.ServletContextResourceLoader#getResourceByPath
|
||||
*/
|
||||
@Override
|
||||
protected Resource getResourceByPath(String path) {
|
||||
if (path != null && path.startsWith("/")) {
|
||||
path = path.substring(1);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,6 @@ public class InputStreamResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation always returns <code>true</code>.
|
||||
*/
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -79,7 +78,6 @@ public class InputStreamResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation always returns <code>true</code>.
|
||||
*/
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -108,7 +106,6 @@ public class InputStreamResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation compares the underlying InputStream.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj == this ||
|
||||
(obj instanceof InputStreamResource && ((InputStreamResource) obj).inputStream.equals(this.inputStream)));
|
||||
|
|
@ -117,7 +114,6 @@ public class InputStreamResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the hash code of the underlying InputStream.
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.inputStream.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package org.springframework.core.io;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.util.SystemPropertyUtils;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* {@link java.beans.PropertyEditor Editor} for {@link Resource}
|
||||
* descriptors, to automatically convert <code>String</code> locations
|
||||
|
|
@ -68,7 +68,6 @@ public class ResourceEditor extends PropertyEditorSupport {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setAsText(String text) {
|
||||
if (StringUtils.hasText(text)) {
|
||||
String locationToUse = resolvePath(text).trim();
|
||||
|
|
@ -91,7 +90,6 @@ public class ResourceEditor extends PropertyEditorSupport {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getAsText() {
|
||||
Resource value = (Resource) getValue();
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -16,10 +16,6 @@
|
|||
|
||||
package org.springframework.core.io;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
|
@ -28,6 +24,10 @@ import java.net.URI;
|
|||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* {@link Resource} implementation for <code>java.net.URL</code> locators.
|
||||
* Obviously supports resolution as URL, and also as File in case of
|
||||
|
|
@ -126,7 +126,6 @@ public class UrlResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the underlying URL reference.
|
||||
*/
|
||||
@Override
|
||||
public URL getURL() throws IOException {
|
||||
return this.url;
|
||||
}
|
||||
|
|
@ -135,7 +134,6 @@ public class UrlResource extends AbstractResource {
|
|||
* This implementation returns the underlying URI directly,
|
||||
* if possible.
|
||||
*/
|
||||
@Override
|
||||
public URI getURI() throws IOException {
|
||||
if (this.uri != null) {
|
||||
return this.uri;
|
||||
|
|
@ -150,7 +148,6 @@ public class UrlResource extends AbstractResource {
|
|||
* provided that it refers to a file in the file system.
|
||||
* @see org.springframework.util.ResourceUtils#getFile(java.net.URL, String)
|
||||
*/
|
||||
@Override
|
||||
public File getFile() throws IOException {
|
||||
if (this.uri != null) {
|
||||
return ResourceUtils.getFile(this.uri, getDescription());
|
||||
|
|
@ -164,7 +161,6 @@ public class UrlResource extends AbstractResource {
|
|||
* This implementation determines the underlying File
|
||||
* (or jar file, in case of a resource in a jar/zip).
|
||||
*/
|
||||
@Override
|
||||
protected File getFileForLastModifiedCheck() throws IOException {
|
||||
if (ResourceUtils.isJarURL(this.url)) {
|
||||
URL actualUrl = ResourceUtils.extractJarFileURL(this.url);
|
||||
|
|
@ -180,7 +176,6 @@ public class UrlResource extends AbstractResource {
|
|||
* relative to the path of the underlying URL of this resource descriptor.
|
||||
* @see java.net.URL#URL(java.net.URL, String)
|
||||
*/
|
||||
@Override
|
||||
public Resource createRelative(String relativePath) throws MalformedURLException {
|
||||
if (relativePath.startsWith("/")) {
|
||||
relativePath = relativePath.substring(1);
|
||||
|
|
@ -193,7 +188,6 @@ public class UrlResource extends AbstractResource {
|
|||
* @see java.net.URL#getFile()
|
||||
* @see java.io.File#getName()
|
||||
*/
|
||||
@Override
|
||||
public String getFilename() {
|
||||
return new File(this.url.getFile()).getName();
|
||||
}
|
||||
|
|
@ -209,7 +203,6 @@ public class UrlResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation compares the underlying URL references.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj == this ||
|
||||
(obj instanceof UrlResource && this.cleanedUrl.equals(((UrlResource) obj).cleanedUrl)));
|
||||
|
|
@ -218,7 +211,6 @@ public class UrlResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the hash code of the underlying URL reference.
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.cleanedUrl.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@
|
|||
|
||||
package org.springframework.core.io.support;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
* Holder that combines a {@link org.springframework.core.io.Resource}
|
||||
* with a specific encoding to be used for reading from the resource.
|
||||
|
|
@ -94,7 +94,6 @@ public class EncodedResource {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == this) {
|
||||
return true;
|
||||
|
|
@ -107,12 +106,10 @@ public class EncodedResource {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.resource.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.resource.toString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,12 +16,16 @@
|
|||
|
||||
package org.springframework.core.io.support;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.util.SystemPropertyUtils;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.util.SystemPropertyUtils;
|
||||
|
||||
/**
|
||||
* Editor for {@link org.springframework.core.io.Resource} arrays, to
|
||||
|
|
@ -70,7 +74,6 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
|
|||
/**
|
||||
* Treat the given text as location pattern and convert it to a Resource array.
|
||||
*/
|
||||
@Override
|
||||
public void setAsText(String text) {
|
||||
String pattern = resolvePath(text).trim();
|
||||
try {
|
||||
|
|
@ -86,7 +89,6 @@ public class ResourceArrayPropertyEditor extends PropertyEditorSupport {
|
|||
* Treat the given value as collection or array and convert it to a Resource array.
|
||||
* Considers String elements as location patterns, and takes Resource elements as-is.
|
||||
*/
|
||||
@Override
|
||||
public void setValue(Object value) throws IllegalArgumentException {
|
||||
if (value instanceof Collection || (value instanceof Object[] && !(value instanceof Resource[]))) {
|
||||
Collection input = (value instanceof Collection ? (Collection) value : Arrays.asList((Object[]) value));
|
||||
|
|
|
|||
|
|
@ -180,7 +180,6 @@ public class ToStringCreator {
|
|||
/**
|
||||
* Return the String representation that this ToStringCreator built.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
this.styler.styleEnd(this.buffer, this.object);
|
||||
return this.buffer.toString();
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package org.springframework.core.task;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.ConcurrencyThrottleSupport;
|
||||
import org.springframework.util.CustomizableThreadCreator;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* TaskExecutor implementation that fires up a new Thread for each task,
|
||||
* executing it asynchronously.
|
||||
|
|
@ -166,12 +166,10 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator implement
|
|||
*/
|
||||
private static class ConcurrencyThrottleAdapter extends ConcurrencyThrottleSupport {
|
||||
|
||||
@Override
|
||||
protected void beforeAccess() {
|
||||
super.beforeAccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void afterAccess() {
|
||||
super.afterAccess();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,14 +16,19 @@
|
|||
|
||||
package org.springframework.core.type.classreading;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.objectweb.asm.AnnotationVisitor;
|
||||
import org.objectweb.asm.Type;
|
||||
import org.objectweb.asm.commons.EmptyVisitor;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import org.springframework.core.type.AnnotationMetadata;
|
||||
|
||||
/**
|
||||
* ASM class visitor which looks for the class name and implemented types as
|
||||
|
|
@ -49,17 +54,14 @@ class AnnotationMetadataReadingVisitor extends ClassMetadataReadingVisitor imple
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AnnotationVisitor visitAnnotation(final String desc, boolean visible) {
|
||||
final String className = Type.getType(desc).getClassName();
|
||||
final Map<String, Object> attributes = new LinkedHashMap<String, Object>();
|
||||
return new EmptyVisitor() {
|
||||
@Override
|
||||
public void visit(String name, Object value) {
|
||||
// Explicitly defined annotation attribute value.
|
||||
attributes.put(name, value);
|
||||
}
|
||||
@Override
|
||||
public void visitEnd() {
|
||||
try {
|
||||
Class annotationClass = classLoader.loadClass(className);
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
package org.springframework.core.type.classreading;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
|
||||
/**
|
||||
* Caching implementation of the {@link MetadataReaderFactory} interface,
|
||||
* caching an ASM {@link org.objectweb.asm.ClassReader} per Spring Resource handle
|
||||
|
|
@ -61,7 +61,6 @@ public class CachingMetadataReaderFactory extends SimpleMetadataReaderFactory {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public MetadataReader getMetadataReader(Resource resource) throws IOException {
|
||||
synchronized (this.classReaderCache) {
|
||||
MetadataReader metadataReader = this.classReaderCache.get(resource);
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package org.springframework.core.type.classreading;
|
|||
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.commons.EmptyVisitor;
|
||||
|
||||
import org.springframework.core.type.ClassMetadata;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
|
|
@ -49,7 +50,6 @@ class ClassMetadataReadingVisitor extends EmptyVisitor implements ClassMetadata
|
|||
private String[] interfaces;
|
||||
|
||||
|
||||
@Override
|
||||
public void visit(int version, int access, String name, String signature, String supername, String[] interfaces) {
|
||||
this.className = ClassUtils.convertResourcePathToClassName(name);
|
||||
this.isInterface = ((access & Opcodes.ACC_INTERFACE) != 0);
|
||||
|
|
@ -63,12 +63,10 @@ class ClassMetadataReadingVisitor extends EmptyVisitor implements ClassMetadata
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitOuterClass(String owner, String name, String desc) {
|
||||
this.enclosingClassName = ClassUtils.convertResourcePathToClassName(owner);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitInnerClass(String name, String outerName, String innerName, int access) {
|
||||
if (outerName != null && this.className.equals(ClassUtils.convertResourcePathToClassName(name))) {
|
||||
this.enclosingClassName = ClassUtils.convertResourcePathToClassName(outerName);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,11 @@ package org.springframework.util;
|
|||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
|
||||
/**
|
||||
* Simple {@link List} wrapper class that allows for elements to be
|
||||
|
|
@ -115,7 +119,6 @@ public class AutoPopulatingList implements List, Serializable {
|
|||
return this.backingList.containsAll(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
return this.backingList.equals(o);
|
||||
}
|
||||
|
|
@ -145,7 +148,6 @@ public class AutoPopulatingList implements List, Serializable {
|
|||
return element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.backingList.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,15 @@ package org.springframework.util;
|
|||
import java.io.Serializable;
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
/**
|
||||
* A simple decorator for a Map, encapsulating the workflow for caching
|
||||
|
|
@ -261,7 +269,6 @@ public class CachingMapDecorator implements Map, Serializable {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CachingMapDecorator [" + getClass().getName() + "]:" + this.targetMap;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
package org.springframework.util;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.Writer;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
/**
|
||||
* <code>java.io.Writer</code> adapter for a Commons Logging <code>Log</code>.
|
||||
*
|
||||
|
|
@ -53,7 +53,6 @@ public class CommonsLogWriter extends Writer {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(char[] buffer, int offset, int length) {
|
||||
for (int i = 0; i < length; i++) {
|
||||
char ch = buffer[offset + i];
|
||||
|
|
@ -67,11 +66,9 @@ public class CommonsLogWriter extends Writer {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -232,7 +232,6 @@ public class StopWatch {
|
|||
* Return an informative string describing all tasks performed
|
||||
* For custom reporting, call <code>getTaskInfo()</code> and use the task info directly.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer(shortSummary());
|
||||
if (this.keepTaskList) {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ public final class BooleanComparator implements Comparator, Serializable {
|
|||
return (v1 ^ v2) ? ((v1 ^ this.trueLow) ? 1 : -1) : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -75,12 +74,10 @@ public final class BooleanComparator implements Comparator, Serializable {
|
|||
return (this.trueLow == ((BooleanComparator) obj).trueLow);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (this.trueLow ? -1 : 1) * getClass().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "BooleanComparator: " + (this.trueLow ? "true low" : "true high");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@
|
|||
|
||||
package org.springframework.util.comparator;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* A comparator that chains a sequence of one or more more Comparators.
|
||||
*
|
||||
|
|
@ -184,7 +184,6 @@ public class CompoundComparator implements Comparator, Serializable {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -196,12 +195,10 @@ public class CompoundComparator implements Comparator, Serializable {
|
|||
return this.comparators.equals(other.comparators);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.comparators.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CompoundComparator: " + this.comparators;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,7 +96,6 @@ public class InvertibleComparator implements Comparator, Serializable {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -108,12 +107,10 @@ public class InvertibleComparator implements Comparator, Serializable {
|
|||
return (this.comparator.equals(other.comparator) && this.ascending == other.ascending);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.comparator.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "InvertibleComparator: [" + this.comparator + "]; ascending=" + this.ascending;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
package org.springframework.util.comparator;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* A Comparator that will safely compare nulls to be lower or higher than
|
||||
* other objects. Can decorate a given Comparator or work on Comparables.
|
||||
|
|
@ -96,7 +96,6 @@ public class NullSafeComparator implements Comparator {
|
|||
return this.nonNullComparator.compare(o1, o2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -108,12 +107,10 @@ public class NullSafeComparator implements Comparator {
|
|||
return (this.nonNullComparator.equals(other.nonNullComparator) && this.nullsLow == other.nullsLow);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (this.nullsLow ? -1 : 1) * this.nonNullComparator.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "NullSafeComparator: non-null comparator [" + this.nonNullComparator + "]; " +
|
||||
(this.nullsLow ? "nulls low" : "nulls high");
|
||||
|
|
|
|||
Loading…
Reference in New Issue