You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2009/07/24 09:45:36 UTC

svn commit: r797356 - in /tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http: LDAPRealmAuthenticationImplementationPolicyProvider.java LDAPRealmAuthenticationServicePolicyProvider.java

Author: lresende
Date: Fri Jul 24 07:45:36 2009
New Revision: 797356

URL: http://svn.apache.org/viewvc?rev=797356&view=rev
Log:
Adding support for explicitly configuring policySets

Modified:
    tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java
    tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java

Modified: tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java?rev=797356&r1=797355&r2=797356&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java (original)
+++ tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationImplementationPolicyProvider.java Fri Jul 24 07:45:36 2009
@@ -68,57 +68,111 @@
      */
     private List<LDAPRealmAuthenticationPolicy> findAuthenticationPolicies(Operation op) {
         List<LDAPRealmAuthenticationPolicy> polices = new ArrayList<LDAPRealmAuthenticationPolicy>();
-        if (implementation instanceof OperationsConfigurator) {
-            OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation;
-            for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
-                if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) {
-                    for (PolicySet ps : cop.getPolicySets()) {
-                        for (Object p : ps.getPolicies()) {
-                            if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
-                                polices.add((LDAPRealmAuthenticationPolicy)p);
-                            }
-                        }
+        
+
+        // check explicity added policies first
+        ConfiguredOperation configuredOperation = findOperation(op);
+        if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) {
+            for ( PolicySet ps : configuredOperation.getPolicySets()) {
+                for (Object p : ps.getPolicies()) {
+                    if (p instanceof LDAPRealmAuthenticationPolicy) {
+                        polices.add((LDAPRealmAuthenticationPolicy)p);
                     }
                 }
             }
         }
         
-        List<PolicySet> policySets = component.getPolicySets();
-        for (PolicySet ps : policySets) {
-            for (Object p : ps.getPolicies()) {
-                if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
-                    polices.add((LDAPRealmAuthenticationPolicy)p);
+        // otherwise find applicable policySets
+        if ( polices.size() == 0) {
+
+            if (implementation instanceof OperationsConfigurator) {
+                OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation;
+                for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
+                    if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) {
+                        for (PolicySet ps : cop.getPolicySets()) {
+                            for (Object p : ps.getPolicies()) {
+                                if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
+                                    polices.add((LDAPRealmAuthenticationPolicy)p);
+                                }
+                            }
+                        }
+                    }
                 }
             }
+            
+            List<PolicySet> policySets = component.getPolicySets();
+            for (PolicySet ps : policySets) {
+                for (Object p : ps.getPolicies()) {
+                    if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
+                        polices.add((LDAPRealmAuthenticationPolicy)p);
+                    }
+                }
+            }    
         }
