Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Ensure Builders are only called once and "lock" mutable builder parameters in object constructors.

Aperta
#405 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@bevzzz ci sta già lavorando.

Dal 4/7/2025.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

v6

Builders in their current form suffer from a potential misuse where calling a builder setter after calling .build() may alter the state of a previously-create "target" object.

Consider:

var b = new CollectionConfig.Builder("CarelessCollection");
b.properties(Property.text("text_a"));
var cfg = b.build();

// Somewhere later in the code
b.properties(Property.text("text_b"));
client.collections.create(cfg);

CarelessCollection is created with 2 properties, despite what you might expect.
Here's another good illustration of this point: https://github.com/weaviate/java-client/pull/399#discussion_r2179514203


We should:

  1. In all constructors that accept a Builder, wrap all mutable fields (list / map) in their unmodifiable views: Collections.unmodifiableList etc.
  2. Check .build() is only called once per object. Sth like this.
Lingua principale
Java
Stelle
34
Fork
30
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di weaviate/java-client

Tutte le issue di weaviate/java-client

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.