2  * ========================LICENSE_START=================================
 
   4  * ======================================================================
 
   5  * Copyright (C) 2019-2020 Nordix Foundation. All rights reserved.
 
   6  * ======================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ========================LICENSE_END===================================
 
  21 package org.onap.ccsdk.oran.a1policymanagementservice.controllers.v2;
 
  23 import com.fasterxml.jackson.annotation.JsonProperty;
 
  24 import com.google.gson.annotations.SerializedName;
 
  26 import io.swagger.v3.oas.annotations.media.Schema;
 
  27 import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
 
  29 @Schema(name = "policy_info_v2", description = "Information for one A1-P Policy")
 
  30 public class PolicyInfo {
 
  32     @Schema(name = "policy_id", description = "identity of the policy", requiredMode = RequiredMode.REQUIRED)
 
  33     @JsonProperty(value = "policy_id", required = true)
 
  34     @SerializedName("policy_id")
 
  35     public String policyId;
 
  37     @Schema(name = "policytype_id", description = "identity of the policy type", requiredMode = RequiredMode.REQUIRED)
 
  38     @JsonProperty(value = "policytype_id", required = true)
 
  39     @SerializedName("policytype_id")
 
  40     public String policyTypeId;
 
  42     @Schema(name = "ric_id", description = "identity of the target Near-RT RIC", requiredMode = RequiredMode.REQUIRED)
 
  43     @JsonProperty(value = "ric_id", required = true)
 
  44     @SerializedName("ric_id")
 
  47     @Schema(name = "policy_data", description = "the configuration of the policy", requiredMode = RequiredMode.REQUIRED)
 
  48     @JsonProperty(value = "policy_data", required = true)
 
  49     @SerializedName("policy_data")
 
  50     public Object policyData;
 
  52     private static final String SERVICE_ID_DESCRIPTION = "the identity of the service owning the policy."
 
  53             + " This can be used to group the policies (it is possible to get all policies associated to a service)."
 
  54             + " Note that the service does not need to be registered.";
 
  56     @Schema(name = "service_id", description = SERVICE_ID_DESCRIPTION, requiredMode = RequiredMode.NOT_REQUIRED, defaultValue = "")
 
  57     @JsonProperty(value = "service_id", required = false)
 
  58     @SerializedName("service_id")
 
  59     public String serviceId = "";
 
  61     @Schema(name = "transient",
 
  62             description = "if true, the policy is deleted at RIC restart. If false, its value is maintained by this service until explicitly deleted. Default false.",
 
  63             requiredMode = RequiredMode.NOT_REQUIRED, defaultValue = "false", example = "false")
 
  64     @JsonProperty(value = "transient", required = false, defaultValue = "false")
 
  65     @SerializedName("transient")
 
  66     public boolean isTransient = false;
 
  68     @Schema(name = "status_notification_uri", description = "Callback URI for policy status updates", requiredMode = RequiredMode.NOT_REQUIRED,
 
  70     @JsonProperty(value = "status_notification_uri", required = false)
 
  71     @SerializedName("status_notification_uri")
 
  72     public String statusNotificationUri = "";
 
  76     public boolean validate() {
 
  77         return policyId != null && policyTypeId != null && ricId != null && policyData != null && serviceId != null;