package org.fcrepo.server.security.impl; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.fcrepo.server.errors.ValidationException; import org.fcrepo.server.security.PolicyParser; import org.fcrepo.server.security.PolicyLoader; import org.fcrepo.server.storage.RepositoryReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.jboss.security.xacml.sunxacml.AbstractPolicy; public class SimplePolicyLoader extends PolicyLoader { private static final Logger logger = LoggerFactory.getLogger(SimplePolicyLoader.class); public SimplePolicyLoader(RepositoryReader repoReader) { super(repoReader); } @Override public Map<String, AbstractPolicy> loadPolicies(PolicyParser policyParser, boolean validate, File dir) throws IOException, ValidationException { Map<String,AbstractPolicy> policies = new HashMap<String,AbstractPolicy>(); for (File file: dir.listFiles()) { if (file.isDirectory()) { policies.putAll(loadPolicies(policyParser, validate, file)); } else { if (file.getName().endsWith(".xml")) { logger.info("Loading policy: {}", file.getPath()); InputStream policyStream = new FileInputStream(file); policies.put(file.getPath(), policyParser.parse(policyStream, validate)); } } } return policies; } }