This is an automated email from the ASF dual-hosted git repository.
ffang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new 1cfdb42 [CXF-7815]for better performance
1cfdb42 is described below
commit 1cfdb42724549fdef21a9d50d62cd9dbdc5d8dd3
Author: Freeman Fang <[email protected]>
AuthorDate: Fri Nov 9 11:36:42 2018 +0800
[CXF-7815]for better performance
---
.../security/DefaultSecurityContext.java | 28 +++++++++++++++++-----
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git
a/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
b/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
index 71a212f..547c8ac 100644
---
a/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
+++
b/core/src/main/java/org/apache/cxf/interceptor/security/DefaultSecurityContext.java
@@ -37,10 +37,26 @@ import org.apache.cxf.security.LoginSecurityContext;
* Groups the principal is a member of
*/
public class DefaultSecurityContext implements LoginSecurityContext {
-
+
+ private static Class<?> javaGroup;
+ private static Class<?> karafGroup;
+
private Principal p;
private Subject subject;
+ static {
+ try {
+ javaGroup = Class.forName("java.security.acl.Group");
+ } catch (Throwable e) {
+ javaGroup = null;
+ }
+ try {
+ karafGroup =
Class.forName("org.apache.karaf.jaas.boot.principal.Group");
+ } catch (Throwable e) {
+ karafGroup = null;
+ }
+ }
+
public DefaultSecurityContext(Subject subject) {
this.p = findPrincipal(null, subject);
this.subject = subject;
@@ -147,18 +163,18 @@ public class DefaultSecurityContext implements
LoginSecurityContext {
}
- private static boolean instanceOf(Object obj, String className) {
+ private static boolean instanceOfGroup(Object obj) {
try {
- return Class.forName(className).isInstance(obj);
- } catch (ClassNotFoundException ex) {
+ return (javaGroup != null && javaGroup.isInstance(obj))
+ || (karafGroup != null && karafGroup.isInstance(obj));
+ } catch (Exception ex) {
return false;
}
}
public static boolean isGroupPrincipal(Principal principal) {
return principal instanceof GroupPrincipal
- || instanceOf(principal, "java.security.acl.Group")
- || instanceOf(principal,
"org.apache.karaf.jaas.boot.principal.Group");
+ || instanceOfGroup(principal);
}
}