Change Yaml to Json payload
[clamp.git] / src / main / java / org / onap / clamp / policy / operational / OperationalPolicy.java
index b6b591d..b2f6109 100644 (file)
@@ -31,8 +31,10 @@ import com.google.gson.JsonObject;
 import com.google.gson.annotations.Expose;
 
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -151,8 +153,7 @@ public class OperationalPolicy implements Serializable, Policy {
         return true;
     }
 
-    @Override
-    public String createPolicyPayload() {
+    public String createPolicyPayloadYaml() {
         JsonObject policyPayloadResult = new JsonObject();
 
         policyPayloadResult.addProperty("tosca_definitions_version", "tosca_simple_yaml_1_0_0");
@@ -182,15 +183,32 @@ public class OperationalPolicy implements Serializable, Policy {
         return (new Yaml()).dump(jsonMap);
     }
 
-    public List<String> createGuardPolicyPayloads() {
-        List<String> result = new ArrayList<>();
+    @Override
+    public String createPolicyPayload() throws UnsupportedEncodingException {
+
+        // Now the Yaml payload must be injected in a json ...
+        JsonObject payload = new JsonObject();
+        payload.addProperty("policy-id", this.getName());
+        payload.addProperty("content", URLEncoder.encode(createPolicyPayloadYaml(), StandardCharsets.UTF_8.toString()));
+        return new GsonBuilder().setPrettyPrinting().create().toJson(payload);
+    }
+
+    /**
+     * Return a map containing all Guard policies indexed by Guard policy Name.
+     *
+     * @return The Guards map
+     */
+    public Map<String, String> createGuardPolicyPayloads() {
+        Map<String, String> result = new HashMap<>();
 
-        JsonObject guard = new JsonObject();
         JsonElement guardsList = this.getConfigurationsJson().get("guard_policies");
-        for (Entry<String, JsonElement> guardElem : guardsList.getAsJsonObject().entrySet()) {
-            guard.addProperty("policy-id", guardElem.getKey());
-            guard.add("contents", guardElem.getValue());
-            result.add(new GsonBuilder().create().toJson(guard));
+        if (guardsList != null) {
+            for (Entry<String, JsonElement> guardElem : guardsList.getAsJsonObject().entrySet()) {
+                JsonObject guard = new JsonObject();
+                guard.addProperty("policy-id", guardElem.getKey());
+                guard.add("contents", guardElem.getValue());
+                result.put(guardElem.getKey(), new GsonBuilder().create().toJson(guard));
+            }
         }
         return result;
     }