/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.policy.pdpx.main;
import java.util.Collections;
+import org.apache.commons.lang3.StringUtils;
import org.onap.policy.common.utils.network.NetworkUtil;
import org.onap.policy.models.pdp.concepts.PdpMessage;
import org.onap.policy.models.pdp.concepts.PdpResponseDetails;
* Current state of this XACML PDP.
*/
public class XacmlState {
+ /**
+ * Unique name for the xacml-pdp JVM, used in PdpStatus messages.
+ */
+ public static final String PDP_NAME = NetworkUtil.genUniqueName("xacml");
/**
* The application manager.
*/
private final PdpStatus status;
-
/**
* Constructs the object, initializing the state.
*/
- public XacmlState(XacmlPdpApplicationManager appManager) {
+ public XacmlState(XacmlPdpApplicationManager appManager, String pdpGroupName, String pdpType) {
this.appManager = appManager;
this.status = new PdpStatus();
- this.status.setName(NetworkUtil.getHostname());
- this.status.setPdpType("xacml");
+ this.status.setName(PDP_NAME);
+ this.status.setPdpType(pdpType);
this.status.setState(PdpState.PASSIVE);
- this.status.setSupportedPolicyTypes(appManager.getToscaPolicyTypeIdents());
this.status.setPolicies(Collections.emptyList());
+ this.status.setPdpGroup(pdpGroupName);
}
/**
* within a group/subgroup.
*/
- PdpStatus status2 = makeResponse(message);
+ PdpStatus status2 = makeResponse(message, "");
// these fields aren't needed in the response, so clear them out to avoid sending
status2.setPolicies(null);
* @param message message from which to update the internal state
* @return a response to the message
*/
- public PdpStatus updateInternalState(PdpUpdate message) {
- status.setPdpGroup(message.getPdpGroup());
+ public PdpStatus updateInternalState(PdpUpdate message, String errMessage) {
status.setPdpSubgroup(message.getPdpSubgroup());
status.setPolicies(appManager.getToscaPolicyIdentifiers());
- return makeResponse(message);
+ return makeResponse(message, errMessage);
}
/**
* Makes a response to the given message, based on the current state.
*
* @param message message for which the response should be made
+ * @param errMessage the error message to be sent to PAP
* @return a new response
*/
- private PdpStatus makeResponse(PdpMessage message) {
- PdpResponseDetails resp = new PdpResponseDetails();
- resp.setResponseStatus(PdpResponseStatus.SUCCESS);
+ private PdpStatus makeResponse(PdpMessage message, String errMessage) {
+ var resp = new PdpResponseDetails();
+
+ if (StringUtils.isBlank(errMessage)) {
+ resp.setResponseStatus(PdpResponseStatus.SUCCESS);
+ } else {
+ resp.setResponseStatus(PdpResponseStatus.FAIL);
+ resp.setResponseMessage(errMessage);
+ }
resp.setResponseTo(message.getRequestId());
- PdpStatus status2 = new PdpStatus(status);
+ var status2 = new PdpStatus(status);
status2.setResponse(resp);
return status2;
}