
com.daedafusion.security.decision.impl.UnanimousResultCombiner Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of security-framework Show documentation
Show all versions of security-framework Show documentation
A pluggable security framework "inspired" by the OWASP ESAPI framework
The newest version!
package com.daedafusion.security.decision.impl;
import com.daedafusion.security.decision.Combiner;
import com.daedafusion.security.decision.Decision;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* Created by mphilpot on 7/14/14.
*/
public class UnanimousResultCombiner implements Combiner
{
private static final Logger log = Logger.getLogger(UnanimousResultCombiner.class);
@Override
public Decision getCombinedResult(List decisions)
{
Decision result = new Decision(UUID.randomUUID().toString());
List intermediateResults = new ArrayList<>();
decisions.forEach(d -> {
result.getObligations().addAll(d.getObligations());
intermediateResults.add(d.getResult());
});
// Filter abstain
if(intermediateResults.stream().filter(r -> !r.equals(Decision.Result.ABSTAIN)).count() == 0)
{
// All Abstained
result.setResult(Decision.Result.DENY);
}
else if(intermediateResults.stream().filter(r -> !r.equals(Decision.Result.ABSTAIN)).allMatch(r -> r.equals(Decision.Result.PERMIT)))
{
result.setResult(Decision.Result.PERMIT);
}
else
{
result.setResult(Decision.Result.DENY);
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy