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");
+    }
 }