From 1f8f50733aaaa103cdb7e34099179cba436f754c Mon Sep 17 00:00:00 2001 From: "Benjamin, Max (mb388a)" Date: Wed, 28 Mar 2018 10:12:15 -0400 Subject: improved coverage for catalog db beans Change-Id: Ibf1fd21dc81f0a3e16447b05dfce1761efa69237 Issue-ID: SO-541 Signed-off-by: Benjamin, Max (mb388a) --- .../openpojo/rules/EqualsAndHashCodeTester.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'common') diff --git a/common/src/main/java/org/openecomp/mso/openpojo/rules/EqualsAndHashCodeTester.java b/common/src/main/java/org/openecomp/mso/openpojo/rules/EqualsAndHashCodeTester.java index f4192e6cc8..9540409e16 100644 --- a/common/src/main/java/org/openecomp/mso/openpojo/rules/EqualsAndHashCodeTester.java +++ b/common/src/main/java/org/openecomp/mso/openpojo/rules/EqualsAndHashCodeTester.java @@ -23,6 +23,7 @@ package org.openecomp.mso.openpojo.rules; import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.anything; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -44,6 +45,7 @@ public class EqualsAndHashCodeTester implements Tester { private final Matcher m; + private boolean onlyDeclaredMethods = false; public EqualsAndHashCodeTester() { m = anything(); } @@ -51,12 +53,33 @@ public class EqualsAndHashCodeTester implements Tester { public EqualsAndHashCodeTester(Matcher m) { this.m = m; } + + public EqualsAndHashCodeTester onlyDeclaredMethods() { + this.onlyDeclaredMethods = true; + return this; + } @Override public void run(PojoClass pojoClass) { Class clazz = pojoClass.getClazz(); if (anyOf(m).matches(clazz)) { final Object classInstanceOne = ValidationHelper.getBasicInstance(pojoClass); final Object classInstanceTwo = ValidationHelper.getBasicInstance(pojoClass); + if (onlyDeclaredMethods) { + Method[] methods = classInstanceOne.getClass().getDeclaredMethods(); + boolean hasEquals = false; + boolean hasHashcode = false; + for (Method method : methods) { + if (method.getName().equals("equals")) { + hasEquals = true; + } else if (method.getName().equals("hashCode")) { + hasHashcode = true; + } + } + + if (!(hasEquals && hasHashcode)) { + return; + } + } Set identityFields = hasIdOrBusinessKey(pojoClass); List otherFields = new ArrayList<>(pojoClass.getPojoFields()); otherFields.removeAll(identityFields); -- cgit 1.2.3-korg