CycloneDX / CycloneDX/cyclonedx-core-java

Exception when serializing `extensibleTypes` to JSON

Offen
#99 8 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.