XML deserialization fails for pedigree/commits on a metadata/tools/components component
I maintainer di solito rispondono entro 1 giorno
@Dushyant7090 ci sta già lavorando.
Dal 24/9/2026.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start with org.cyclonedx.parsers.XmlParser and the metadata/tools path in ToolInformationDeserializer, then reproduce the supplied XML with XmlParser.parse(). Compare this path with the working JSON and top-level component cases; done means the minimal XML parses successfully and the serialized structure round-trips without the reported ArrayList mapping error.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
A CycloneDX 1.5 BOM whose metadata → tools → components component carries a pedigree with commits/commit cannot be deserialized from XML. XmlParser.parse() throws while mapping
Pedigree.commits. The same document deserializes fine as JSON, and the same pedigree/commit on a top-level component deserializes fine from XML — so this is specific to the XML +
tools-component code path. The library will happily serialize this structure but then cannot read its own output, breaking round-tripping.
Version
org.cyclonedx:cyclonedx-core-java:13.2.0 (latest on Maven Central). Runtime: jackson-databind/jackson-dataformat-xml 2.22.2, woodstox-core 7.2.0.
Minimal reproduction
Parse the following (minimal — everything non-essential removed) with new XmlParser().parse(bytes):
<?xml version="1.0" encoding="UTF-8"?>
<bom xmlns="http://cyclonedx.org/schema/bom/1.5">
<metadata>
<tools>
<components>
<component type="application">
<name>t</name>
<pedigree>
<commits>
<commit>
<uid>u</uid>
</commit>
</commits>
</pedigree>
</component>
</components>
</tools>
</metadata>
</bom>
Code to reproduce
byte[] xml = Files.readAllBytes(Path.of("trigger.xml"));
new org.cyclonedx.parsers.XmlParser().parse(xml); // throws
Stack tracke:
org.cyclonedx.exception.ParseException: com.fasterxml.jackson.databind.JsonMappingException:
Cannot deserialize value of type `java.util.ArrayList<org.cyclonedx.model.Commit>` from Object value (token `JsonToken.START_OBJECT`)
(through reference chain: org.cyclonedx.model.Component["pedigree"]->org.cyclonedx.model.Pedigree["commits"]) (through reference chain: org.cyclonedx.model.Bom["metadata"])
at org.cyclonedx.parsers.XmlParser.parse(XmlParser.java:101)
...
Caused by: java.lang.IllegalArgumentException: Cannot deserialize value of type `java.util.ArrayList<org.cyclonedx.model.Commit>` from Object value (token `JsonToken.START_OBJECT`)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4661)
at org.cyclonedx.util.deserializer.ToolInformationDeserializer.parseComponents(ToolInformationDeserializer.java:71)
at org.cyclonedx.util.deserializer.ToolInformationDeserializer.parseToolInformation(ToolInformationDeserializer.java:49)
at org.cyclonedx.util.deserializer.ToolInformationDeserializer.deserialize(ToolInformationDeserializer.java:43)
at org.cyclonedx.util.ToolsJsonParser.parse(ToolsJsonParser.java:49)
at org.cyclonedx.util.deserializer.MetadataDeserializer.deserialize(MetadataDeserializer.java:91)
...
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<org.cyclonedx.model.Commit>` from Object value (token
`JsonToken.START_OBJECT`)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:404)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:253)
Open PR #833 appears to address exactly this path but is not yet merged/released.
- Lingua principale
- Java
- Stelle
- 122
- Fork
- 92
- Merge medio
- 1g 11h
- PR unite (30g)
- 36
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CycloneDX/cyclonedx-core-java
-
breaking change
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
CycloneDX/cyclonedx-core-java#917 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
CycloneDX/cyclonedx-core-java#902 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 58/100
CycloneDX/cyclonedx-core-java#848 ·
I maintainer di solito rispondono entro 1 giorno
-
Partial serializationAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
CycloneDX/cyclonedx-core-java#838 ·
I maintainer di solito rispondono entro 1 giorno
-
Additional license namesForse già presa @bilak l’ha presa 242 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 48/100
CycloneDX/cyclonedx-core-java#792 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di CycloneDX/cyclonedx-core-java
Issue simili
-
account bug communication lecture
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Consumer progress rows interleave topics with equal queue IDsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
apache/rocketmq-dashboard#7250 ·
I maintainer di solito rispondono entro 3 giorni
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
ignatov/intellij-erlang#1093 ·
-
[Bug] QoS count command ignores the times argument after cdForse già presa @CCCLL l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/dubbo#16530 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno