Author: ffang
Date: Wed Oct 16 07:29:42 2013
New Revision: 1532662

URL: http://svn.apache.org/r1532662
Log:
[SMX4NMR-315]provide a configurable way to specify the Karaf RolePrincipal 
classname when expose NMR DefaultAuthorizationEntry as OSGi service

Modified:
    
servicemix/smx4/nmr/trunk/nmr/api/src/main/java/org/apache/servicemix/nmr/api/security/GroupPrincipal.java
    
servicemix/smx4/nmr/trunk/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationEntry.java
    
servicemix/smx4/nmr/trunk/nmr/osgi/src/main/resources/OSGI-INF/blueprint/servicemix-nmr.xml

Modified: 
servicemix/smx4/nmr/trunk/nmr/api/src/main/java/org/apache/servicemix/nmr/api/security/GroupPrincipal.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/nmr/api/src/main/java/org/apache/servicemix/nmr/api/security/GroupPrincipal.java?rev=1532662&r1=1532661&r2=1532662&view=diff
==============================================================================
--- 
servicemix/smx4/nmr/trunk/nmr/api/src/main/java/org/apache/servicemix/nmr/api/security/GroupPrincipal.java
 (original)
+++ 
servicemix/smx4/nmr/trunk/nmr/api/src/main/java/org/apache/servicemix/nmr/api/security/GroupPrincipal.java
 Wed Oct 16 07:29:42 2013
@@ -29,6 +29,7 @@ public class GroupPrincipal implements P
 
     private final String name;
     private transient int hash;
+    private String containerRolePrincipalClassName = 
"org.apache.karaf.jaas.boot.principal.RolePrincipal";
 
     public GroupPrincipal(String name) {
         if (name == null) {
@@ -37,6 +38,11 @@ public class GroupPrincipal implements P
         this.name = name;
     }
 
+    public GroupPrincipal(String name, String containerRolePrincipalClassName) 
{
+        this(name);
+        this.containerRolePrincipalClassName = containerRolePrincipalClassName;
+    }
+    
     public String getName() {
         return name;
     }
@@ -46,7 +52,7 @@ public class GroupPrincipal implements P
             return true;
         }
         if (o == null 
-            || 
(!o.getClass().getName().equals("org.apache.karaf.jaas.modules.RolePrincipal") 
&& getClass() != o.getClass())) {
+            || 
(!o.getClass().getName().equals(containerRolePrincipalClassName) && getClass() 
!= o.getClass())) {
                return false;
         }
         final Principal that = (Principal) o;

Modified: 
servicemix/smx4/nmr/trunk/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationEntry.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationEntry.java?rev=1532662&r1=1532661&r2=1532662&view=diff
==============================================================================
--- 
servicemix/smx4/nmr/trunk/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationEntry.java
 (original)
+++ 
servicemix/smx4/nmr/trunk/nmr/core/src/main/java/org/apache/servicemix/nmr/core/security/DefaultAuthorizationEntry.java
 Wed Oct 16 07:29:42 2013
@@ -39,6 +39,7 @@ public class DefaultAuthorizationEntry i
     private QName operation;
     private Type type = Type.Add;
     private int rank;
+    private String containerRolePrincipalClassName;
 
     public DefaultAuthorizationEntry() {
     }
@@ -164,8 +165,21 @@ public class DefaultAuthorizationEntry i
         StringTokenizer iter = new StringTokenizer(roles, ",");
         while (iter.hasMoreTokens()) {
             String name = iter.nextToken().trim();
-            s.add(new GroupPrincipal(name));
+            if (this.containerRolePrincipalClassName != null 
+                && this.containerRolePrincipalClassName.length() > 0) {
+                s.add(new GroupPrincipal(name, 
this.containerRolePrincipalClassName));
+            } else {
+                s.add(new GroupPrincipal(name));
+            }
         }
         return s;
     }
+
+    public String getContainerRolePrincipalClassName() {
+        return containerRolePrincipalClassName;
+    }
+
+    public void setContainerRolePrincipalClassName(String 
containerRolePrincipalClassName) {
+        this.containerRolePrincipalClassName = containerRolePrincipalClassName;
+    }
 }

Modified: 
servicemix/smx4/nmr/trunk/nmr/osgi/src/main/resources/OSGI-INF/blueprint/servicemix-nmr.xml
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/nmr/trunk/nmr/osgi/src/main/resources/OSGI-INF/blueprint/servicemix-nmr.xml?rev=1532662&r1=1532661&r2=1532662&view=diff
==============================================================================
--- 
servicemix/smx4/nmr/trunk/nmr/osgi/src/main/resources/OSGI-INF/blueprint/servicemix-nmr.xml
 (original)
+++ 
servicemix/smx4/nmr/trunk/nmr/osgi/src/main/resources/OSGI-INF/blueprint/servicemix-nmr.xml
 Wed Oct 16 07:29:42 2013
@@ -110,6 +110,7 @@
             <property name="rank" value="-2147483648"/>
             <property name="roles" value="*"/>
             <property name="type" value="Set"/>
+            <property name="containerRolePrincipalClassName" 
value="${containerRolePrincipalClassName}"/>
         </bean>
     </service>
 
@@ -149,6 +150,7 @@
             <cm:property name="maximumPoolSize" value="-1"/>
             <cm:property name="queueSize" value="1024"/>
             <cm:property name="bypassIfSynchronous" value="true"/>
+            <cm:property name="containerRolePrincipalClassName" 
value="org.apache.karaf.jaas.boot.principal.RolePrincipal"/>
         </cm:default-properties>
     </cm:property-placeholder>
 


Reply via email to