From f053201bde6737ea9c0e3fbcce8fc77f4bc0ceaf Mon Sep 17 00:00:00 2001 From: Tieg Zaharia Date: Fri, 26 Dec 2025 15:05:18 -0600 Subject: [PATCH] Spdx2to3Converter: return null for "NONE" or "NOASSERTION" Agents --- .../library/conversion/Spdx2to3Converter.java | 4 ++++ .../conversion/Spdx2to3ConverterTest.java | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/java/org/spdx/library/conversion/Spdx2to3Converter.java b/src/main/java/org/spdx/library/conversion/Spdx2to3Converter.java index 8a351758..52241283 100644 --- a/src/main/java/org/spdx/library/conversion/Spdx2to3Converter.java +++ b/src/main/java/org/spdx/library/conversion/Spdx2to3Converter.java @@ -346,6 +346,10 @@ public static Agent stringToAgent(String spdx2personOrgString, CreationInfo crea Objects.requireNonNull(idPrefix, "Creation info must have an idPrefix to accurately generate SPDX IDs"); Matcher matcher = SPDX_2_CREATOR_PATTERN.matcher(spdx2personOrgString); if (!matcher.matches()) { + // return null for NOASSERTION and NONE + if ("NOASSERTION".equals(spdx2personOrgString) || "NONE".equals(spdx2personOrgString)) { + return null; + } // return a generic Agent Agent agent = (Agent)SpdxModelClassFactoryV3.getModelObject(creationInfo.getModelStore(), creationInfo.getIdPrefix() + creationInfo.getModelStore().getNextId(IdType.SpdxId), diff --git a/src/test/java/org/spdx/library/conversion/Spdx2to3ConverterTest.java b/src/test/java/org/spdx/library/conversion/Spdx2to3ConverterTest.java index 265cc822..310e075c 100644 --- a/src/test/java/org/spdx/library/conversion/Spdx2to3ConverterTest.java +++ b/src/test/java/org/spdx/library/conversion/Spdx2to3ConverterTest.java @@ -1951,5 +1951,29 @@ public void testConvertToLicenseExpression() throws InvalidSPDXAnalysisException assertTrue(expected.isEmpty()); assertEquals(ands.toString(), result.getLicenseExpression()); } + + @Test + public void testPackageSupplierNoAssertionAndNone() throws InvalidSPDXAnalysisException { + CreationInfo testCreationInfo = Spdx2to3Converter.convertCreationInfo( + new SpdxCreatorInformation(fromModelStore, DOCUMENT_URI, + fromModelStore.getNextId(IdType.Anonymous), copyManager, true) + .setCreated("2010-01-29T18:30:22Z"), + toModelStore, DEFAULT_PREFIX); + + // "NOASSERTION" agent string + Agent resultNoAssertion = Spdx2to3Converter.stringToAgent("NOASSERTION", testCreationInfo); + assertNull("stringToAgent should return null for NOASSERTION value", resultNoAssertion); + + // "NONE" agent string + Agent resultNone = Spdx2to3Converter.stringToAgent("NONE", testCreationInfo); + assertNull("stringToAgent should return null for NONE value", resultNone); + + // Valid Person agent string + String personCreator = SpdxConstantsCompatV2.CREATOR_PREFIX_PERSON + "John Doe (john@example.com)"; + Agent resultPerson = Spdx2to3Converter.stringToAgent(personCreator, testCreationInfo); + assertNotNull("stringToAgent should return an Agent for valid Person format", resultPerson); + assertTrue("Result should be a Person", resultPerson instanceof Person); + assertEquals("John Doe", resultPerson.getName().get()); + } }