Repository: incubator-ranger Updated Branches: refs/heads/master 66e5cfd96 -> 878e2ac3f
RANGER-328: fix for NPE in Ranger policy engine Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/878e2ac3 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/878e2ac3 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/878e2ac3 Branch: refs/heads/master Commit: 878e2ac3f656502bd9aba150579de28b657845a1 Parents: 66e5cfd Author: Madhan Neethiraj <[email protected]> Authored: Mon Mar 23 17:35:40 2015 -0700 Committer: Madhan Neethiraj <[email protected]> Committed: Mon Mar 23 17:35:40 2015 -0700 ---------------------------------------------------------------------- .../policyengine/RangerPolicyEngineImpl.java | 23 ++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/878e2ac3/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java index 7227e9e..5e9ca0c 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java @@ -56,11 +56,14 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { @Override public RangerServiceDef getServiceDef() { + RangerPolicyRepository policyRepository = getPolicyRepository(); + return policyRepository == null ? null : policyRepository.getServiceDef(); } @Override public List<RangerContextEnricher> getContextEnrichers() { + RangerPolicyRepository policyRepository = getPolicyRepository(); return policyRepository == null ? null : policyRepository.getContextEnrichers(); } @@ -72,9 +75,11 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { } if (serviceName != null && serviceDef != null && policies != null) { - policyRepository = new RangerPolicyRepository(serviceName); + RangerPolicyRepository policyRepository = new RangerPolicyRepository(serviceName); policyRepository.init(serviceDef, policies); + this.serviceName = serviceName; + setPolicyRepository(policyRepository); } else { LOG.error("RangerPolicyEngineImpl.setPolicies ->Invalid arguments: serviceName, serviceDef, or policies is null"); } @@ -96,7 +101,9 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { @Override public RangerAccessResult createAccessResult(RangerAccessRequest request) { - return policyRepository == null ? null : new RangerAccessResult(serviceName, policyRepository.getServiceDef(), request); + RangerPolicyRepository policyRepository = getPolicyRepository(); + + return new RangerAccessResult(serviceName, policyRepository == null ? null : policyRepository.getServiceDef(), request); } @Override @@ -160,6 +167,8 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { LOG.debug("==> RangerPolicyEngineImpl.isAccessAllowedNoAudit(" + request + ")"); } + RangerPolicyRepository policyRepository = getPolicyRepository(); + RangerAccessResult ret = createAccessResult(request); if(policyRepository != null && ret != null && request != null) { @@ -191,6 +200,14 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { return ret; } + private RangerPolicyRepository getPolicyRepository() { + return this.policyRepository; + } + + private void setPolicyRepository(RangerPolicyRepository policyRepository) { + this.policyRepository = policyRepository; + } + @Override public String toString( ) { StringBuilder sb = new StringBuilder(); @@ -201,6 +218,8 @@ public class RangerPolicyEngineImpl implements RangerPolicyEngine { } public StringBuilder toString(StringBuilder sb) { + RangerPolicyRepository policyRepository = getPolicyRepository(); + sb.append("RangerPolicyEngineImpl={"); sb.append("serviceName={").append(serviceName).append("} ");
