Skip to content

Roll the default context builder into contextbuilder#687

Merged
stefanhaustein merged 2 commits into
Pi4J:mainfrom
stefanhaustein:develop
Jul 7, 2026
Merged

Roll the default context builder into contextbuilder#687
stefanhaustein merged 2 commits into
Pi4J:mainfrom
stefanhaustein:develop

Conversation

@stefanhaustein

@stefanhaustein stefanhaustein commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Removing an unutilized level of indirection

Also stop builder changes from affecting a constructed context (builder, you had one job... :)

Part of #671

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the separate DefaultContextBuilder implementation and folds its behavior into ContextBuilder, with the intent of reducing indirection and ensuring a builder can’t mutate the configuration after a Context has been created (by snapshotting builder state into the produced ContextConfig).

Changes:

  • Deleted DefaultContextBuilder and moved its implementation logic into ContextBuilder.
  • Converted ContextBuilder from an interface into a concrete class with fluent configuration methods and build().
  • Updated toConfig() to produce an immutable snapshot (copy) of builder state rather than a live view tied to the builder instance.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
pi4j-core/src/main/java/com/pi4j/context/impl/DefaultContextBuilder.java Removed the dedicated default builder implementation to eliminate an extra indirection layer.
pi4j-core/src/main/java/com/pi4j/context/ContextBuilder.java Inlined the default builder implementation and updated toConfig() to snapshot state for immutability.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +23 to +24
public class ContextBuilder implements Builder<Context> {
protected Logger logger = LoggerFactory.getLogger(ContextBuilder.class);
Comment thread pi4j-core/src/main/java/com/pi4j/context/ContextBuilder.java Outdated
@sonarqubecloud

sonarqubecloud Bot commented Jul 7, 2026

Copy link
Copy Markdown

@stefanhaustein stefanhaustein merged commit ab4fffa into Pi4J:main Jul 7, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants