Get policy type from policy-api
[policy/xacml-pdp.git] / main / src / main / java / org / onap / policy / pdpx / main / parameters / XacmlPdpParameterGroup.java
index 2c97264..5731a7b 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nordix Foundation.
  * ================================================================================
  * 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.parameters;
 
+import lombok.Getter;
+import lombok.Setter;
+import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
 import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
@@ -29,47 +34,34 @@ import org.onap.policy.common.utils.validation.ParameterValidationUtils;
  * Class to hold all parameters needed for xacml pdp component.
  *
  */
+@Getter
 public class XacmlPdpParameterGroup implements ParameterGroup {
+    private static final String PARAM_REST_SERVER = "restServerParameters";
+    private static final String PARAM_POLICY_API = "policyApiParameters";
+    private static final String PARAM_TOPIC_PARAMETER_GROUP = "topicParameterGroup";
+    private static final String PARAM_APPLICATION_PATH = "applicationPath";
+
+    @Setter
     private String name;
+
     private RestServerParameters restServerParameters;
+    private RestServerParameters policyApiParameters;
+    private TopicParameterGroup topicParameterGroup;
+    private String applicationPath;
 
     /**
      * Create the xacml pdp parameter group.
      *
      * @param name the parameter group name
      */
-    public XacmlPdpParameterGroup(final String name, final RestServerParameters restServerParameters) {
+    public XacmlPdpParameterGroup(final String name, final RestServerParameters restServerParameters,
+                    final RestServerParameters policyApiParameters, final TopicParameterGroup topicParameterGroup,
+                    final String applicationPath) {
         this.name = name;
         this.restServerParameters = restServerParameters;
-    }
-
-    /**
-     * Return the name of this parameter group instance.
-     *
-     * @return name the parameter group name
-     */
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Set the name of this parameter group instance.
-     *
-     * @param name the parameter group name
-     */
-    @Override
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Return the restServerParameters of this parameter group instance.
-     *
-     * @return the restServerParameters
-     */
-    public RestServerParameters getRestServerParameters() {
-        return restServerParameters;
+        this.policyApiParameters = policyApiParameters;
+        this.topicParameterGroup = topicParameterGroup;
+        this.applicationPath = applicationPath;
     }
 
     /**
@@ -84,10 +76,31 @@ public class XacmlPdpParameterGroup implements ParameterGroup {
             validationResult.setResult("name", ValidationStatus.INVALID, "must be a non-blank string");
         }
         if (restServerParameters == null) {
-            validationResult.setResult("restServerParameters", ValidationStatus.INVALID,
+            validationResult.setResult(PARAM_REST_SERVER, ValidationStatus.INVALID,
                     "must have restServerParameters to configure xacml pdp rest server");
         } else {
-            validationResult.setResult("restServerParameters", restServerParameters.validate());
+            validationResult.setResult(PARAM_REST_SERVER, restServerParameters.validate());
+        }
+        if (policyApiParameters == null) {
+            validationResult.setResult(PARAM_POLICY_API, ValidationStatus.INVALID,
+                    "must have policyApiParameters to configure xacml pdp rest server");
+        } else {
+            // set the name - this only really matters for validation messages
+            policyApiParameters.setName(PARAM_POLICY_API);
+            validationResult.setResult(PARAM_POLICY_API, policyApiParameters.validate());
+        }
+        if (topicParameterGroup == null) {
+            validationResult.setResult(PARAM_TOPIC_PARAMETER_GROUP, ValidationStatus.INVALID,
+                    "must have topicParameterGroup to configure xacml pdp topic sink and source");
+        } else {
+            validationResult.setResult(PARAM_TOPIC_PARAMETER_GROUP, topicParameterGroup.validate());
+        }
+        //
+        // Validate the application path directory
+        //
+        if (applicationPath == null || applicationPath.isEmpty()) {
+            validationResult.setResult(PARAM_APPLICATION_PATH, ValidationStatus.INVALID,
+                    "must have application path for applications to store policies and data.");
         }
         return validationResult;
     }