Added @Override annotations to core module
This commit is contained in:
parent
d549941f5e
commit
564d4feba4
|
|
@ -1,58 +1,39 @@
|
|||
<?xml version="1.0"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>org.springframework.parent</artifactId>
|
||||
<version>3.0-M1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>org.springframework.core</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Spring Core Abstractions and Utilities</name>
|
||||
<version>3.0.0.M1</version>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>com.springsource.repository.bundles.external</id>
|
||||
<name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
|
||||
<url>http://repository.springsource.com/maven/bundles/external</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<name>Spring Framework: Core</name>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>com.springsource.org.apache.commons.logging</artifactId>
|
||||
<version>1.1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.log4j</groupId>
|
||||
<artifactId>com.springsource.org.apache.log4j</artifactId>
|
||||
<version>1.2.15</version>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>com.springsource.org.apache.commons.collections</artifactId>
|
||||
<version>3.2.0</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>com.springsource.org.aspectj.weaver</artifactId>
|
||||
<version>1.6.2.RELEASE</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.objectweb.asm</groupId>
|
||||
<artifactId>com.springsource.org.objectweb.asm</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.objectweb.asm</groupId>
|
||||
<artifactId>com.springsource.org.objectweb.asm.commons</artifactId>
|
||||
<version>2.2.3</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -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,6 +84,7 @@ public abstract class AttributeAccessorSupport implements AttributeAccessor, Ser
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
return true;
|
||||
|
|
@ -95,6 +96,7 @@ public abstract class AttributeAccessorSupport implements AttributeAccessor, Ser
|
|||
return this.attributes.equals(that.attributes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.attributes.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,34 +16,16 @@
|
|||
|
||||
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;
|
||||
|
||||
/**
|
||||
* Factory for collections, being aware of Commons Collection 3.x's extended
|
||||
* collections as well as of JDK 1.5+ concurrent collections and backport-concurrent
|
||||
|
|
|
|||
|
|
@ -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,6 +49,7 @@ public class ConfigurableObjectInputStream extends ObjectInputStream {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Class resolveClass(ObjectStreamClass classDesc) throws IOException, ClassNotFoundException {
|
||||
try {
|
||||
if (this.classLoader != null) {
|
||||
|
|
@ -65,6 +66,7 @@ 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,6 +103,7 @@ 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,6 +16,12 @@
|
|||
|
||||
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;
|
||||
|
|
@ -25,17 +31,6 @@ 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
|
||||
|
|
@ -177,6 +172,7 @@ 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));
|
||||
|
|
@ -253,6 +249,7 @@ 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;
|
||||
|
|
@ -264,6 +261,7 @@ 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,6 +40,7 @@ public class NamedInheritableThreadLocal extends InheritableThreadLocal {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ public class NamedThreadLocal extends ThreadLocal {
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ 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,6 +59,7 @@ 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,6 +63,7 @@ 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,6 +54,7 @@ public class OverridingClassLoader extends DecoratingClassLoader {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
|
||||
Class result = null;
|
||||
if (isEligibleForOverriding(name)) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ 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,20 +16,14 @@
|
|||
|
||||
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.
|
||||
|
|
@ -48,6 +42,7 @@ 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);
|
||||
|
|
@ -64,6 +59,7 @@ 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,6 +49,7 @@ public abstract class AbstractLabeledEnum implements LabeledEnum {
|
|||
return this.getCode().compareTo(that.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -60,10 +61,12 @@ 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,6 +50,7 @@ public class StaticLabeledEnumResolver extends AbstractCachingLabeledEnumResolve
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Set findLabeledEnums(Class type) {
|
||||
Set typeEnums = new TreeSet();
|
||||
Field[] fields = type.getFields();
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@
|
|||
|
||||
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;
|
||||
|
|
@ -24,9 +27,6 @@ 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,6 +153,7 @@ public abstract class AbstractResource implements Resource {
|
|||
* This implementation returns the description of this resource.
|
||||
* @see #getDescription()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return getDescription();
|
||||
}
|
||||
|
|
@ -161,6 +162,7 @@ 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())));
|
||||
|
|
@ -170,6 +172,7 @@ public abstract class AbstractResource implements Resource {
|
|||
* This implementation returns the description's hash code.
|
||||
* @see #getDescription()
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return getDescription().hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ public class ByteArrayResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation always returns <code>true</code>.
|
||||
*/
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -100,6 +101,7 @@ 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)));
|
||||
|
|
@ -109,6 +111,7 @@ 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,18 +16,14 @@
|
|||
|
||||
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.
|
||||
|
|
@ -151,6 +147,7 @@ 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) {
|
||||
|
|
@ -171,6 +168,7 @@ 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());
|
||||
}
|
||||
|
|
@ -179,6 +177,7 @@ 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)) {
|
||||
|
|
@ -195,6 +194,7 @@ 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,6 +205,7 @@ public class ClassPathResource extends AbstractResource {
|
|||
* resource refers to.
|
||||
* @see org.springframework.util.StringUtils#getFilename(String)
|
||||
*/
|
||||
@Override
|
||||
public String getFilename() {
|
||||
return StringUtils.getFilename(this.path);
|
||||
}
|
||||
|
|
@ -220,6 +221,7 @@ public class ClassPathResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation compares the underlying class path locations.
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == this) {
|
||||
return true;
|
||||
|
|
@ -237,6 +239,7 @@ 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,6 +134,7 @@ 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,10 +44,12 @@ public class DescriptiveResource extends AbstractResource {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadable() {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -65,6 +67,7 @@ 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)));
|
||||
|
|
@ -73,6 +76,7 @@ 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,6 +16,9 @@
|
|||
|
||||
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;
|
||||
|
|
@ -23,9 +26,6 @@ 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,6 +86,7 @@ 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();
|
||||
}
|
||||
|
|
@ -96,6 +97,7 @@ 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());
|
||||
}
|
||||
|
|
@ -112,6 +114,7 @@ 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();
|
||||
}
|
||||
|
|
@ -120,6 +123,7 @@ 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();
|
||||
}
|
||||
|
|
@ -127,6 +131,7 @@ public class FileSystemResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the underlying File reference.
|
||||
*/
|
||||
@Override
|
||||
public File getFile() {
|
||||
return this.file;
|
||||
}
|
||||
|
|
@ -136,6 +141,7 @@ 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);
|
||||
|
|
@ -145,6 +151,7 @@ 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();
|
||||
}
|
||||
|
|
@ -162,6 +169,7 @@ 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)));
|
||||
|
|
@ -170,6 +178,7 @@ 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,6 +46,7 @@ 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,6 +71,7 @@ public class InputStreamResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation always returns <code>true</code>.
|
||||
*/
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -78,6 +79,7 @@ public class InputStreamResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation always returns <code>true</code>.
|
||||
*/
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -106,6 +108,7 @@ 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)));
|
||||
|
|
@ -114,6 +117,7 @@ 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,6 +68,7 @@ public class ResourceEditor extends PropertyEditorSupport {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setAsText(String text) {
|
||||
if (StringUtils.hasText(text)) {
|
||||
String locationToUse = resolvePath(text).trim();
|
||||
|
|
@ -90,6 +91,7 @@ public class ResourceEditor extends PropertyEditorSupport {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getAsText() {
|
||||
Resource value = (Resource) getValue();
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,10 @@
|
|||
|
||||
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;
|
||||
|
|
@ -24,10 +28,6 @@ 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,6 +126,7 @@ public class UrlResource extends AbstractResource {
|
|||
/**
|
||||
* This implementation returns the underlying URL reference.
|
||||
*/
|
||||
@Override
|
||||
public URL getURL() throws IOException {
|
||||
return this.url;
|
||||
}
|
||||
|
|
@ -134,6 +135,7 @@ 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;
|
||||
|
|
@ -148,6 +150,7 @@ 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());
|
||||
|
|
@ -161,6 +164,7 @@ 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);
|
||||
|
|
@ -176,6 +180,7 @@ 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);
|
||||
|
|
@ -188,6 +193,7 @@ 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();
|
||||
}
|
||||
|
|
@ -203,6 +209,7 @@ 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)));
|
||||
|
|
@ -211,6 +218,7 @@ 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 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;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
|
||||
/**
|
||||
* Holder that combines a {@link org.springframework.core.io.Resource}
|
||||
* with a specific encoding to be used for reading from the resource.
|
||||
|
|
@ -94,6 +94,7 @@ public class EncodedResource {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == this) {
|
||||
return true;
|
||||
|
|
@ -106,10 +107,12 @@ public class EncodedResource {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.resource.hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.resource.toString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,17 +16,13 @@
|
|||
|
||||
package org.springframework.core.io.support;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.io.IOException;
|
||||
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;
|
||||
|
||||
import java.beans.PropertyEditorSupport;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Editor for {@link org.springframework.core.io.Resource} arrays, to
|
||||
* automatically convert <code>String</code> location patterns
|
||||
|
|
@ -74,6 +70,7 @@ 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 {
|
||||
|
|
@ -89,6 +86,7 @@ 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,6 +180,7 @@ 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,10 +166,12 @@ 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,20 +16,15 @@
|
|||
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* ASM class visitor which looks for the class name and implemented types as
|
||||
* well as for the annotations defined on the class, exposing them through
|
||||
|
|
@ -54,14 +49,17 @@ 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,6 +61,7 @@ public class CachingMetadataReaderFactory extends SimpleMetadataReaderFactory {
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public MetadataReader getMetadataReader(Resource resource) throws IOException {
|
||||
synchronized (this.classReaderCache) {
|
||||
MetadataReader metadataReader = this.classReaderCache.get(resource);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ 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;
|
||||
|
||||
|
|
@ -50,6 +49,7 @@ 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,10 +63,12 @@ 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,11 +18,7 @@ package org.springframework.util;
|
|||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Simple {@link List} wrapper class that allows for elements to be
|
||||
|
|
@ -119,6 +115,7 @@ public class AutoPopulatingList implements List, Serializable {
|
|||
return this.backingList.containsAll(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
return this.backingList.equals(o);
|
||||
}
|
||||
|
|
@ -148,6 +145,7 @@ public class AutoPopulatingList implements List, Serializable {
|
|||
return element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.backingList.hashCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,15 +19,7 @@ package org.springframework.util;
|
|||
import java.io.Serializable;
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.WeakReference;
|
||||
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;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* A simple decorator for a Map, encapsulating the workflow for caching
|
||||
|
|
@ -269,6 +261,7 @@ 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 java.io.Writer;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.Writer;
|
||||
|
||||
/**
|
||||
* <code>java.io.Writer</code> adapter for a Commons Logging <code>Log</code>.
|
||||
*
|
||||
|
|
@ -53,6 +53,7 @@ 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];
|
||||
|
|
@ -66,9 +67,11 @@ public class CommonsLogWriter extends Writer {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ 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,6 +64,7 @@ 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;
|
||||
|
|
@ -74,10 +75,12 @@ 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,6 +184,7 @@ public class CompoundComparator implements Comparator, Serializable {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -195,10 +196,12 @@ 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,6 +96,7 @@ public class InvertibleComparator implements Comparator, Serializable {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -107,10 +108,12 @@ 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 java.util.Comparator;
|
||||
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* 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,6 +96,7 @@ public class NullSafeComparator implements Comparator {
|
|||
return this.nonNullComparator.compare(o1, o2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
|
|
@ -107,10 +108,12 @@ 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