Skip to content

refactor!: merge ColumnBase into AbstractColumn#9698

Open
vursen wants to merge 1 commit into
mainfrom
refactor/merge-columnbase-into-abstractcolumn
Open

refactor!: merge ColumnBase into AbstractColumn#9698
vursen wants to merge 1 commit into
mainfrom
refactor/merge-columnbase-into-abstractcolumn

Conversation

@vursen

@vursen vursen commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

ColumnBase is a package-private interface whose only implementor is AbstractColumn, and every column type (Grid.Column, ColumnGroup) gets its methods by extending AbstractColumn anyway. The interface adds a level of abstraction for no real benefit, so this PR proposes to merge it into AbstractColumn.

Warning

This change breaks binary compatibility. ColumnBase's fluent setters returned the self type T whose bound was ColumnBase, so T erased to ColumnBase in the compiled bytecode. Now the bound is AbstractColumn, so it erases to AbstractColumn. For example, setResizable's descriptor changes from (Z)Lcom/vaadin/flow/component/grid/ColumnBase; to (Z)Lcom/vaadin/flow/component/grid/AbstractColumn;, and since ColumnBase no longer exists, code compiled against the previous version can now fail with NoSuchMethodError until it's recompiled.

ColumnBase was a package-private interface whose only implementor was
AbstractColumn, and all column types reach its methods by extending
AbstractColumn. Move its default methods onto AbstractColumn as concrete
methods and drop the interface. The public fluent API on Grid.Column and
ColumnGroup is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Jul 8, 2026

Copy link
Copy Markdown

@vursen vursen changed the title refactor: merge ColumnBase into AbstractColumn refactor!: merge ColumnBase into AbstractColumn Jul 8, 2026
@vursen vursen added requires new major This would be a breaking change needs discussion No decision yet, discussion needed and removed requires new major This would be a breaking change labels Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs discussion No decision yet, discussion needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant