aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIttay Stern <ittay.stern@att.com>2019-03-06 14:25:02 +0200
committerIttay Stern <ittay.stern@att.com>2019-03-06 17:54:56 +0200
commit54aad7deb7a02ecca4bc7ed4d7913ccd59eb3bf9 (patch)
tree84250549f1d7e91234a41960866098d5d147ebbf
parent7c64fbbaff5985acb3a6aea977c5c15b4f2f59e1 (diff)
Fix cyclic CategoryParameterOption::hashCode
Issue-ID: VID-430 Change-Id: Ib49b71726fe508f1ec9bfe8c60836af1c5ca786b Signed-off-by: Ittay Stern <ittay.stern@att.com>
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/model/CategoryParameterOption.java40
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterOptionTest.java186
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterTest.java186
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java48
4 files changed, 108 insertions, 352 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameterOption.java b/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameterOption.java
index 237747933..70f7b5aa2 100644
--- a/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameterOption.java
+++ b/vid-app-common/src/main/java/org/onap/vid/model/CategoryParameterOption.java
@@ -20,12 +20,19 @@
package org.onap.vid.model;
-import org.onap.portalsdk.core.domain.support.DomainVo;
-
-import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import org.onap.portalsdk.core.domain.support.DomainVo;
@Entity
@Table(name = "vid_category_parameter_option")
@@ -124,24 +131,39 @@ public class CategoryParameterOption extends DomainVo {
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
CategoryParameterOption that = (CategoryParameterOption) o;
- if (getAppId() != null ? !getAppId().equals(that.getAppId()) : that.getAppId() != null) return false;
- if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
- return getCategoryParameter() != null ? getCategoryParameter().equals(that.getCategoryParameter()) : that.getCategoryParameter() == null;
+ if (getAppId() != null ? !getAppId().equals(that.getAppId()) : that.getAppId() != null) {
+ return false;
+ }
+ if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) {
+ return false;
+ }
+ return getCategoryParameter() != null ? getCategoryParameter().equals(that.getCategoryParameter())
+ : that.getCategoryParameter() == null;
}
@Override
public int hashCode() {
int result = getAppId() != null ? getAppId().hashCode() : 0;
result = 31 * result + (getName() != null ? getName().hashCode() : 0);
- result = 31 * result + (getCategoryParameter() != null ? getCategoryParameter().hashCode() : 0);
+ result = 31 * result + hashCodeOfParentCategoryParameter();
return result;
}
+ private int hashCodeOfParentCategoryParameter() {
+ // Don't use getCategoryParameter's hashCode, as it might loop back to self's hasCode
+ return (getCategoryParameter() == null || getCategoryParameter().getId() == null)
+ ? 0 : getCategoryParameter().getId().hashCode();
+ }
+
@Override
public String toString() {
return "CategoryParameterOption{" +
diff --git a/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterOptionTest.java b/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterOptionTest.java
index 5fe392751..a3a14a2dd 100644
--- a/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterOptionTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterOptionTest.java
@@ -20,190 +20,34 @@
package org.onap.vid.model;
-import java.io.Serializable;
-import java.util.Date;
-import java.util.Set;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidBeanEqualsExcluding;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidBeanHashCodeExcluding;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters;
+import static org.hamcrest.MatcherAssert.assertThat;
-import org.junit.Assert;
+import org.apache.commons.lang3.ArrayUtils;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.support.DomainVo;
+import org.onap.vid.testUtils.TestUtils;
public class CategoryParameterOptionTest {
- private CategoryParameterOption createTestSubject() {
- return new CategoryParameterOption();
- }
-
- @Test
- public void testGetId() throws Exception {
- CategoryParameterOption testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getId();
- }
-
- @Test
- public void testSetId() throws Exception {
- CategoryParameterOption testSubject;
- Long id = null;
-
- // default test
- testSubject = createTestSubject();
- testSubject.setId(id);
- }
-
- @Test
- public void testGetAppId() throws Exception {
- CategoryParameterOption testSubject;
- String result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getAppId();
- }
-
- @Test
- public void testSetAppId() throws Exception {
- CategoryParameterOption testSubject;
- String appId = "";
-
- // default test
- testSubject = createTestSubject();
- testSubject.setAppId(appId);
- }
-
- @Test
- public void testGetName() throws Exception {
- CategoryParameterOption testSubject;
- String result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getName();
- }
-
- @Test
- public void testSetName() throws Exception {
- CategoryParameterOption testSubject;
- String name = "";
-
- // default test
- testSubject = createTestSubject();
- testSubject.setName(name);
- }
-
- @Test
- public void testGetCategoryParameter() throws Exception {
- CategoryParameterOption testSubject;
- CategoryParameter result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getCategoryParameter();
- }
-
- @Test
- public void testSetCategoryParameter() throws Exception {
- CategoryParameterOption testSubject;
- CategoryParameter categoryParameter = null;
-
- // default test
- testSubject = createTestSubject();
- testSubject.setCategoryParameter(categoryParameter);
- }
-
- @Test
- public void testGetCreated() throws Exception {
- CategoryParameterOption testSubject;
- Date result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getCreated();
- }
-
- @Test
- public void testGetModified() throws Exception {
- CategoryParameterOption testSubject;
- Date result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getModified();
- }
-
- @Test
- public void testGetCreatedId() throws Exception {
- CategoryParameterOption testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getCreatedId();
- }
+ final private String[] excludedProperties = TestUtils.allPropertiesOf(DomainVo.class);
@Test
- public void testGetModifiedId() throws Exception {
- CategoryParameterOption testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getModifiedId();
- }
-
- @Test
- public void testGetAuditUserId() throws Exception {
- CategoryParameterOption testSubject;
- Serializable result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getAuditUserId();
+ public void shouldHaveValidGettersAndSetters() {
+ assertThat(CategoryParameterOption.class, hasValidGettersAndSetters());
}
@Test
- public void testGetRowNum() throws Exception {
- CategoryParameterOption testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getRowNum();
+ public void shouldHaveValidBeanHashCode() {
+ assertThat(CategoryParameterOption.class,
+ hasValidBeanHashCodeExcluding(ArrayUtils.addAll(new String[]{"categoryParameter"}, excludedProperties)));
}
@Test
- public void testGetAuditTrail() throws Exception {
- CategoryParameterOption testSubject;
- Set result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getAuditTrail();
- }
-
- @Test
- public void testEquals() throws Exception {
- CategoryParameterOption testSubject;
- Object o = null;
- boolean result;
-
- // test 1
- testSubject = createTestSubject();
- o = null;
- result = testSubject.equals(o);
- Assert.assertEquals(false, result);
- }
-
- @Test
- public void testHashCode() throws Exception {
- CategoryParameterOption testSubject;
- int result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.hashCode();
+ public void shouldHaveValidBeanEquals() {
+ assertThat(CategoryParameterOption.class, hasValidBeanEqualsExcluding(excludedProperties));
}
}
diff --git a/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterTest.java b/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterTest.java
index dc18c3065..c515a34d4 100644
--- a/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/model/CategoryParameterTest.java
@@ -20,186 +20,64 @@
package org.onap.vid.model;
-import java.io.Serializable;
-import java.util.Date;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidBeanEqualsExcluding;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidBeanHashCodeExcluding;
+import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSettersExcluding;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.onap.vid.testUtils.TestUtils.allPropertiesOf;
+
+import com.google.common.collect.ImmutableSet;
import java.util.Set;
-
+import org.apache.commons.lang3.ArrayUtils;
import org.junit.Test;
+import org.onap.portalsdk.core.domain.support.DomainVo;
public class CategoryParameterTest {
- private CategoryParameter createTestSubject() {
- return new CategoryParameter();
- }
-
- @Test
- public void testGetFamily() throws Exception {
- CategoryParameter testSubject;
- String result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getFamily();
- }
-
- @Test
- public void testSetFamily() throws Exception {
- CategoryParameter testSubject;
- String family = "";
-
- // default test
- testSubject = createTestSubject();
- testSubject.setFamily(family);
- }
-
- @Test
- public void testGetId() throws Exception {
- CategoryParameter testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getId();
- }
-
- @Test
- public void testGetCreated() throws Exception {
- CategoryParameter testSubject;
- Date result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getCreated();
- }
-
- @Test
- public void testGetModified() throws Exception {
- CategoryParameter testSubject;
- Date result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getModified();
- }
-
- @Test
- public void testGetCreatedId() throws Exception {
- CategoryParameter testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getCreatedId();
- }
-
- @Test
- public void testGetModifiedId() throws Exception {
- CategoryParameter testSubject;
- Long result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getModifiedId();
- }
-
- @Test
- public void testGetName() throws Exception {
- CategoryParameter testSubject;
- String result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getName();
- }
- @Test
- public void testSetName() throws Exception {
- CategoryParameter testSubject;
- String name = "";
+ final private String[] excludedProperties = allPropertiesOf(DomainVo.class);
- // default test
- testSubject = createTestSubject();
- testSubject.setName(name);
+ private ImmutableSet<CategoryParameterOption> optionsWithRefTo(CategoryParameter categoryParameter) {
+ return ImmutableSet.of(
+ new CategoryParameterOption("appId1", "name1", categoryParameter),
+ new CategoryParameterOption("appId2", "name2", categoryParameter)
+ );
}
@Test
- public void testGetAuditUserId() throws Exception {
- CategoryParameter testSubject;
- Serializable result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getAuditUserId();
+ public void shouldHaveValidGettersAndSetters() {
+ assertThat(CategoryParameter.class, hasValidGettersAndSettersExcluding("options"));
}
@Test
- public void testGetRowNum() throws Exception {
- CategoryParameter testSubject;
- Long result;
+ public void testSetAndGetOptions() {
+ CategoryParameter testSubject = new CategoryParameter();
- // default test
- testSubject = createTestSubject();
- result = testSubject.getRowNum();
- }
-
- @Test
- public void testGetAuditTrail() throws Exception {
- CategoryParameter testSubject;
- Set result;
+ Set<CategoryParameterOption> options = optionsWithRefTo(testSubject);
- // default test
- testSubject = createTestSubject();
- result = testSubject.getAuditTrail();
+ testSubject.setOptions(options);
+ assertThat(testSubject.getOptions(), containsInAnyOrder(optionsWithRefTo(testSubject).toArray()));
}
@Test
- public void testGetOptions() throws Exception {
- CategoryParameter testSubject;
- Set<CategoryParameterOption> result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.getOptions();
+ public void shouldHaveValidBeanHashCodeWithCycleReference() {
+ assertThat(CategoryParameter.class,
+ hasValidBeanHashCodeExcluding(ArrayUtils.addAll(new String[]{"options"}, excludedProperties)));
}
@Test
- public void testSetOptions() throws Exception {
- CategoryParameter testSubject;
- Set<CategoryParameterOption> options = null;
-
- // default test
- testSubject = createTestSubject();
+ public void hashCodeShouldNotExplodeWhenCycleReference() {
+ CategoryParameter testSubject = new CategoryParameter();
+ Set<CategoryParameterOption> options = optionsWithRefTo(testSubject);
testSubject.setOptions(options);
- }
- @Test
- public void testAddOption() throws Exception {
- CategoryParameter testSubject;
- CategoryParameterOption option = null;
- boolean result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.addOption(option);
+ testSubject.hashCode(); // don't stackOverflow
}
@Test
- public void testIsIdSupported() throws Exception {
- CategoryParameter testSubject;
- boolean result;
-
- // default test
- testSubject = createTestSubject();
- result = testSubject.isIdSupported();
+ public void shouldHaveValidBeanEquals() {
+ assertThat(CategoryParameter.class, hasValidBeanEqualsExcluding(excludedProperties));
}
- @Test
- public void testSetIdSupported() throws Exception {
- CategoryParameter testSubject;
- boolean idSupported = false;
-
- // default test
- testSubject = createTestSubject();
- testSubject.setIdSupported(idSupported);
- }
}
diff --git a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java
index e2effd5ca..3a7d4690d 100644
--- a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java
+++ b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java
@@ -20,9 +20,32 @@
package org.onap.vid.testUtils;
+import static org.apache.commons.beanutils.PropertyUtils.getPropertyDescriptors;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.RETURNS_DEFAULTS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+import static org.testng.Assert.fail;
+
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableList;
+import java.beans.PropertyDescriptor;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.json.JSONArray;
@@ -32,28 +55,11 @@ import org.mockito.MockSettings;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import org.onap.portalsdk.core.domain.support.DomainVo;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.asdc.beans.Service;
import org.springframework.mock.env.MockEnvironment;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.net.URI;
-import java.util.Iterator;
-import java.util.List;
-
-import static fj.parser.Parser.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.*;
-
/**
* Created by Oren on 6/7/17.
*/
@@ -125,6 +131,12 @@ public class TestUtils {
valueType);
}
+ public static String[] allPropertiesOf(Class<DomainVo> aClass) {
+ return Arrays.stream(getPropertyDescriptors(aClass))
+ .map(PropertyDescriptor::getDisplayName)
+ .toArray(String[]::new);
+ }
+
public static class JavaxRsClientMocks {
private final javax.ws.rs.client.Client fakeClient;