From d701ea2c8a9d437846a3c08c103c8b68eaff7334 Mon Sep 17 00:00:00 2001 From: danielhanrahan Date: Wed, 3 May 2023 15:07:34 +0100 Subject: Sensible equals and hashCode for FragmentEntity (CPS-1664 #1) Include Anchor and Xpath in equals and hashCode methods for FragmentEntity. (This also requires adding equals and hashCode for AnchorEntity and DataspaceEntity.) The combination of dataspace, anchor, and xpath uniquely identify a fragment/datanode. This allows FragmentEntity objects returned from query across anchors to be stored in Set collections. Performance was observed to be unaffected by the change. Issue-ID: CPS-1664 Signed-off-by: danielhanrahan Change-Id: I2c7e3957e392af36f5230d08c9bbd550f44e7444 --- cps-ri/src/main/java/org/onap/cps/spi/entities/AnchorEntity.java | 5 +++++ cps-ri/src/main/java/org/onap/cps/spi/entities/DataspaceEntity.java | 5 ++++- cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) (limited to 'cps-ri/src/main/java/org/onap') diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/AnchorEntity.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/AnchorEntity.java index b89342827..b59150f2e 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/AnchorEntity.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/AnchorEntity.java @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2021 Pantheon.tech + * Modifications Copyright (C) 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +33,7 @@ import javax.persistence.Table; import javax.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -46,6 +48,7 @@ import lombok.Setter; @Builder @Entity @Table(name = "anchor") +@EqualsAndHashCode(onlyExplicitlyIncluded = true) public class AnchorEntity implements Serializable { private static final long serialVersionUID = -8049987915308262518L; @@ -56,6 +59,7 @@ public class AnchorEntity implements Serializable { @NotNull @Column + @EqualsAndHashCode.Include private String name; @NotNull @@ -66,5 +70,6 @@ public class AnchorEntity implements Serializable { @NotNull @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "dataspace_id") + @EqualsAndHashCode.Include private DataspaceEntity dataspace; } diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/DataspaceEntity.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/DataspaceEntity.java index 593746d94..4d97054d9 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/DataspaceEntity.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/DataspaceEntity.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2021 Nordix Foundation. + * Copyright (C) 2020-2023 Nordix Foundation. * Modifications Copyright (C) 2020-2021 Pantheon.tech * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -30,6 +30,7 @@ import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.NotNull; import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -44,6 +45,7 @@ import lombok.Setter; @AllArgsConstructor @NoArgsConstructor @Table(name = "dataspace") +@EqualsAndHashCode(onlyExplicitlyIncluded = true) public class DataspaceEntity implements Serializable { private static final long serialVersionUID = 8395254649813051882L; @@ -54,6 +56,7 @@ public class DataspaceEntity implements Serializable { @NotNull @Column(columnDefinition = "text") + @EqualsAndHashCode.Include private String name; /** diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java index 05befc871..e696a4064 100755 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/FragmentEntity.java @@ -88,6 +88,7 @@ public class FragmentEntity implements Serializable { @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "anchor_id") + @EqualsAndHashCode.Include private AnchorEntity anchor; @ToString.Exclude -- cgit 1.2.3-korg