diff --git a/src/main/java/org/spdx/utility/compare/SpdxComparer.java b/src/main/java/org/spdx/utility/compare/SpdxComparer.java index d58fd264..1399b3c0 100644 --- a/src/main/java/org/spdx/utility/compare/SpdxComparer.java +++ b/src/main/java/org/spdx/utility/compare/SpdxComparer.java @@ -51,6 +51,9 @@ import org.spdx.library.model.v2.license.AnyLicenseInfo; import org.spdx.library.model.v2.license.ExtractedLicenseInfo; import org.spdx.licenseTemplate.LicenseTextHelper; + +import javax.annotation.Nullable; + /** * Performs a comparison between two or more SPDX documents and holds the results of the comparison *

@@ -149,6 +152,8 @@ public class SpdxComparer { // Snippet references comparison results private final Map>> uniqueSnippets = new HashMap<>(); private final Map snippetComparers = new HashMap<>(); + + private final Map equivalentElements = new HashMap<>(); // Key is the hash of the hashes of the 2 element public SpdxComparer() { // Default empty constructor @@ -350,7 +355,7 @@ private void compareExternalDocumentRefs() throws InvalidSPDXAnalysisException { Collection externalDocRefsB = spdxDocs.get(j).getExternalDocumentRefs(); // find any external refs in A that are not in B - List uniqueA = findUniqueExternalDocumentRefs(externalDocRefsA, externalDocRefsB); + List uniqueA = findUniqueExternalDocumentRefs(externalDocRefsA, externalDocRefsB, equivalentElements); if (!uniqueA.isEmpty()) { uniqueAMap.put(spdxDocs.get(j), uniqueA); } @@ -385,7 +390,7 @@ private void compareDocumentRelationships() throws InvalidSPDXAnalysisException Collection relationshipsB = spdxDocs.get(j).getRelationships(); // find any creators in A that are not in B - List uniqueA = findUniqueRelationships(relationshipsA, relationshipsB); + List uniqueA = findUniqueRelationships(relationshipsA, relationshipsB, equivalentElements); if (!uniqueA.isEmpty()) { uniqueAMap.put(spdxDocs.get(j), uniqueA); } @@ -896,7 +901,7 @@ private void compareDocumentContents() throws SpdxCompareException { Collection itemsA = spdxDocs.get(i).getDocumentDescribes(); for (int j = i+1; j < spdxDocs.size(); j++) { Collection itemsB = spdxDocs.get(j).getDocumentDescribes(); - if (!collectionsEquivalent(itemsA, itemsB)) { + if (!collectionsEquivalent(itemsA, itemsB, equivalentElements)) { this.documentContentsEquals = false; this.differenceFound = true; return; @@ -1156,15 +1161,30 @@ public static boolean objectsEqual(Object o1, Object o2) { * @throws InvalidSPDXAnalysisException on SPDX parsing errors */ @SuppressWarnings("OptionalUsedAsFieldOrParameterType") - public static boolean elementsEquivalent(Optional elementA, Optional elementB) throws InvalidSPDXAnalysisException { - if (elementA.isPresent()) { - if (elementB.isPresent()) { - return elementA.get().equivalent(elementB.get()); + public static boolean elementsEquivalent(Optional elementA, + Optional elementB, + Map equivalentElements) throws InvalidSPDXAnalysisException { + return elementsEquivalent(elementA.orElse(null), elementB.orElse(null), equivalentElements); + } + + public static boolean elementsEquivalent(@Nullable ModelObjectV2 elementA, + @Nullable ModelObjectV2 elementB, + Map equivalentElements) throws InvalidSPDXAnalysisException { + if (Objects.nonNull(elementA)) { + if (Objects.nonNull(elementB)) { + int key = Objects.hash(elementA, elementB); + int key2 = Objects.hash(elementA, elementB); + Boolean equiv = equivalentElements.get(key); + if (Objects.isNull(equiv)) { + equiv = elementA.equivalent(elementB); + equivalentElements.put(key, equiv); + } + return equiv; } else { return false; } } else { - return !elementB.isPresent(); + return Objects.isNull(elementB); } } @@ -1174,7 +1194,9 @@ public static boolean elementsEquivalent(Optional eleme * @throws InvalidSPDXAnalysisException on SPDX parsing errors * @return true if the collections all contain equivalent items */ - public static boolean collectionsEquivalent(Collection collectionA, Collection collectionB) throws InvalidSPDXAnalysisException { + public static boolean collectionsEquivalent(Collection collectionA, + Collection collectionB, + Map equivalentElements) throws InvalidSPDXAnalysisException { if (Objects.isNull(collectionA)) { return Objects.isNull(collectionB); } @@ -1184,16 +1206,18 @@ public static boolean collectionsEquivalent(Collection if (collectionA.size() != collectionB.size()) { return false; } + //DEBUG: + int size = collectionA.size(); + int count = 0; + //ENDDEBUG: for (ModelObjectV2 elementA:collectionA) { + if (Objects.isNull(elementA)) { continue; } boolean found = false; for (ModelObjectV2 elementB:collectionB) { - if (Objects.isNull(elementB)) { - continue; - } - if (elementA.equivalent(elementB)) { + if (elementsEquivalent(elementA, elementB, equivalentElements)) { found = true; break; } @@ -1201,6 +1225,11 @@ public static boolean collectionsEquivalent(Collection if (!found) { return false; } + //DEBUG: + if (size > 10000) { + System.out.println("Compared item "+count++ + "out of "+size); + } + //ENDDEBUG: } return true; } @@ -1966,7 +1995,9 @@ public static List findUniqueAnnotations(Collection anno * @throws InvalidSPDXAnalysisException on SPDX parsing errors */ public static List findUniqueRelationships( - Collection relationshipsA, Collection relationshipsB) throws InvalidSPDXAnalysisException { + Collection relationshipsA, + Collection relationshipsB, + Map equivalentElements) throws InvalidSPDXAnalysisException { List retval = new ArrayList<>(); if (relationshipsA == null) { return retval; @@ -1978,7 +2009,7 @@ public static List findUniqueRelationships( boolean found = false; if (relationshipsB != null) { for (Relationship relB:relationshipsB) { - if (relA.equivalent(relB)) { + if (elementsEquivalent(relA, relB, equivalentElements)) { found = true; break; } @@ -1999,7 +2030,8 @@ public static List findUniqueRelationships( * @throws InvalidSPDXAnalysisException On error in comparison */ public static List findUniqueExternalDocumentRefs( - Collection externalDocRefsA, Collection externalDocRefsB) throws InvalidSPDXAnalysisException { + Collection externalDocRefsA, Collection externalDocRefsB, + Map equivalentElements) throws InvalidSPDXAnalysisException { List retval = new ArrayList<>(); if (externalDocRefsA == null) { return new ArrayList<>(); @@ -2013,7 +2045,7 @@ public static List findUniqueExternalDocumentRefs( for (ExternalDocumentRef docRefB:externalDocRefsB) { if (compareStrings(docRefA.getSpdxDocumentNamespace(), docRefB.getSpdxDocumentNamespace()) == 0 && - elementsEquivalent(docRefA.getChecksum(), docRefB.getChecksum())) { + elementsEquivalent(docRefA.getChecksum(), docRefB.getChecksum(), equivalentElements)) { found = true; break; } diff --git a/src/main/java/org/spdx/utility/compare/SpdxItemComparer.java b/src/main/java/org/spdx/utility/compare/SpdxItemComparer.java index b2a67e35..99c34291 100644 --- a/src/main/java/org/spdx/utility/compare/SpdxItemComparer.java +++ b/src/main/java/org/spdx/utility/compare/SpdxItemComparer.java @@ -80,9 +80,16 @@ public class SpdxItemComparer { */ protected Map>> extractedLicenseIdMap; - + protected Map equivalentElements; + public SpdxItemComparer(Map>> extractedLicenseIdMap) { + this(extractedLicenseIdMap, new HashMap<>()); + } + + public SpdxItemComparer(Map>> extractedLicenseIdMap, + Map equivalentElements) { this.extractedLicenseIdMap = extractedLicenseIdMap; + this.equivalentElements = equivalentElements; } /** @@ -191,13 +198,14 @@ private void compareRelationships(SpdxDocument spdxDocument, for (Entry entry : this.documentItem.entrySet()) { Map> uniqueCompareRelationship = this.uniqueRelationships.computeIfAbsent(entry.getKey(), k -> new HashMap<>()); Collection compareRelationships = entry.getValue().getRelationships(); - List uniqueRelationships = SpdxComparer.findUniqueRelationships(relationships, compareRelationships); + List uniqueRelationships = SpdxComparer.findUniqueRelationships(relationships, + compareRelationships, equivalentElements); if (!uniqueRelationships.isEmpty()) { this.relationshipsEquals = false; this.itemDifferenceFound = true; } uniqueDocRelationship.put(entry.getKey(), uniqueRelationships); - uniqueRelationships = SpdxComparer.findUniqueRelationships(compareRelationships, relationships); + uniqueRelationships = SpdxComparer.findUniqueRelationships(compareRelationships, relationships, equivalentElements); if (!uniqueRelationships.isEmpty()) { this.relationshipsEquals = false; this.itemDifferenceFound = true; diff --git a/src/test/java/org/spdx/utility/compare/SpdxComparerTest.java b/src/test/java/org/spdx/utility/compare/SpdxComparerTest.java index acd316c8..69739cf0 100644 --- a/src/test/java/org/spdx/utility/compare/SpdxComparerTest.java +++ b/src/test/java/org/spdx/utility/compare/SpdxComparerTest.java @@ -649,12 +649,6 @@ private SpdxDocument createTestSpdxDoc(String docUri) throws InvalidSPDXAnalysis return retval; } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#compare(org.spdx.rdfparser.SpdxDocument, org.spdx.rdfparser.SpdxDocument)}. - * @throws InvalidSPDXAnalysisException - * @throws IOException - * @throws SpdxCompareException - */ public void testCompare() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -671,13 +665,6 @@ public void testCompare() throws IOException, InvalidSPDXAnalysisException, Spdx assertEquals(doc2.hashCode(), comparer.getSpdxDoc(1).hashCode()); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#compareLicense(int, org.spdx.rdfparser.license.AnyLicenseInfo, int, org.spdx.rdfparser.license.AnyLicenseInfo)}. - * @throws InvalidSPDXAnalysisException - * @throws IOException - * @throws SpdxCompareException - * @throws InvalidLicenseStringException - */ public void testCompareLicense() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException, InvalidLicenseStringException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -949,12 +936,6 @@ private AnyLicenseInfo updateToNewExtractedLicenseId(AnyLicenseInfo license, Map } } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isDifferenceFound()}. - * @throws InvalidSPDXAnalysisException - * @throws IOException - * @throws SpdxCompareException - */ public void testIsDifferenceFound() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -970,12 +951,6 @@ public void testIsDifferenceFound() throws IOException, InvalidSPDXAnalysisExcep } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isSpdxVersionEqual()}. - * @throws InvalidSPDXAnalysisException - * @throws SpdxCompareException - * @throws IOException - */ public void testIsSpdxVersionEqual() throws InvalidSPDXAnalysisException, SpdxCompareException, IOException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -993,12 +968,6 @@ public void testIsSpdxVersionEqual() throws InvalidSPDXAnalysisException, SpdxCo assertFalse(comparer.isDifferenceFound()); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#getSpdxDoc(int)}. - * @throws InvalidSPDXAnalysisException - * @throws IOException - * @throws SpdxCompareException - */ public void testGetSpdxDoc() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1013,12 +982,6 @@ public void testGetSpdxDoc() throws IOException, InvalidSPDXAnalysisException, S } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isDataLicenseEqual()}. - * @throws InvalidSPDXAnalysisException - * @throws IOException - * @throws SpdxCompareException - */ public void testIsDataLicenseEqual() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1035,9 +998,6 @@ public void testIsDataLicenseEqual() throws IOException, InvalidSPDXAnalysisExce assertFalse(comparer.isDataLicenseEqual()); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isDocumentCommentsEqual()}. - */ public void testIsDocumentCommentsEqual()throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1055,10 +1015,6 @@ public void testIsDocumentCommentsEqual()throws IOException, InvalidSPDXAnalysis assertFalse(comparer.isDifferenceFound()); assertTrue(comparer.isDocumentCommentsEqual()); } - - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isExtractedLicensingInfosEqual()}. - */ public void testIsExtractedLicensingInfosEqual() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1275,9 +1231,6 @@ public void testIsExtractedLicensingInfosEqual() throws IOException, InvalidSPDX assertTrue(comparer.isDifferenceFound()); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#getUniqueExtractedLicenses(int, int)}. - */ public void testGetUniqueExtractedLicenses() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1423,9 +1376,6 @@ public void testGetUniqueExtractedLicenses() throws IOException, InvalidSPDXAnal assertTrue(uniqueLicIds.contains(result.get(3).getLicenseId())); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#getExtractedLicenseDifferences(int, int)}. - */ public void testGetExtractedLicenseDifferences() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1667,9 +1617,6 @@ private boolean stringsSame(Collection crossReff1, Collection co return crossReff1.containsAll(collection); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isPackageEqual()}. - */ public void testIsPackageEqual() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1685,9 +1632,6 @@ public void testIsPackageEqual() throws IOException, InvalidSPDXAnalysisExceptio // note - other test cases will test to make sure isPackageEquals is set for all changes where it should be false } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#isCreatorInformationEqual()}. - */ public void testIsCreatorInformationEqual() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -1745,9 +1689,6 @@ public void testIsCreatorInformationEqual() throws IOException, InvalidSPDXAnaly assertTrue(comparer.isDifferenceFound()); } - /** - * Test method for {@link org.spdx.compare.SpdxComparer#getUniqueCreators(int, int)}. - */ public void testGetUniqueCreators() throws IOException, InvalidSPDXAnalysisException, SpdxCompareException { SpdxComparer comparer = new SpdxComparer(); SpdxDocument doc1 = createTestSpdxDoc(DOC_URIA); @@ -2056,10 +1997,10 @@ public void testElementEquivalent() throws InvalidSPDXAnalysisException { Optional element1B = Optional.of(e1b); Optional none1 = Optional.empty(); Optional none2 = Optional.empty(); - assertTrue(SpdxComparer.elementsEquivalent(element1A, element2A)); - assertFalse(SpdxComparer.elementsEquivalent(element1A, element1B)); - assertFalse(SpdxComparer.elementsEquivalent(element1A, none1)); - assertTrue(SpdxComparer.elementsEquivalent(none1, none2)); + assertTrue(SpdxComparer.elementsEquivalent(element1A, element2A, new HashMap<>())); + assertFalse(SpdxComparer.elementsEquivalent(element1A, element1B, new HashMap<>())); + assertFalse(SpdxComparer.elementsEquivalent(element1A, none1, new HashMap<>())); + assertTrue(SpdxComparer.elementsEquivalent(none1, none2, new HashMap<>())); } public void testFindUniqueChecksums() throws InvalidSPDXAnalysisException { diff --git a/src/test/java/org/spdx/utility/compare/SpdxItemComparerTest.java b/src/test/java/org/spdx/utility/compare/SpdxItemComparerTest.java index 215b177f..d2c9ea9a 100644 --- a/src/test/java/org/spdx/utility/compare/SpdxItemComparerTest.java +++ b/src/test/java/org/spdx/utility/compare/SpdxItemComparerTest.java @@ -201,7 +201,7 @@ public void testCompare() throws SpdxCompareException, InvalidSPDXAnalysisExcept SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertFalse(comparer.isDifferenceFound()); @@ -249,7 +249,7 @@ public void testIsConcludedLicenseEquals() throws SpdxCompareException, InvalidS SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSEB2, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -269,7 +269,7 @@ public void testIsSeenLicenseEquals() throws SpdxCompareException, InvalidSPDXAn SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, new AnyLicenseInfo[] {LICENSEB1}, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -291,7 +291,7 @@ public void testGetUniqueSeenLicensesB() throws SpdxCompareException, InvalidSPD SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, s2, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -312,7 +312,7 @@ public void testGetUniqueSeenLicensesB() throws SpdxCompareException, InvalidSPD itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(0, comparer.getUniqueSeenLicenses(DOCB, DOCA).size()); @@ -328,7 +328,7 @@ public void testGetUniqueSeenLicensesA() throws SpdxCompareException, InvalidSPD SpdxItem itemB =createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, s2, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -349,7 +349,7 @@ public void testGetUniqueSeenLicensesA() throws SpdxCompareException, InvalidSPD itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(0, comparer.getUniqueSeenLicenses(DOCA, DOCB).size()); @@ -362,7 +362,7 @@ public void testIsCommentsEquals() throws SpdxCompareException, InvalidSPDXAnaly SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTB, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -382,7 +382,7 @@ public void testIsCopyrightsEquals() throws SpdxCompareException, InvalidSPDXAna SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTB, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -402,7 +402,7 @@ public void testIsAttributionTextEquals() throws SpdxCompareException, InvalidSP SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTB); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -423,7 +423,7 @@ public void testIsLicenseCommentsEquals() throws SpdxCompareException, InvalidSP SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTB, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -443,7 +443,7 @@ public void testGetItem() throws SpdxCompareException, InvalidSPDXAnalysisExcept SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTB, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(itemA, comparer.getItem(DOCA)); @@ -459,7 +459,7 @@ public void testIsRelationshipsEquals() throws SpdxCompareException, InvalidSPDX SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, r2, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -481,7 +481,7 @@ public void testGetUniqueRelationshipA() throws SpdxCompareException, InvalidSPD SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, r2, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -501,7 +501,7 @@ public void testGetUniqueRelationshipA() throws SpdxCompareException, InvalidSPD itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(0, comparer.getUniqueRelationship(DOCA, DOCB).size()); @@ -517,7 +517,7 @@ public void testGetUniqueRelationshipB() throws SpdxCompareException, InvalidSPD SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, r2, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB);; assertTrue(comparer.isDifferenceFound()); @@ -537,7 +537,7 @@ public void testGetUniqueRelationshipB() throws SpdxCompareException, InvalidSPD itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(0, comparer.getUniqueRelationship(DOCB, DOCA).size()); @@ -553,7 +553,7 @@ public void testIsAnnotationsEquals() throws SpdxCompareException, InvalidSPDXAn SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, a2, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -575,7 +575,7 @@ public void testGetUniqueAnnotationsA() throws SpdxCompareException, InvalidSPDX SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, a2, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -595,7 +595,7 @@ public void testGetUniqueAnnotationsA() throws SpdxCompareException, InvalidSPDX itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(0, comparer.getUniqueAnnotations(DOCA, DOCB).size()); @@ -611,7 +611,7 @@ public void testGetUniqueAnnotationsB() throws SpdxCompareException, InvalidSPDX SpdxItem itemB = createGenericItem(DOCB, NAMEA, COMMENTA, a2, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + SpdxItemComparer comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertTrue(comparer.isDifferenceFound()); @@ -631,7 +631,7 @@ public void testGetUniqueAnnotationsB() throws SpdxCompareException, InvalidSPDX itemB = createGenericItem(DOCB, NAMEA, COMMENTA, ANNOTATIONSA, RELATIONSHIPSA, LICENSE_CONCLUDEDB, LICENSE_INFO_FROM_FILESB, COPYRIGHTA, LICENSE_COMMENTA, ATTRIBUTION_TEXTA); - comparer = new SpdxItemComparer(LICENSE_XLATION_MAP); + comparer = new SpdxItemComparer(LICENSE_XLATION_MAP, new HashMap<>()); comparer.addDocumentItem(DOCA, itemA); comparer.addDocumentItem(DOCB, itemB); assertEquals(0, comparer.getUniqueAnnotations(DOCB, DOCA).size());