Add conversion from plain Ident to IdentOptVersion

Added a "copy constructor" that copies an Ident to an Ident
with an optional version.  The reverse does not make sense,
so did not add that (e.g., version may be null or may just
be a prefix, while the version in Ident is major.minor.patch).

Change-Id: Ifd3935a998cd4c1cb5113a59c5f36a7d9baf79ff
Issue-ID: POLICY-1542
Signed-off-by: Jim Hahn <jrh3@att.com>
diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
index d5ddb05..adfd616 100644
--- a/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
+++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersion.java
@@ -51,6 +51,11 @@
         this.version = source.version;
     }
 
+    public ToscaPolicyIdentifierOptVersion(ToscaPolicyIdentifier source) {
+        this.name = source.getName();
+        this.version = source.getVersion();
+    }
+
     /**
      * Determines if the version is null/missing.
      *
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java
index 3f0a7b0..1d393c1 100644
--- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java
+++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaPolicyIdentifierOptVersionTest.java
@@ -39,7 +39,7 @@
     @Test
     public void testAllArgsConstructor_testIsNullVersion() {
         assertThatThrownBy(() -> new ToscaPolicyIdentifierOptVersion(null, VERSION))
-                .isInstanceOf(NullPointerException.class);
+                        .isInstanceOf(NullPointerException.class);
 
         // with null version
         ToscaPolicyIdentifierOptVersion orig = new ToscaPolicyIdentifierOptVersion(NAME, null);
@@ -55,7 +55,8 @@
 
     @Test
     public void testCopyConstructor() throws Exception {
-        assertThatThrownBy(() -> new ToscaPolicyIdentifierOptVersion(null)).isInstanceOf(NullPointerException.class);
+        assertThatThrownBy(() -> new ToscaPolicyIdentifierOptVersion((ToscaPolicyIdentifierOptVersion) null))
+                        .isInstanceOf(NullPointerException.class);
 
         ToscaPolicyIdentifierOptVersion orig = new ToscaPolicyIdentifierOptVersion();
 
@@ -68,6 +69,26 @@
     }
 
     @Test
+    public void testCopyToscaPolicyIdentifierConstructor() throws Exception {
+        assertThatThrownBy(() -> new ToscaPolicyIdentifierOptVersion((ToscaPolicyIdentifier) null))
+                        .isInstanceOf(NullPointerException.class);
+
+        ToscaPolicyIdentifier orig = new ToscaPolicyIdentifier();
+
+        // verify with null values
+        ToscaPolicyIdentifierOptVersion newIdent = new ToscaPolicyIdentifierOptVersion(orig);
+        assertEquals(null, newIdent.getName());
+        assertEquals(null, newIdent.getVersion());
+
+        // verify with all values
+        orig.setName(NAME);
+        orig.setVersion(VERSION);
+        newIdent = new ToscaPolicyIdentifierOptVersion(orig);
+        assertEquals(NAME, newIdent.getName());
+        assertEquals(VERSION, newIdent.getVersion());
+    }
+
+    @Test
     public void testCompareTo() throws Exception {
         super.testCompareTo();
     }