diff --git a/src/main/java/org/spdx/library/model/license/License.java b/src/main/java/org/spdx/library/model/license/License.java index 3ac79ee69..f9e5433d7 100644 --- a/src/main/java/org/spdx/library/model/license/License.java +++ b/src/main/java/org/spdx/library/model/license/License.java @@ -318,11 +318,11 @@ public ModelUpdate updateSetDeprecated(Boolean deprecated) throws InvalidSPDXAna } @Override - public boolean equivalent(ModelObject compare) throws InvalidSPDXAnalysisException { + public boolean equivalent(ModelObject compare, boolean ignoreExternalReferences) throws InvalidSPDXAnalysisException { if (compare instanceof License) { return LicenseCompareHelper.isLicenseTextEquivalent(this.getLicenseText(), ((License)compare).getLicenseText()); } else { - return super.equivalent(compare); + return super.equivalent(compare, ignoreExternalReferences); } } } diff --git a/src/main/java/org/spdx/library/model/license/ListedLicenseException.java b/src/main/java/org/spdx/library/model/license/ListedLicenseException.java index 83c2eab23..3d5f2385a 100644 --- a/src/main/java/org/spdx/library/model/license/ListedLicenseException.java +++ b/src/main/java/org/spdx/library/model/license/ListedLicenseException.java @@ -23,6 +23,7 @@ import org.spdx.library.InvalidSPDXAnalysisException; import org.spdx.library.ModelCopyManager; import org.spdx.library.SpdxConstants; +import org.spdx.library.model.ModelObject; import org.spdx.licenseTemplate.LicenseTemplateRuleException; import org.spdx.licenseTemplate.SpdxLicenseTemplateHelper; import org.spdx.storage.IModelStore; @@ -119,5 +120,14 @@ public String getExceptionTextHtml() throws InvalidSPDXAnalysisException { } } } + + @Override + public boolean equivalent(ModelObject compare, boolean ignoreRelatedElements) throws InvalidSPDXAnalysisException { + if (compare instanceof ListedLicenseException) { + return this.getId().equals(((ListedLicenseException)compare).getId()); // for listed license, the license ID is the only thing that matters + } else { + return super.equivalent(compare, ignoreRelatedElements); + } + } } diff --git a/src/main/java/org/spdx/library/model/license/SpdxListedLicense.java b/src/main/java/org/spdx/library/model/license/SpdxListedLicense.java index 883895db1..1c056cef6 100644 --- a/src/main/java/org/spdx/library/model/license/SpdxListedLicense.java +++ b/src/main/java/org/spdx/library/model/license/SpdxListedLicense.java @@ -212,11 +212,11 @@ public String getType() { } @Override - public boolean equivalent(ModelObject compare) throws InvalidSPDXAnalysisException { + public boolean equivalent(ModelObject compare, boolean ignoreRelatedElements) throws InvalidSPDXAnalysisException { if (compare instanceof SpdxListedLicense) { return this.getLicenseId().equals(((SpdxListedLicense)compare).getLicenseId()); // for listed license, the license ID is the only thing that matters } else { - return super.equivalent(compare); + return super.equivalent(compare, ignoreRelatedElements); } } diff --git a/src/test/java/org/spdx/library/model/license/LicenseExpressionParserTest.java b/src/test/java/org/spdx/library/model/license/LicenseExpressionParserTest.java index bbc1ed77f..6ac4a4041 100644 --- a/src/test/java/org/spdx/library/model/license/LicenseExpressionParserTest.java +++ b/src/test/java/org/spdx/library/model/license/LicenseExpressionParserTest.java @@ -207,4 +207,9 @@ public void testExternalLicenseRef() throws InvalidSPDXAnalysisException { assertTrue(result instanceof ExternalExtractedLicenseInfo); assertEquals(externalExtractedId, ((ExternalExtractedLicenseInfo)result).getId()); } + + public void regressionMitWith() throws InvalidSPDXAnalysisException, InvalidLicenseStringException { + AnyLicenseInfo result = LicenseInfoFactory.parseSPDXLicenseString("MIT WITH Autoconf-exception-2.0"); + assertEquals("MIT WITH Autoconf-exception-2.0",result.toString()); + } }