[jboss-cvs] JBossAS SVN: r64814 - trunk/ejb3/src/main/org/jboss/ejb3/security.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 23 16:45:44 EDT 2007


Author: anil.saldhana at jboss.com
Date: 2007-08-23 16:45:44 -0400 (Thu, 23 Aug 2007)
New Revision: 64814

Modified:
   trunk/ejb3/src/main/org/jboss/ejb3/security/Ejb3AuthenticationInterceptorv2.java
   trunk/ejb3/src/main/org/jboss/ejb3/security/RoleBasedAuthorizationInterceptorv2.java
   trunk/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorv2.java
   trunk/ejb3/src/main/org/jboss/ejb3/security/SecurityHelper.java
Log:
handle Timeout Annotation on methods

Modified: trunk/ejb3/src/main/org/jboss/ejb3/security/Ejb3AuthenticationInterceptorv2.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/security/Ejb3AuthenticationInterceptorv2.java	2007-08-23 20:19:35 UTC (rev 64813)
+++ trunk/ejb3/src/main/org/jboss/ejb3/security/Ejb3AuthenticationInterceptorv2.java	2007-08-23 20:45:44 UTC (rev 64814)
@@ -21,6 +21,7 @@
   */
 package org.jboss.ejb3.security;
 
+import java.lang.reflect.Method;
 import java.security.Principal;
 
 import javax.ejb.EJBAccessException;
@@ -66,9 +67,12 @@
 
    public Object invoke(Invocation invocation) throws Throwable
    { 
-      //Check for ejbTimeOut
+      //Check for ejbTimeOutCallback or ejbTimeOut method
       SecurityHelper shelper = new SecurityHelper();
-      if(shelper.isEJBTimeOut(((MethodInvocation) invocation).getMethod())) 
+      MethodInvocation mi = (MethodInvocation) invocation;
+      Method method = mi.getMethod();
+      if(shelper.isEJBTimeOutCallback(method) ||
+            shelper.containsTimeoutAnnotation(container, method)) 
          return invocation.invokeNext();
       
       SecurityIdentity si = null;

Modified: trunk/ejb3/src/main/org/jboss/ejb3/security/RoleBasedAuthorizationInterceptorv2.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/security/RoleBasedAuthorizationInterceptorv2.java	2007-08-23 20:19:35 UTC (rev 64813)
+++ trunk/ejb3/src/main/org/jboss/ejb3/security/RoleBasedAuthorizationInterceptorv2.java	2007-08-23 20:45:44 UTC (rev 64814)
@@ -120,8 +120,10 @@
    {
       MethodInvocation mi = (MethodInvocation)invocation;
       //Check for ejbTimeOut
-      SecurityHelper shelper = new SecurityHelper();
-      if(shelper.isEJBTimeOut(mi.getMethod())) 
+      SecurityHelper shelper = new SecurityHelper(); 
+      Method method = mi.getMethod();
+      if(shelper.isEJBTimeOutCallback(method) ||
+            shelper.containsTimeoutAnnotation(container, method)) 
          return invocation.invokeNext();
       
       try

Modified: trunk/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorv2.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorv2.java	2007-08-23 20:19:35 UTC (rev 64813)
+++ trunk/ejb3/src/main/org/jboss/ejb3/security/RunAsSecurityInterceptorv2.java	2007-08-23 20:45:44 UTC (rev 64814)
@@ -91,7 +91,7 @@
    { 
       //Check for ejbTimeOut
       SecurityHelper shelper = new SecurityHelper();
-      if(shelper.isEJBTimeOut(((MethodInvocation) invocation).getMethod())) 
+      if(shelper.isEJBTimeOutCallback(((MethodInvocation) invocation).getMethod())) 
          return invocation.invokeNext();
       
       SecurityContext sc = SecurityActions.getSecurityContext();

Modified: trunk/ejb3/src/main/org/jboss/ejb3/security/SecurityHelper.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/security/SecurityHelper.java	2007-08-23 20:19:35 UTC (rev 64813)
+++ trunk/ejb3/src/main/org/jboss/ejb3/security/SecurityHelper.java	2007-08-23 20:45:44 UTC (rev 64814)
@@ -24,8 +24,11 @@
 import java.lang.reflect.Method;
 
 import javax.ejb.TimedObject;
+import javax.ejb.Timeout;
 import javax.ejb.Timer;
 
+import org.jboss.ejb3.EJBContainer;
+
 //$Id$
 
 /**
@@ -38,10 +41,10 @@
 {
    /**
     * Check if the method is an EJBTimeOut method
-    * @param m
-    * @return
+    * @param m method
+    * @return true if it is a ejb timeout callback
     */
-   public boolean isEJBTimeOut(Method m)
+   public boolean isEJBTimeOutCallback(Method m)
    {
       /** The TimedObject.ejbTimeout callback */
       Method ejbTimeout = null;
@@ -56,4 +59,15 @@
       } 
       return m == ejbTimeout; 
    } 
+   
+   /**
+    * Checks whether a method declares a Timeout annotation
+    * @param container EJBContainer
+    * @param meth The method under investigation for an annotation
+    * @return @Timeout annotation exists
+    */
+   public boolean containsTimeoutAnnotation(EJBContainer container, Method meth)
+   {
+      return (Timeout) container.resolveAnnotation(meth, Timeout.class) != null;
+   }
 }




More information about the jboss-cvs-commits mailing list