CycloneDX / CycloneDX/cyclonedx-core-java

Exception when serializing `extensibleTypes` to JSON

Aperta
#99 8 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
120
Fork
90
Merge medio
12h 43m
PR unite (30g)
18

Descrizione

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`?

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da src/main/java/org/cyclonedx/util/ExtensibleTypesSerializer.java e riproduci il problema di serializzazione JSON utilizzando una BOM contenente extensibleTypes. Confronta il percorso di serializzazione XML esistente con il comportamento del JSON mapper. Il lavoro è completo quando una BOM contenente extensibleTypes può essere serializzata in JSON senza la class-cast exception, con test che coprano il caso JSON.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
backend
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.