Polishing
This commit is contained in:
parent
f7ace54488
commit
d49ecab89a
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -21,8 +21,8 @@ package org.springframework.cache.interceptor;
|
|||
*
|
||||
* <p>Does not provide a way to transmit checked exceptions but
|
||||
* provide a special exception that should be used to wrap any
|
||||
* exception that was thrown by the underlying invocation. Callers
|
||||
* are expected to handle this issue type specifically.
|
||||
* exception that was thrown by the underlying invocation.
|
||||
* Callers are expected to handle this issue type specifically.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
* @since 4.1
|
||||
|
@ -38,11 +38,12 @@ public interface CacheOperationInvoker {
|
|||
*/
|
||||
Object invoke() throws ThrowableWrapper;
|
||||
|
||||
|
||||
/**
|
||||
* Wrap any exception thrown while invoking {@link #invoke()}
|
||||
* Wrap any exception thrown while invoking {@link #invoke()}.
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public static class ThrowableWrapper extends RuntimeException {
|
||||
class ThrowableWrapper extends RuntimeException {
|
||||
|
||||
private final Throwable original;
|
||||
|
||||
|
@ -52,7 +53,7 @@ public interface CacheOperationInvoker {
|
|||
}
|
||||
|
||||
public Throwable getOriginal() {
|
||||
return original;
|
||||
return this.original;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -83,11 +83,11 @@ public class CacheReproTests {
|
|||
|
||||
String key = "1";
|
||||
Object result = bean.getSimple("1");
|
||||
verify(cache, times(1)).get(key); // first call: cache miss
|
||||
verify(cache, times(1)).get(key); // first call: cache miss
|
||||
|
||||
Object cachedResult = bean.getSimple("1");
|
||||
assertSame(result, cachedResult);
|
||||
verify(cache, times(2)).get(key); // second call: cache hit
|
||||
verify(cache, times(2)).get(key); // second call: cache hit
|
||||
|
||||
context.close();
|
||||
}
|
||||
|
@ -100,11 +100,11 @@ public class CacheReproTests {
|
|||
|
||||
String key = "1";
|
||||
Object result = bean.getNeverCache("1");
|
||||
verify(cache, times(0)).get(key); // no cache hit at all, caching disabled
|
||||
verify(cache, times(0)).get(key); // no cache hit at all, caching disabled
|
||||
|
||||
Object cachedResult = bean.getNeverCache("1");
|
||||
assertNotSame(result, cachedResult);
|
||||
verify(cache, times(0)).get(key); // caching disabled
|
||||
verify(cache, times(0)).get(key); // caching disabled
|
||||
|
||||
context.close();
|
||||
}
|
||||
|
@ -114,8 +114,9 @@ public class CacheReproTests {
|
|||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Spr13081Config.class);
|
||||
MyCacheResolver cacheResolver = context.getBean(MyCacheResolver.class);
|
||||
Spr13081Service bean = context.getBean(Spr13081Service.class);
|
||||
|
||||
assertNull(cacheResolver.getCache("foo").get("foo"));
|
||||
Object result = bean.getSimple("foo"); // cache name = id
|
||||
Object result = bean.getSimple("foo"); // cache name = id
|
||||
assertEquals(result, cacheResolver.getCache("foo").get("foo").get());
|
||||
}
|
||||
|
||||
|
@ -124,7 +125,6 @@ public class CacheReproTests {
|
|||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Spr13081Config.class);
|
||||
Spr13081Service bean = context.getBean(Spr13081Service.class);
|
||||
|
||||
|
||||
thrown.expect(IllegalStateException.class);
|
||||
thrown.expectMessage(MyCacheResolver.class.getName());
|
||||
bean.getSimple(null);
|
||||
|
@ -245,6 +245,7 @@ public class CacheReproTests {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableCaching
|
||||
public static class Spr13081Config extends CachingConfigurerSupport {
|
||||
|
@ -259,9 +260,9 @@ public class CacheReproTests {
|
|||
public Spr13081Service service() {
|
||||
return new Spr13081Service();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static class MyCacheResolver extends AbstractCacheResolver {
|
||||
|
||||
public MyCacheResolver() {
|
||||
|
@ -282,6 +283,7 @@ public class CacheReproTests {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static class Spr13081Service {
|
||||
|
||||
@Cacheable
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -265,7 +265,8 @@ public abstract class ReflectionUtils {
|
|||
* checked exception is expected to be thrown by the target method.
|
||||
* <p>Throws the underlying RuntimeException or Error in case of an
|
||||
* InvocationTargetException with such a root cause. Throws an
|
||||
* IllegalStateException with an appropriate message else.
|
||||
* IllegalStateException with an appropriate message or
|
||||
* UndeclaredThrowableException otherwise.
|
||||
* @param ex the reflection exception to handle
|
||||
*/
|
||||
public static void handleReflectionException(Exception ex) {
|
||||
|
@ -288,7 +289,7 @@ public abstract class ReflectionUtils {
|
|||
* Handle the given invocation target exception. Should only be called if no
|
||||
* checked exception is expected to be thrown by the target method.
|
||||
* <p>Throws the underlying RuntimeException or Error in case of such a root
|
||||
* cause. Throws an IllegalStateException else.
|
||||
* cause. Throws an UndeclaredThrowableException otherwise.
|
||||
* @param ex the invocation target exception to handle
|
||||
*/
|
||||
public static void handleInvocationTargetException(InvocationTargetException ex) {
|
||||
|
@ -300,8 +301,9 @@ public abstract class ReflectionUtils {
|
|||
* <em>target exception</em> of an {@link InvocationTargetException}.
|
||||
* Should only be called if no checked exception is expected to be thrown
|
||||
* by the target method.
|
||||
* <p>Rethrows the underlying exception cast to an {@link RuntimeException} or
|
||||
* {@link Error} if appropriate; otherwise, throws an {@link IllegalStateException}.
|
||||
* <p>Rethrows the underlying exception cast to a {@link RuntimeException} or
|
||||
* {@link Error} if appropriate; otherwise, throws an
|
||||
* {@link UndeclaredThrowableException}.
|
||||
* @param ex the exception to rethrow
|
||||
* @throws RuntimeException the rethrown exception
|
||||
*/
|
||||
|
@ -321,7 +323,8 @@ public abstract class ReflectionUtils {
|
|||
* Should only be called if no checked exception is expected to be thrown
|
||||
* by the target method.
|
||||
* <p>Rethrows the underlying exception cast to an {@link Exception} or
|
||||
* {@link Error} if appropriate; otherwise, throws an {@link IllegalStateException}.
|
||||
* {@link Error} if appropriate; otherwise, throws an
|
||||
* {@link UndeclaredThrowableException}.
|
||||
* @param ex the exception to rethrow
|
||||
* @throws Exception the rethrown exception (in case of a checked exception)
|
||||
*/
|
||||
|
@ -804,7 +807,7 @@ public abstract class ReflectionUtils {
|
|||
/**
|
||||
* Pre-built FieldFilter that matches all non-static, non-final fields.
|
||||
*/
|
||||
public static FieldFilter COPYABLE_FIELDS = new FieldFilter() {
|
||||
public static final FieldFilter COPYABLE_FIELDS = new FieldFilter() {
|
||||
|
||||
@Override
|
||||
public boolean matches(Field field) {
|
||||
|
@ -816,7 +819,7 @@ public abstract class ReflectionUtils {
|
|||
/**
|
||||
* Pre-built MethodFilter that matches all non-bridge methods.
|
||||
*/
|
||||
public static MethodFilter NON_BRIDGED_METHODS = new MethodFilter() {
|
||||
public static final MethodFilter NON_BRIDGED_METHODS = new MethodFilter() {
|
||||
|
||||
@Override
|
||||
public boolean matches(Method method) {
|
||||
|
@ -829,7 +832,7 @@ public abstract class ReflectionUtils {
|
|||
* Pre-built MethodFilter that matches all non-bridge methods
|
||||
* which are not declared on {@code java.lang.Object}.
|
||||
*/
|
||||
public static MethodFilter USER_DECLARED_METHODS = new MethodFilter() {
|
||||
public static final MethodFilter USER_DECLARED_METHODS = new MethodFilter() {
|
||||
|
||||
@Override
|
||||
public boolean matches(Method method) {
|
||||
|
|
Loading…
Reference in New Issue