[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