Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#405 0 comentários 0 reações 1 responsável Ver no GitHub

@bevzzz já está trabalhando nisso.

Desde 4/7/2025.

Avaliação

Esta issue ainda não foi avaliada.

Descrição

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.
Linguagem predominante
Java
Estrelas
34
Forks
29
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de weaviate/java-client

Todas as issues de weaviate/java-client

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.