Restructure for authorative models
[policy/models.git] / models-tosca / src / main / java / org / onap / policy / models / tosca / authorative / concepts / ToscaPolicy.java
 
 package org.onap.policy.models.tosca.authorative.concepts;
 
+import java.util.LinkedHashMap;
 import java.util.Map;
 import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
 
 /**
  * Class to represent TOSCA policy matching input/output from/to client.
@@ -31,7 +34,8 @@ import lombok.Data;
  * @author Chenfei Gao (cgao@research.att.com)
  */
 @Data
-public class PlainToscaPolicy {
+@NoArgsConstructor
+public class ToscaPolicy {
 
     private String type;
 
@@ -42,4 +46,17 @@ public class PlainToscaPolicy {
     private Map<String, String> metadata;
 
     private Map<String, Object> properties;
+
+    /**
+     * Copy constructor.
+     *
+     * @param copyObject the obejct to copy from.
+     */
+    public ToscaPolicy(@NonNull ToscaPolicy copyObject) {
+        this.type = copyObject.type;
+        this.version = copyObject.version;
+        this.description = copyObject.description;
+        this.metadata = (metadata != null ? new LinkedHashMap<>(copyObject.metadata) : null);
+        this.properties = (properties != null ? new LinkedHashMap<>(copyObject.properties) : null);
+    }
 }