CycloneDX / CycloneDX/cyclonedx-core-java
Exception when serializing `extensibleTypes` to JSON
- Vorherrschende Sprache
- Java
- Sterne
- 120
- Forks
- 90
- Ø Merge
- 12 Std. 43 Min.
- Gemergte PRs (30 T.)
- 18
Beschreibung
In ORT, we're using `extensibleTypes` to record the ["origin" of a license](https://github.com/oss-review-toolkit/ort/blob/edbb46cb1dab1529d5ffb81cba18d365b98ef23e/reporter/src/main/kotlin/reporters/CycloneDxReporter.kt#L97) or the ["type" of a dependency](https://github.com/oss-review-toolkit/ort/blob/edbb46cb1dab1529d5ffb81cba18d365b98ef23e/reporter/src/main/kotlin/reporters/CycloneDxReporter.kt#L240). While serializing such a BOM to XML works fine, serializing the same BOM to JSON fails with:
```
com.fasterxml.jackson.databind.JsonMappingException:
class com.fasterxml.jackson.core.json.WriterBasedJsonGenerator cannot be cast to class com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator (com.fasterxml.jackson.core.json.WriterBasedJsonGenerator and com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator are in unnamed module of loader 'app')
(through reference chain: org.cyclonedx.model.Bom["components"]->java.util.ArrayList[0]->org.cyclonedx.model.Component["licenses"]->org.cyclonedx.model.License["extensibleTypes"])
```
From a quick glance, it seems to me that `extensibleTypes` serialization currently [is XML-specific](https://github.com/CycloneDX/cyclonedx-core-java/blob/63c5046409bcd11973ad25e2a9cbc324c90a1d31/src/main/java/org/cyclonedx/util/ExtensibleTypesSerializer.java). If that's the case, is there a chance to get JSON support for `extensibleTypes`?
Beitragsleitfaden
Rechercherichtung
Beginne mit src/main/java/org/cyclonedx/util/ExtensibleTypesSerializer.java und reproduziere den JSON-Serialisierungsfehler mit einer BOM, die extensibleTypes enthält. Vergleiche den vorhandenen XML-Serialisierungspfad mit dem Verhalten des JSON-Mappers. Als abgeschlossen gilt die Aufgabe, wenn eine BOM, die extensibleTypes enthält, ohne die class-cast exception in JSON serialisiert werden kann und Tests den JSON-Fall abdecken.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- backend
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100