import com.google.gson.JsonObject;
import com.google.gson.JsonSyntaxException;
import com.google.gson.annotations.Expose;
-
import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
-
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
-
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.LoopElementModel;
import org.onap.clamp.loop.template.PolicyModel;
import org.onap.clamp.policy.Policy;
import org.yaml.snakeyaml.DumperOptions;
@Entity
@Table(name = "operational_policies")
-@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) })
+@TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)})
public class OperationalPolicy extends Policy implements Serializable {
/**
* The serial version ID.
@Expose
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumns({ @JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
- @JoinColumn(name = "policy_model_version", referencedColumnName = "version") })
+ @JoinColumns({@JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"),
+ @JoinColumn(name = "policy_model_version", referencedColumnName = "version")})
private PolicyModel policyModel;
public OperationalPolicy() {
* @param loop The loop that uses this operational policy
* @param configurationsJson The operational policy property in the format of
* json
+ * @param policyModel The policy model associated if any, can be null
+ * @param loopElementModel The loop element from which this instance is supposed to be created
+ * @param pdpGroup The Pdp Group info
+ * @param pdpSubgroup The Pdp Subgroup info
*/
- public OperationalPolicy(String name, Loop loop, JsonObject configurationsJson) {
+ public OperationalPolicy(String name, Loop loop, JsonObject configurationsJson, PolicyModel policyModel,
+ LoopElementModel loopElementModel, String pdpGroup, String pdpSubgroup) {
this.name = name;
this.loop = loop;
+ this.setPolicyModel(policyModel);
this.setConfigurationsJson(configurationsJson);
- LegacyOperationalPolicy.preloadConfiguration(configurationsJson, loop);
+ this.setPdpGroup(pdpGroup);
+ this.setPdpSubgroup(pdpSubgroup);
+ this.setLoopElementModel(loopElementModel);
+ if (policyModel != null && policyModel.getPolicyModelType().contains("legacy")) {
+ LegacyOperationalPolicy.preloadConfiguration(configurationsJson, loop);
+ }
try {
this.setJsonRepresentation(
- OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(loop.getModelService()));
+ OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(loop.getModelService()));
} catch (JsonSyntaxException | IOException | NullPointerException e) {
logger.error("Unable to generate the operational policy Schema ... ", e);
this.setJsonRepresentation(new JsonObject());
/**
* name setter.
- *
+ *
* @param name the name to set
*/
@Override
/**
* policyModel getter.
- *
+ *
* @return the policyModel
*/
public PolicyModel getPolicyModel() {
/**
* policyModel setter.
- *
+ *
* @param policyModel the policyModel to set
*/
public void setPolicyModel(PolicyModel policyModel) {
/**
* Create policy Yaml from json defined here.
- *
+ *
* @return A string containing Yaml
*/
public String createPolicyPayloadYaml() {
public Map<String, String> createGuardPolicyPayloads() {
Map<String, String> result = new HashMap<>();
- JsonElement guardsList = this.getConfigurationsJson().get("guard_policies");
- if (guardsList != null) {
- for (JsonElement guardElem : guardsList.getAsJsonArray()) {
- result.put(guardElem.getAsJsonObject().get("policy-id").getAsString(),
+ if (this.getConfigurationsJson() != null) {
+ JsonElement guardsList = this.getConfigurationsJson().get("guard_policies");
+ if (guardsList != null) {
+ for (JsonElement guardElem : guardsList.getAsJsonArray()) {
+ result.put(guardElem.getAsJsonObject().get("policy-id").getAsString(),
new GsonBuilder().create().toJson(guardElem));
+ }
}
}
logger.info("Guard policy payload: " + result);
/**
* Regenerate the Operational Policy Json Representation.
- *
*/
public void updateJsonRepresentation() {
try {