X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=main%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fpdpx%2Fmain%2Frest%2Fprovider%2FDecisionProvider.java;h=33178533caa681a6f0416b2a5447522a72783585;hb=9bf471abe906598ffd2cd280d372e7cb9474a418;hp=6219004375f5d97f25df5d0446e2cc4540690fda;hpb=d2daf7ef5d003b5c5ae6a7083ccf676cc87a1d7b;p=policy%2Fxacml-pdp.git diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java index 62190043..33178533 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java @@ -20,19 +20,44 @@ package org.onap.policy.pdpx.main.rest.provider; -import org.onap.policy.pdpx.main.rest.model.Decision; +import javax.ws.rs.core.Response.Status; + +import org.onap.policy.models.decisions.concepts.DecisionException; +import org.onap.policy.models.decisions.concepts.DecisionRequest; +import org.onap.policy.models.decisions.concepts.DecisionResponse; +import org.onap.policy.pdp.xacml.application.common.XacmlApplicationServiceProvider; +import org.onap.policy.pdpx.main.rest.XacmlPdpApplicationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class DecisionProvider { + private static final Logger LOGGER = LoggerFactory.getLogger(DecisionProvider.class); /** * Retrieves the policy decision for the specified parameters. + * @param body * * @return the Decision object */ - public Decision fetchDecision() { - // placeholder - return new Decision(); + public DecisionResponse fetchDecision(DecisionRequest request) { + LOGGER.debug("Fetching decision {}", request); + // + // Find application for this decision + // + XacmlApplicationServiceProvider application = findApplication(request); + // + // Cannot find application for action + // + return application.makeDecision(request); + } + + private XacmlApplicationServiceProvider findApplication(DecisionRequest request) { + XacmlApplicationServiceProvider application = XacmlPdpApplicationManager.findApplication(request); + if (application != null) { + return application; + } + throw new DecisionException(Status.BAD_REQUEST, "No application for action " + request.getAction()); } }