maguro 2005/03/09 00:01:01
Modified: modules/core/src/java/org/openejb/security
EJBRunAsInterceptor.java
EJBSecurityInterceptor.java
Log:
Fixed getCallerPrincipal()
Revision Changes Path
1.2 +2 -2
openejb/modules/core/src/java/org/openejb/security/EJBRunAsInterceptor.java
Index: EJBRunAsInterceptor.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/security/EJBRunAsInterceptor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EJBRunAsInterceptor.java 1 Mar 2004 07:14:43 -0000 1.1
+++ EJBRunAsInterceptor.java 9 Mar 2005 05:01:01 -0000 1.2
@@ -68,7 +68,7 @@
* <code>Subject</code>.
* @version $Revision$ $Date$
*/
-public class EJBRunAsInterceptor implements Interceptor {
+public final class EJBRunAsInterceptor implements Interceptor {
private final Interceptor next;
private final Subject subject;
1.8 +7 -1
openejb/modules/core/src/java/org/openejb/security/EJBSecurityInterceptor.java
Index: EJBSecurityInterceptor.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/security/EJBSecurityInterceptor.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- EJBSecurityInterceptor.java 5 Mar 2005 03:23:16 -0000 1.7
+++ EJBSecurityInterceptor.java 9 Mar 2005 05:01:01 -0000 1.8
@@ -61,6 +61,7 @@
import org.apache.geronimo.security.ContextManager;
import org.openejb.EJBInvocation;
+import org.openejb.EJBContextImpl;
/**
@@ -83,9 +84,12 @@
public InvocationResult invoke(Invocation invocation) throws Throwable {
EJBInvocation ejbInvocation = ((EJBInvocation) invocation);
+ EJBContextImpl context =
ejbInvocation.getEJBInstanceContext().getEJBContextImpl();
+ Subject oldCaller = context.getCallerSubject();
Subject subject = ContextManager.getCurrentCaller();
String oldPolicyContextID = PolicyContext.getContextID();
+
try {
PolicyContext.setContextID(contextId);
AccessControlContext accessContext =
ContextManager.getCurrentContext();
@@ -94,6 +98,7 @@
if (permission != null)
accessContext.checkPermission(permission);
}
+ context.setCallerSubject(subject);
ContextManager.setCurrentCaller(ContextManager.getNextCaller());
return next.invoke(invocation);
@@ -106,6 +111,7 @@
} finally {
PolicyContext.setContextID(oldPolicyContextID);
ContextManager.setCurrentCaller(subject);
+ context.setCallerSubject(oldCaller);
}
}
}