@Override public void unregisterDescriptor(SecurityPolicyDescriptor descriptor) { String id = descriptor.getName(); if (policyDescriptors.containsKey(id)) { policyDescriptors.remove(id); resetPolicies(); } }
private void computePolicies() { policies = new ArrayList<SecurityPolicy>(); List<SecurityPolicyDescriptor> orderedDescriptors = new ArrayList<SecurityPolicyDescriptor>(); for (SecurityPolicyDescriptor descriptor : policyDescriptors.values()) { if (descriptor.isEnabled()) { orderedDescriptors.add(descriptor); } } Collections.sort(orderedDescriptors); List<String> policyNames = new ArrayList<String>(); for (SecurityPolicyDescriptor descriptor : orderedDescriptors) { if (descriptor.isEnabled()) { try { Object policy = descriptor.getPolicy().newInstance(); if (policy instanceof SecurityPolicy) { policies.add((SecurityPolicy) policy); policyNames.add(descriptor.getName()); } else { log.error( String.format( "Invalid contribution to security policy service %s:" + " must implement SecurityPolicy interface", descriptor.getName())); } } catch (Exception e) { log.error(e); } } } log.debug("Ordered security policies: " + policyNames.toString()); }
@Override public void registerDescriptor(SecurityPolicyDescriptor descriptor) { String id = descriptor.getName(); if (policyDescriptors.containsKey(id)) { log.info("Overriding security policy " + id); } policyDescriptors.put(id, descriptor); resetPolicies(); }