NULL_BOOLEAN is not compatible with Value Objects
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Iniziare da google-http-client/src/main/java/com/google/api/client/util/Data.java, in particolare da Data.isNull e NULL_BOOLEAN, e riprodurre le Assertions mostrate nell’issue con l’anteprima delle value class di JDK 28. Confrontare i due approcci proposti; il lavoro è completato quando i valori legittimi Boolean, Integer e Long non restituiscono più true da Data.isNull e il rilevamento dei valori assenti e impostati esplicitamente a null rimane corretto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
google-http-client uses sentinel objects like NULL_BOOLEAN to distinguish between fields being absent and explicitly set to null:
Those sentinel fields are using deprecated constructors like new Boolean(true) (the deprecation warnings were suppressed in https://github.com/googleapis/google-http-java-client/pull/1215).
JDK 28 introduces a preview of the value classes feature (https://openjdk.org/jeps/401). With JEP 401 boxed primitive classes like Boolean and Integer become value classes that don't have identity, so instance are compared by value:
new Boolean(true) == Boolean.TRUEwill evaluate totruenew Integer(0) == Integer.valueOf(0)will evaluate totrue
This causes google-http-client's Data.isNull(object) to return true for legitimate values.
With JEP 401, assertions like these will start to fail:
assertThat(Data.isNull(true)).isFalse();
assertThat(Data.isNull(0)).isFalse();
assertThat(Data.isNull(0L)).isFalse();
Possible fixes:
- Introduce a new API like
JsonNullable<Boolean>to replace the use ofNULL_BOOLEAN - Maintain a set of explicitly set fields, that could be queried instead of relying on sentinel values.
- Lingua principale
- Java
- Stelle
- 1.4k
- Fork
- 476
- Merge medio
- 10h 47m
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un 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 googleapis/google-http-java-client
-
Core: Validate header names and values to prevent CRLF injectionForse già presa @insaf021 l’ha presa 106 giorni fa. Apertapriority: p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Core: XmlPullParser processes external DTD entities (XXE) — disable FEATURE_PROCESS_DOCDECL in Xml#createParser()Forse già presa @insaf021 l’ha presa 106 giorni fa. Apertapriority: p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Core: LowLevelHttpResponse not disconnected when HttpResponse construction throws RuntimeExceptionForse già presa @insaf021 l’ha presa 106 giorni fa. Apertapriority: p3
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
type: cleanup
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
org.apache.http.conn.ssl.SSLSocketFactory is deprecatedForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertapriority: p2 type: cleanup
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Tutte le issue di googleapis/google-http-java-client
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 84/100
cpp-best-practices/project_validator#251 ·
I maintainer di solito rispondono entro 1 giorno
-
backend enhancement
Difficoltà 2/5 Mezza giornata Idoneità per principianti 70/100
damodharg6/payledger#16 ·
-
[Bug]: An initiative list with no current entry logs an error on every changeForse già presa @dwizard0 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno