Fix sonars from removal of duplicate code 58/117958/3
authorJim Hahn <jrh3@att.com>
Wed, 17 Feb 2021 15:10:39 +0000 (10:10 -0500)
committerJim Hahn <jrh3@att.com>
Wed, 17 Feb 2021 15:48:40 +0000 (10:48 -0500)
The work to remove duplicate code from models introduced as many new
sonars as it eliminated. :-(  Addressed the following new issues:
- visibility of constructor
- use of more specific assertThat() calls

Also added two junit test file that were somehow previously left out.

Issue-ID: POLICY-2905
Change-Id: I7a0206bd157412d3c6d98bfe21797f106b37ac65
Signed-off-by: Jim Hahn <jrh3@att.com>
models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithStringProperties.java
models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithToscaProperties.java
models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithToscaPropertiesTest.java [new file with mode: 0644]
models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithStringPropertiesTest.java
models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithToscaPropertiesTest.java [new file with mode: 0644]

index 54bd540..afe4a84 100644 (file)
@@ -55,7 +55,7 @@ public abstract class JpaToscaWithStringProperties<T extends ToscaWithObjectProp
      * The Default Constructor creates a {@link JpaToscaWithStringProperties} object with
      * a null key.
      */
-    public JpaToscaWithStringProperties() {
+    protected JpaToscaWithStringProperties() {
         this(new PfConceptKey());
     }
 
@@ -65,7 +65,7 @@ public abstract class JpaToscaWithStringProperties<T extends ToscaWithObjectProp
      *
      * @param key the key
      */
-    public JpaToscaWithStringProperties(@NonNull final PfConceptKey key) {
+    protected JpaToscaWithStringProperties(@NonNull final PfConceptKey key) {
         super(key);
     }
 
@@ -74,7 +74,7 @@ public abstract class JpaToscaWithStringProperties<T extends ToscaWithObjectProp
      *
      * @param copyConcept the concept to copy from
      */
-    public JpaToscaWithStringProperties(@NonNull final JpaToscaWithStringProperties<T> copyConcept) {
+    protected JpaToscaWithStringProperties(@NonNull final JpaToscaWithStringProperties<T> copyConcept) {
         super(copyConcept);
         this.properties = (copyConcept.properties != null ? new LinkedHashMap<>(copyConcept.properties) : null);
     }
@@ -84,7 +84,7 @@ public abstract class JpaToscaWithStringProperties<T extends ToscaWithObjectProp
      *
      * @param authorativeConcept the authorative concept to copy from
      */
-    public JpaToscaWithStringProperties(final T authorativeConcept) {
+    protected JpaToscaWithStringProperties(final T authorativeConcept) {
         super(new PfConceptKey());
         this.fromAuthorative(authorativeConcept);
     }
index 873d900..33e4e86 100644 (file)
@@ -66,7 +66,7 @@ public abstract class JpaToscaWithToscaProperties<T extends ToscaWithToscaProper
      * The Default Constructor creates a {@link JpaToscaWithToscaProperties} object with a
      * null key.
      */
-    public JpaToscaWithToscaProperties() {
+    protected JpaToscaWithToscaProperties() {
         this(new PfConceptKey());
     }
 
@@ -76,7 +76,7 @@ public abstract class JpaToscaWithToscaProperties<T extends ToscaWithToscaProper
      *
      * @param key the key
      */
-    public JpaToscaWithToscaProperties(@NonNull final PfConceptKey key) {
+    protected JpaToscaWithToscaProperties(@NonNull final PfConceptKey key) {
         super(key);
     }
 
@@ -85,7 +85,7 @@ public abstract class JpaToscaWithToscaProperties<T extends ToscaWithToscaProper
      *
      * @param copyConcept the concept to copy from
      */
-    public JpaToscaWithToscaProperties(final JpaToscaWithToscaProperties<T> copyConcept) {
+    protected JpaToscaWithToscaProperties(final JpaToscaWithToscaProperties<T> copyConcept) {
         super(copyConcept);
         this.properties = copyConcept.properties == null ? null : new LinkedHashMap<>(copyConcept.properties);
     }
@@ -95,7 +95,7 @@ public abstract class JpaToscaWithToscaProperties<T extends ToscaWithToscaProper
      *
      * @param authorativeConcept the authorative concept to copy from
      */
-    public JpaToscaWithToscaProperties(final T authorativeConcept) {
+    protected JpaToscaWithToscaProperties(final T authorativeConcept) {
         this.fromAuthorative(authorativeConcept);
     }
 
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithToscaPropertiesTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithToscaPropertiesTest.java
new file mode 100644 (file)
index 0000000..213f93c
--- /dev/null
@@ -0,0 +1,51 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.tosca.authorative.concepts;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import java.util.Map;
+import org.junit.Test;
+
+public class ToscaWithToscaPropertiesTest {
+
+    @Test
+    public void test() {
+        ToscaProperty prop1 = new ToscaProperty();
+        prop1.setDescription("description A");
+
+        ToscaProperty prop2 = new ToscaProperty();
+        prop2.setDescription("description B");
+
+        ToscaWithToscaProperties tosca = new ToscaWithToscaProperties();
+        assertEquals(tosca, new ToscaWithToscaProperties(tosca));
+
+        tosca.setProperties(Map.of("abc", prop1, "def", prop2));
+        assertEquals(tosca, new ToscaWithToscaProperties(tosca));
+
+        assertNotEquals(tosca, new ToscaWithToscaProperties());
+
+        assertThatThrownBy(() -> new ToscaWithToscaProperties(null)).hasMessageContaining("copyObject")
+                        .hasMessageContaining("is null");
+    }
+}
index 23e0e6a..7cd6fac 100644 (file)
@@ -104,17 +104,15 @@ public class JpaToscaWithStringPropertiesTest {
         jpa.setDescription(SOME_DESCRIPTION);
         jpa.setProperties(Map.of(KEY1, STRING1, KEY2, STRING2));
 
-        assertThat(jpa.compareTo(null)).isNegative();
-        assertThat(jpa.compareTo(jpa)).isZero();
-        assertThat(jpa.compareTo(new PfConceptKey())).isNotZero();
+        assertThat(jpa).isNotEqualByComparingTo(null).isEqualByComparingTo(jpa).isNotEqualByComparingTo(new MyJpa2());
 
         MyJpa jpa2 = new MyJpa();
         jpa2.setDescription(SOME_DESCRIPTION);
         jpa2.setProperties(Map.of(KEY1, STRING1, KEY2, STRING2));
-        assertThat(jpa.compareTo(jpa2)).isZero();
+        assertThat(jpa).isEqualByComparingTo(jpa2);
 
         jpa2.setProperties(Map.of(KEY1, STRING1));
-        assertThat(jpa.compareTo(jpa2)).isNotZero();
+        assertThat(jpa).isNotEqualByComparingTo(jpa2);
     }
 
     @Test
@@ -211,4 +209,8 @@ public class JpaToscaWithStringPropertiesTest {
             return propValue.toString();
         }
     }
+
+    private static class MyJpa2 extends MyJpa {
+        private static final long serialVersionUID = 1L;
+    }
 }
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithToscaPropertiesTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithToscaPropertiesTest.java
new file mode 100644 (file)
index 0000000..e259edf
--- /dev/null
@@ -0,0 +1,281 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.models.tosca.simple.concepts;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.models.base.PfConceptKey;
+import org.onap.policy.models.base.PfKey;
+import org.onap.policy.models.base.PfReferenceKey;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaWithToscaProperties;
+
+public class JpaToscaWithToscaPropertiesTest {
+    private static final String SOME_DESCRIPTION = "some description";
+    private static final String KEY1 = "abc";
+    private static final String KEY2 = "def";
+    private static final PfConceptKey CONCEPT_KEY1 = new PfConceptKey("hello", "1.2.3");
+    private static final PfConceptKey CONCEPT_KEY2 = new PfConceptKey("world", "3.2.1");
+    private static final PfReferenceKey REF_KEY1 = new PfReferenceKey(CONCEPT_KEY1);
+    private static final PfReferenceKey REF_KEY2 = new PfReferenceKey(CONCEPT_KEY2);
+    private static final JpaToscaProperty JPA_PROP1 = new JpaToscaProperty(REF_KEY1);
+    private static final JpaToscaProperty JPA_PROP2 = new JpaToscaProperty(REF_KEY2);
+    private static ToscaProperty PROP1;
+    private static ToscaProperty PROP2;
+    private static final String DESCRIPT1 = "description A";
+    private static final String DESCRIPT2 = "description B";
+
+    private MyJpa jpa;
+
+    /**
+     * Initializes the properties.
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JPA_PROP1.setDescription(DESCRIPT1);
+        JPA_PROP2.setDescription(DESCRIPT2);
+
+        PROP1 = JPA_PROP1.toAuthorative();
+        PROP2 = JPA_PROP2.toAuthorative();
+    }
+
+    @Before
+    public void setUp() {
+        jpa = new MyJpa();
+    }
+
+    @Test
+    public void testGetKeys() {
+        PfConceptKey key = new PfConceptKey("bye", "9.8.7");
+
+        jpa = new MyJpa(key);
+        jpa.setDescription(SOME_DESCRIPTION);
+        jpa.setProperties(Map.of(KEY1, JPA_PROP1, KEY2, JPA_PROP2));
+
+        // properties should be included
+
+        List<PfKey> keys = jpa.getKeys();
+        Collections.sort(keys);
+
+        assertThat(keys).isEqualTo(
+                        List.of(PfConceptKey.getNullKey(), PfConceptKey.getNullKey(), key, REF_KEY1, REF_KEY2));
+    }
+
+    @Test
+    public void testClean() {
+        jpa.clean();
+
+        jpa.setDescription("  some description  ");
+
+        JpaToscaProperty prop1 = new JpaToscaProperty(JPA_PROP1);
+        prop1.setDescription(DESCRIPT1 + " ");
+
+        JpaToscaProperty prop2 = new JpaToscaProperty(JPA_PROP2);
+        prop2.setDescription(" " + DESCRIPT2);
+
+        jpa.setProperties(Map.of(KEY1, prop1, KEY2, prop2));
+
+        jpa.clean();
+        assertEquals(SOME_DESCRIPTION, jpa.getDescription());
+        assertThat(jpa.getProperties()).isEqualTo(Map.of(KEY1, JPA_PROP1, KEY2, JPA_PROP2));
+    }
+
+    @Test
+    public void testToAuthorative() {
+        jpa.setDescription(SOME_DESCRIPTION);
+        jpa.setProperties(Map.of(KEY1, JPA_PROP1, KEY2, JPA_PROP2));
+
+        MyTosca tosca = jpa.toAuthorative();
+        assertEquals(SOME_DESCRIPTION, tosca.getDescription());
+        assertThat(tosca.getProperties()).isEqualTo(Map.of(KEY1, PROP1, KEY2, PROP2));
+    }
+
+    @Test
+    public void testFromAuthorative() {
+        MyTosca tosca = new MyTosca();
+        tosca.setDescription(SOME_DESCRIPTION);
+
+        jpa.fromAuthorative(tosca);
+        assertEquals(SOME_DESCRIPTION, jpa.getDescription());
+        assertThat(jpa.getProperties()).isNull();
+
+        tosca.setProperties(Map.of(KEY1, PROP1, KEY2, PROP2));
+
+        JpaToscaProperty jpa1 = new JpaToscaProperty(PROP1);
+        jpa1.setKey(new PfReferenceKey(jpa.getKey(), KEY1));
+
+        JpaToscaProperty jpa2 = new JpaToscaProperty(PROP2);
+        jpa2.setKey(new PfReferenceKey(jpa.getKey(), KEY2));
+
+        jpa = new MyJpa();
+        jpa.fromAuthorative(tosca);
+        assertEquals(SOME_DESCRIPTION, jpa.getDescription());
+        assertThat(jpa.getProperties()).isEqualTo(Map.of(KEY1, jpa1, KEY2, jpa2));
+    }
+
+    @Test
+    public void testCompareTo() {
+        jpa.setDescription(SOME_DESCRIPTION);
+        jpa.setProperties(Map.of(KEY1, JPA_PROP1, KEY2, JPA_PROP2));
+
+        assertThat(jpa).isNotEqualByComparingTo(null).isEqualByComparingTo(jpa).isNotEqualByComparingTo(new MyJpa2());
+
+        MyJpa jpa2 = new MyJpa();
+        jpa2.setDescription(SOME_DESCRIPTION);
+        jpa2.setProperties(Map.of(KEY1, JPA_PROP1, KEY2, JPA_PROP2));
+        assertThat(jpa).isEqualByComparingTo(jpa2);
+
+        jpa2.setProperties(Map.of(KEY1, JPA_PROP1));
+        assertThat(jpa).isNotEqualByComparingTo(jpa2);
+    }
+
+    @Test
+    public void testJpaToscaWithToscaProperties() {
+        assertThat(jpa.getProperties()).isNull();
+        assertThat(jpa.getKey().isNullKey()).isTrue();
+    }
+
+    @Test
+    public void testJpaToscaWithToscaPropertiesPfConceptKey() {
+        jpa = new MyJpa(CONCEPT_KEY1);
+        assertEquals(CONCEPT_KEY1, jpa.getKey());
+    }
+
+    @Test
+    public void testJpaToscaWithToscaPropertiesJpaToscaWithToscaPropertiesOfT() {
+        jpa.setDescription(SOME_DESCRIPTION);
+        assertEquals(jpa, new MyJpa(jpa));
+
+        jpa.setProperties(Map.of(KEY1, JPA_PROP1, KEY2, JPA_PROP2));
+        assertEquals(jpa, new MyJpa(jpa));
+    }
+
+    @Test
+    public void testJpaToscaWithToscaPropertiesT() {
+        MyTosca tosca = new MyTosca();
+        tosca.setName("world");
+        tosca.setVersion("3.2.1");
+        tosca.setDescription(SOME_DESCRIPTION);
+        tosca.setProperties(Map.of(KEY1, PROP1, KEY2, PROP2));
+
+        jpa = new MyJpa(tosca);
+        assertEquals(SOME_DESCRIPTION, jpa.getDescription());
+
+        JpaToscaProperty jpa1 = new JpaToscaProperty(PROP1);
+        jpa1.setKey(new PfReferenceKey(jpa.getKey(), KEY1));
+
+        JpaToscaProperty jpa2 = new JpaToscaProperty(PROP2);
+        jpa2.setKey(new PfReferenceKey(jpa.getKey(), KEY2));
+
+        assertThat(jpa.getProperties()).isEqualTo(Map.of(KEY1, jpa1, KEY2, jpa2));
+
+        assertEquals(new PfConceptKey("world", "3.2.1"), jpa.getKey());
+    }
+
+    @Test
+    public void testValidateWithKey() {
+        // null key - should fail
+        jpa.setText("some text");
+        assertThat(jpa.validateWithKey("fieldA").isValid()).isFalse();
+
+        // valid
+        jpa.setKey(new PfConceptKey("xyz", "2.3.4"));
+        assertThat(jpa.validateWithKey("fieldB").isValid()).isTrue();
+
+        // null text - bean validator should fail
+        jpa.setText(null);
+        assertThat(jpa.validateWithKey("fieldA").isValid()).isFalse();
+    }
+
+    @Test
+    public void testGetReferencedDataTypes() {
+        assertThat(jpa.getReferencedDataTypes()).isEmpty();
+
+        // one with a schema
+        PfConceptKey schemaKey = new PfConceptKey("schemaZ", "9.8.7");
+        JpaToscaSchemaDefinition schema = new JpaToscaSchemaDefinition();
+        schema.setType(schemaKey);
+        JpaToscaProperty prop1 = new JpaToscaProperty(JPA_PROP1);
+        prop1.setType(CONCEPT_KEY1);
+        prop1.setEntrySchema(schema);
+
+        // one property without a schema
+        JpaToscaProperty prop2 = new JpaToscaProperty(JPA_PROP2);
+        prop2.setType(CONCEPT_KEY2);
+        prop2.setEntrySchema(null);
+
+        jpa.setProperties(Map.of(KEY1, prop1, KEY2, prop2));
+
+        List<PfConceptKey> keys = new ArrayList<>(jpa.getReferencedDataTypes());
+        Collections.sort(keys);
+
+        assertThat(keys).isEqualTo(List.of(CONCEPT_KEY1, schemaKey, CONCEPT_KEY2));
+    }
+
+
+    private static class MyTosca extends ToscaWithToscaProperties {
+
+    }
+
+    @NoArgsConstructor
+    protected static class MyJpa extends JpaToscaWithToscaProperties<MyTosca> {
+        private static final long serialVersionUID = 1L;
+
+        @NotNull
+        @Getter
+        @Setter
+        private String text;
+
+        public MyJpa(MyJpa jpa) {
+            super(jpa);
+        }
+
+        public MyJpa(PfConceptKey key) {
+            super(key);
+        }
+
+        public MyJpa(MyTosca tosca) {
+            super(tosca);
+        }
+
+        @Override
+        public MyTosca toAuthorative() {
+            this.setToscaEntity(new MyTosca());
+            return super.toAuthorative();
+        }
+    }
+
+    private static class MyJpa2 extends MyJpa {
+        private static final long serialVersionUID = 1L;
+    }
+}