From de5a98d47bb9cc5220403db55314caaf9c9a2ecd Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Sun, 19 Jul 2015 12:53:47 +0200 Subject: [PATCH] DATAREST-606 - Polishing. Moved the accessibility tweak to the EventHandlerMethod's constructor so that the modification only occurs at detection time. Polished unit test. Original pull request: #187. --- .../core/event/AnnotatedEventHandlerInvoker.java | 7 ++++--- .../AnnotatedEventHandlerInvokerUnitTests.java | 16 +++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvoker.java b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvoker.java index 24d186ebf..f043e2f30 100644 --- a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvoker.java +++ b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvoker.java @@ -89,7 +89,6 @@ public class AnnotatedEventHandlerInvoker implements ApplicationListener beanType = ClassUtils.getUserClass(bean); RepositoryEventHandler typeAnno = AnnotationUtils.findAnnotation(beanType, RepositoryEventHandler.class); @@ -182,10 +181,12 @@ public class AnnotatedEventHandlerInvoker implements ApplicationListener targetType, Object handler, Method method) { - + this.targetType = targetType; this.method = method; this.handler = handler; + + ReflectionUtils.makeAccessible(this.method); } /* diff --git a/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvokerUnitTests.java b/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvokerUnitTests.java index eb8bc272a..729915538 100644 --- a/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvokerUnitTests.java +++ b/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/event/AnnotatedEventHandlerInvokerUnitTests.java @@ -31,6 +31,7 @@ import org.springframework.util.MultiValueMap; * Unit tests for {@link AnnotatedEventHandlerInvoker}. * * @author Oliver Gierke + * @author Fabian Trampusch */ public class AnnotatedEventHandlerInvokerUnitTests { @@ -58,15 +59,16 @@ public class AnnotatedEventHandlerInvokerUnitTests { * @see DATAREST-606 */ @Test - public void canInvokePrivateEventHandlerMethods() { + public void invokesPrivateEventHandlerMethods() { + SampleWithPrivateHandler sampleHandler = new SampleWithPrivateHandler(); + AnnotatedEventHandlerInvoker invoker = new AnnotatedEventHandlerInvoker(); invoker.postProcessAfterInitialization(sampleHandler, "sampleHandler"); - BeforeCreateEvent beforeCreateEvent = new BeforeCreateEvent(new Person()); - invoker.onApplicationEvent(beforeCreateEvent); + invoker.onApplicationEvent(new BeforeCreateEvent(new Person())); - assertThat(sampleHandler.wasCalled(), is(true)); + assertThat(sampleHandler.wasCalled, is(true)); } @RepositoryEventHandler @@ -79,15 +81,11 @@ public class AnnotatedEventHandlerInvokerUnitTests { @RepositoryEventHandler static class SampleWithPrivateHandler { - private boolean wasCalled = false; + boolean wasCalled = false; @HandleBeforeCreate private void method(Person sample) { wasCalled = true; } - - public boolean wasCalled() { - return wasCalled; - } } }