diff --git a/src/main/java/org/spdx/utility/license/LicenseExpressionParser.java b/src/main/java/org/spdx/utility/license/LicenseExpressionParser.java index 7f830a2e..97bfe18b 100644 --- a/src/main/java/org/spdx/utility/license/LicenseExpressionParser.java +++ b/src/main/java/org/spdx/utility/license/LicenseExpressionParser.java @@ -490,7 +490,11 @@ private static AnyLicenseInfo parseSimpleLicenseToken(String token, IModelStore } } return new ListedLicense(store, listedLicense.getObjectUri(), copyManager, true, SpdxConstantsV3.SPDX_LISTED_LICENSE_NAMESPACE); - } else { + } else if (SpdxConstantsCompatV2.NOASSERTION_VALUE.equals(token)) { + return new NoAssertionLicense(); + } else if (SpdxConstantsCompatV2.NONE_VALUE.equals(token)) { + return new NoneLicense(); + }else { // LicenseRef String objectUri = customLicenseUriPrefix + token; CustomLicense localLicense; @@ -571,6 +575,10 @@ private static org.spdx.library.model.v2.license.AnyLicenseInfo parseSimpleLicen } return (org.spdx.library.model.v2.license.AnyLicenseInfo) org.spdx.library.model.v2.SpdxModelFactoryCompatV2.getModelObjectV2(store, SpdxConstantsCompatV2.LISTED_LICENSE_NAMESPACE_PREFIX, licenseId.get(), SpdxConstantsCompatV2.CLASS_SPDX_LISTED_LICENSE, copyManager, true); + } else if (SpdxConstantsCompatV2.NOASSERTION_VALUE.equals(token)) { + return new SpdxNoAssertionLicense(); + } else if (SpdxConstantsCompatV2.NONE_VALUE.equals(token)) { + return new SpdxNoneLicense(); } else { // LicenseRef Optional caseSensitiveId = store.getCaseSensitiveId(documentUri, token); diff --git a/src/test/java/org/spdx/utility/license/LicenseExpressionParserTest.java b/src/test/java/org/spdx/utility/license/LicenseExpressionParserTest.java index 147abbb1..16bacfc7 100644 --- a/src/test/java/org/spdx/utility/license/LicenseExpressionParserTest.java +++ b/src/test/java/org/spdx/utility/license/LicenseExpressionParserTest.java @@ -378,8 +378,13 @@ public void testExternalLicenseAddition() throws InvalidSPDXAnalysisException { } } - public void regressionMitWith() throws InvalidSPDXAnalysisException, InvalidLicenseStringException { + public void regressionMitWith() throws InvalidSPDXAnalysisException { AnyLicenseInfo result = LicenseInfoFactory.parseSPDXLicenseString("MIT WITH Autoconf-exception-2.0"); assertEquals("MIT WITH Autoconf-exception-2.0",result.toString()); } + + public void testParseNoAssertionAnds() throws InvalidSPDXAnalysisException { + AnyLicenseInfo result = LicenseInfoFactory.parseSPDXLicenseString("MIT AND NOASSERTION AND NONE"); + assertEquals("(MIT AND NOASSERTION AND NONE)",result.toString()); + } } diff --git a/src/test/java/org/spdx/utility/license/LicenseExpressionParserTestV2.java b/src/test/java/org/spdx/utility/license/LicenseExpressionParserTestV2.java index 2c75d9f7..1d4aa04e 100644 --- a/src/test/java/org/spdx/utility/license/LicenseExpressionParserTestV2.java +++ b/src/test/java/org/spdx/utility/license/LicenseExpressionParserTestV2.java @@ -226,8 +226,13 @@ public void testExternalLicenseRef() throws InvalidSPDXAnalysisException { assertEquals(externalExtractedId, ((ExternalExtractedLicenseInfo)result).toString()); } - public void regressionMitWith() throws InvalidSPDXAnalysisException, InvalidLicenseStringException { + public void regressionMitWith() throws InvalidSPDXAnalysisException { AnyLicenseInfo result = LicenseInfoFactory.parseSPDXLicenseStringCompatV2("MIT WITH Autoconf-exception-2.0"); assertEquals("MIT WITH Autoconf-exception-2.0",result.toString()); } + + public void testParseNoAssertionAnds() throws InvalidSPDXAnalysisException { + AnyLicenseInfo result = LicenseInfoFactory.parseSPDXLicenseStringCompatV2("MIT AND NOASSERTION AND NONE"); + assertEquals("(MIT AND NOASSERTION AND NONE)",result.toString()); + } }