You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by dr...@apache.org on 2011/03/09 18:00:53 UTC
svn commit: r1079884 - in /tapestry/tapestry5/trunk/tapestry-ioc/src:
main/java/org/apache/tapestry5/ioc/
main/java/org/apache/tapestry5/ioc/internal/services/
test/java/org/apache/tapestry5/ioc/internal/services/
Author: drobiazko
Date: Wed Mar 9 17:00:53 2011
New Revision: 1079884
URL: http://svn.apache.org/viewvc?rev=1079884&view=rev
Log:
TAP5-1396: Invocation class should provide access to the annotations placed on the method beeing invoked
Modified:
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java?rev=1079884&r1=1079883&r2=1079884&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java Wed Mar 9 17:00:53 2011
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008, 2009, 2010, 2011 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -14,6 +14,8 @@
package org.apache.tapestry5.ioc;
+import java.lang.annotation.Annotation;
+
/**
* A method invocation passed to a {@link org.apache.tapestry5.ioc.MethodAdvice}.
*/
@@ -104,4 +106,17 @@ public interface Invocation
* Overrides the result. Clears the thrown exception (if any).
*/
void overrideResult(Object newResult);
+
+ /**
+ * Returns the annotation, placed on the method being invoked, for the specified type. If
+ * such an annotation is present, else null.
+
+ * @param annotationClass the Class object corresponding to the
+ * annotation type
+ * @return method's annotation for the specified annotation type if
+ * present on this element, else null
+ *
+ * @since 5.3.0
+ */
+ <T extends Annotation> T getMethodAnnotation(Class<T> annotationClass);
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java?rev=1079884&r1=1079883&r2=1079884&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java Wed Mar 9 17:00:53 2011
@@ -14,6 +14,7 @@
package org.apache.tapestry5.ioc.internal.services;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import org.apache.tapestry5.ioc.Invocation;
@@ -127,6 +128,11 @@ public abstract class AbstractInvocation
methodInfo.getAdvice(adviceIndex++).advise(this);
}
+
+ public <T extends Annotation> T getMethodAnnotation(Class<T> annotationClass)
+ {
+ return method.getAnnotation(annotationClass);
+ }
/**
* This method is filled in, in the dynamically generated subclass.
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java?rev=1079884&r1=1079883&r2=1079884&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java Wed Mar 9 17:00:53 2011
@@ -52,6 +52,7 @@ public class AbstractInvocationTest exte
interface Subject
{
+ @SimpleAnnotation("test")
void go() throws SQLException;
int count() throws SQLException;
@@ -136,4 +137,15 @@ public class AbstractInvocationTest exte
assertEquals(iv.getParameterCount(), 1);
assertSame(iv.getParameterType(0), Runnable.class);
}
+
+ @Test
+ public void get_method_annotation() throws Exception
+ {
+ Invocation iv = new TestInvocation(Subject.class.getMethod("go"));
+
+ SimpleAnnotation annotation = iv.getMethodAnnotation(SimpleAnnotation.class);
+
+ assertNotNull(annotation);
+ assertEquals(annotation.value(), "test");
+ }
}