提交 d49ecab8 编写于 作者: J Juergen Hoeller

Polishing

上级 f7ace544
/*
* 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;
}
}
......
/*
* 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
......
/*
* 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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册