You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2011/01/03 16:51:49 UTC
svn commit: r1054662 - in /openejb/trunk/openejb3/assembly/openejb-tomcat:
openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/
openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/
Author: jgallimore
Date: Mon Jan 3 15:51:49 2011
New Revision: 1054662
URL: http://svn.apache.org/viewvc?rev=1054662&view=rev
Log:
OPENEJB-1403 fixed security itests - pRealm.hasRoles() has changed in Tomcat 7 so changed TomcatSecurityService to call it using reflection
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java?rev=1054662&r1=1054661&r2=1054662&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatSecurityService.java Mon Jan 3 15:51:49 2011
@@ -84,7 +84,7 @@ public class TomcatSecurityService exten
for (Principal principal : principals) {
if (principal instanceof TomcatUser) {
TomcatUser user = (TomcatUser) principal;
- if (user.getRealm().hasRole(user.getTomcatPrincipal(), logicalRole)) {
+ if (TomcatHelper.hasRole(user.getRealm(), user.getTomcatPrincipal(), logicalRole)) {
roles.add(logicalRole);
break;
}
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java?rev=1054662&r1=1054661&r2=1054662&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-loader/src/main/java/org/apache/openejb/tomcat/loader/TomcatHelper.java Mon Jan 3 15:51:49 2011
@@ -19,10 +19,13 @@ package org.apache.openejb.tomcat.loader
import java.lang.management.ManagementFactory;
import java.lang.reflect.Method;
+import java.security.Principal;
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import org.apache.catalina.Realm;
+import org.apache.catalina.Wrapper;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardServer;
@@ -88,4 +91,33 @@ public class TomcatHelper {
// return STOPPED by default
return 3;
}
+
+ /**
+ * Helper method to call the correct org.apache.catalina.Realm.hasRole method based on the Tomcat version
+ * @param realm
+ * @param tomcatPrincipal
+ * @param logicalRole
+ * @return true the the principle has the specified role
+ */
+ public static boolean hasRole(Realm realm, Principal tomcatPrincipal, String logicalRole) {
+ Method method = null;
+ try {
+
+ if (isTomcat7()) {
+ method = realm.getClass().getMethod("hasRole", new Class<?>[] { Wrapper.class, Principal.class, String.class });
+ return (Boolean) method.invoke(realm, new Object[] { null, tomcatPrincipal, logicalRole});
+ } else {
+ method = realm.getClass().getMethod("hasRole", new Class<?>[] { Principal.class, String.class });
+ return (Boolean) method.invoke(realm, new Object[] { tomcatPrincipal, logicalRole});
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return false;
+ }
+
+ private static boolean isTomcat7() {
+ return System.getProperty("tomcat.version").startsWith("7.");
+ }
}