+        
         return polices;
     }
     
     private List<AuthorizationPolicy> findAuthorizationPolicies(Operation op) {
         List<AuthorizationPolicy> polices = new ArrayList<AuthorizationPolicy>();
-        if (implementation instanceof OperationsConfigurator) {
-            OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation;
-            for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
-                if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) {
-                    for (PolicySet ps : cop.getPolicySets()) {
-                        for (Object p : ps.getPolicies()) {
-                            if (AuthorizationPolicy.class.isInstance(p)) {
-                                polices.add((AuthorizationPolicy)p);
-                            }
-                        }
+        
+
+        // check explicity added policies first
+        ConfiguredOperation configuredOperation = findOperation(op);
+        if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) {
+            for ( PolicySet ps : configuredOperation.getPolicySets()) {
+                for (Object p : ps.getPolicies()) {
+                    if (p instanceof AuthorizationPolicy) {
+                        polices.add((AuthorizationPolicy)p);
                     }
                 }
             }
         }
         
-        List<PolicySet> policySets = component.getPolicySets();
-        for (PolicySet ps : policySets) {
-            for (Object p : ps.getPolicies()) {
-                if (AuthorizationPolicy.class.isInstance(p)) {
-                    polices.add((AuthorizationPolicy)p);
+        // otherwise find applicable policySets
+        if ( polices.size() == 0) {
+
+            if (implementation instanceof OperationsConfigurator) {
+                OperationsConfigurator operationsConfigurator = (OperationsConfigurator)implementation;
+                for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
+                    if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) {
+                        for (PolicySet ps : cop.getPolicySets()) {
+                            for (Object p : ps.getPolicies()) {
+                                if (AuthorizationPolicy.class.isInstance(p)) {
+                                    polices.add((AuthorizationPolicy)p);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            
+            List<PolicySet> policySets = component.getPolicySets();
+            for (PolicySet ps : policySets) {
+                for (Object p : ps.getPolicies()) {
+                    if (AuthorizationPolicy.class.isInstance(p)) {
+                        polices.add((AuthorizationPolicy)p);
+                    }
                 }
             }
+    
         }
+                
         return polices;
     }
+    
+
+    private ConfiguredOperation findOperation(Operation operation) {
+        ConfiguredOperation configuredOperation = null;
+        
+        for (ConfiguredOperation cOperation : ((OperationsConfigurator)component).getConfiguredOperations()) {
+            if(cOperation.getName().equals(operation.getName())) {
+                configuredOperation = cOperation;
+                break;
+            }
+        }
+        
+        return configuredOperation;
+    }
+
 }

Modified: tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java?rev=797356&r1=797355&r2=797356&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java (original)
+++ tuscany/branches/sca-java-1.x/modules/policy-security-http/src/main/java/org/apache/tuscany/sca/policy/security/http/LDAPRealmAuthenticationServicePolicyProvider.java Fri Jul 24 07:45:36 2009
@@ -81,45 +81,64 @@
      */
     
     /**
-     * 
+     * Find applicable authorization policySets
+     * It first check if any explicitly policySet was identified
+     * Otherwise it look into the list of applicablePolicySets
      * @param op
      * @return
      */
     private List<LDAPRealmAuthenticationPolicy> findAuthenticationPolicies(Operation op) {
         List<LDAPRealmAuthenticationPolicy> polices = new ArrayList<LDAPRealmAuthenticationPolicy>();
-        // FIXME: How do we get a list of effective policySets for a given operation?
-        for(Operation operation : operations) {
-            if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) {
-                for (PolicySet ps : operation.getPolicySets()) {
-                    for (Object p : ps.getPolicies()) {
-                        if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
-                            polices.add((LDAPRealmAuthenticationPolicy)p);
-                        }
+
+        // check explicity added policies first
+        ConfiguredOperation configuredOperation = findOperation(op);
+        if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) {
+            for ( PolicySet ps : configuredOperation.getPolicySets()) {
+                for (Object p : ps.getPolicies()) {
+                    if (p instanceof LDAPRealmAuthenticationPolicy) {
+                        polices.add((LDAPRealmAuthenticationPolicy)p);
                     }
                 }
             }
         }
 
-        if (service instanceof OperationsConfigurator) {
-            OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service;
-            for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
-                if (cop!= null && cop.getName() != null && cop.getName().equals(op.getName())) {
-                    for (PolicySet ps : cop.getApplicablePolicySets()) {
+        
+        // otherwise find applicable policySets
+        if ( polices.size() == 0) {
+            // FIXME: How do we get a list of effective policySets for a given operation?
+            for(Operation operation : operations) {
+                if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) {
+                    for (PolicySet ps : operation.getPolicySets()) {
                         for (Object p : ps.getPolicies()) {
-                            if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
+                            if (p instanceof LDAPRealmAuthenticationPolicy) {
                                 polices.add((LDAPRealmAuthenticationPolicy)p);
                             }
                         }
                     }
                 }
             }
-        }
 
-        List<PolicySet> policySets = service.getPolicySets();
-        for (PolicySet ps : policySets) {
-            for (Object p : ps.getPolicies()) {
-                if (LDAPRealmAuthenticationPolicy.class.isInstance(p)) {
-                    polices.add((LDAPRealmAuthenticationPolicy)p);
+            if (service instanceof OperationsConfigurator) {
+                OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service;
+                for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
+                    if (cop!= null && cop.getName() != null && cop.getName().equals(op.getName())) {
+                        for (PolicySet ps : cop.getApplicablePolicySets()) {
+                            for (Object p : ps.getPolicies()) {
+                                if (p instanceof LDAPRealmAuthenticationPolicy) {
+                                    polices.add((LDAPRealmAuthenticationPolicy)p);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            List<PolicySet> policySets = service.getPolicySets();
+            for (PolicySet ps : policySets) {
+                for (Object p : ps.getPolicies()) {
+                    if (p instanceof LDAPRealmAuthenticationPolicy) {
+                        polices.add((LDAPRealmAuthenticationPolicy)p);
+                    }
                 }
             }
         }
@@ -128,50 +147,80 @@
     }
     
     /**
-     * 
+     * Find applicable authorization policySets
+     * It first check if any explicitly policySet was identified
+     * Otherwise it look into the list of applicablePolicySets
      * @param op
      * @return
      */
     private List<AuthorizationPolicy> findAuthorizationPolicies(Operation op) {
         List<AuthorizationPolicy> polices = new ArrayList<AuthorizationPolicy>();
-        // FIXME: How do we get a list of effective policySets for a given operation?
-        for(Operation operation : operations) {
-            if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) {
-                for (PolicySet ps : operation.getPolicySets()) {
-                    for (Object p : ps.getPolicies()) {
-                        if (AuthorizationPolicy.class.isInstance(p)) {
-                            polices.add((AuthorizationPolicy)p);
-                        }
+        
+        // check explicity added policies first
+        ConfiguredOperation configuredOperation = findOperation(op);
+        if (configuredOperation!= null && configuredOperation.getPolicySets().size() > 0) {
+            for ( PolicySet ps : configuredOperation.getPolicySets()) {
+                for (Object p : ps.getPolicies()) {
+                    if (p instanceof AuthorizationPolicy) {
+                        polices.add((AuthorizationPolicy)p);
                     }
                 }
             }
         }
-
-        if (service instanceof OperationsConfigurator) {
-            OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service;
-            for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
-                if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) {
-                    for (PolicySet ps : cop.getApplicablePolicySets()) {
+        
+        // otherwise find applicable policySets
+        if ( polices.size() == 0) {
+            // FIXME: How do we get a list of effective policySets for a given operation?
+            for(Operation operation : operations) {
+                if (operation!= null && operation.getName() != null && operation.getName().equals(op.getName())) {
+                    for (PolicySet ps : operation.getPolicySets()) {
                         for (Object p : ps.getPolicies()) {
-                            if (AuthorizationPolicy.class.isInstance(p)) {
+                            if (p instanceof AuthorizationPolicy) {
                                 polices.add((AuthorizationPolicy)p);
                             }
                         }
                     }
                 }
             }
-        }
 
-        List<PolicySet> policySets = service.getPolicySets();
-        for (PolicySet ps : policySets) {
-            for (Object p : ps.getPolicies()) {
-                if (AuthorizationPolicy.class.isInstance(p)) {
-                    polices.add((AuthorizationPolicy)p);
+            if (service instanceof OperationsConfigurator) {
+                OperationsConfigurator operationsConfigurator = (OperationsConfigurator)service;
+                for (ConfiguredOperation cop : operationsConfigurator.getConfiguredOperations()) {
+                    if (cop != null && cop.getName() != null && cop.getName().equals(op.getName())) {
+                        for (PolicySet ps : cop.getApplicablePolicySets()) {
+                            for (Object p : ps.getPolicies()) {
+                                if (p instanceof AuthorizationPolicy) {
+                                    polices.add((AuthorizationPolicy)p);
+                                }
+                            }
+                        }
+                    }
                 }
             }
+
+            List<PolicySet> policySets = service.getPolicySets();
+            for (PolicySet ps : policySets) {
+                for (Object p : ps.getPolicies()) {
+                    if (p instanceof AuthorizationPolicy) {
+                        polices.add((AuthorizationPolicy)p);
+                    }
+                }
+            }            
         }
         
         return polices;
     }
 
+    private ConfiguredOperation findOperation(Operation operation) {
+        ConfiguredOperation configuredOperation = null;
+        
+        for (ConfiguredOperation cOperation : ((OperationsConfigurator)component).getConfiguredOperations()) {
+            if(cOperation.getName().equals(operation.getName())) {
+                configuredOperation = cOperation;
+                break;
+            }
+        }
+        
+        return configuredOperation;
+    }
 }