TreeTableCell: Misnamed / inconsistent methods for row and column properties
Kevin Rushforth
kevin.rushforth at oracle.com
Mon Jul 12 21:55:37 UTC 2021
In looking at this more closely, I now think that option 2 is the better
approach for the following reasons:
* TreeTablePosition extends TablePositionBase (which is also extended by
TablePosition), and inherits a getTableColumn() method that is
overridden with a covariant return type (using the type of the generic
"TC" parameter) of TreeTableColumn.
* Although not public API, TreeTableCellBehavior extends
TableCellBehaviorBase ( which is also extended by TableCellBehavior),
and inherits inherits a getTableColumn() method that is overridden with
a covariant return type of TreeTableColumn.
So option 2 is the one that will provide better consistency, in addition
to being less intrusive.
Thus, the only change I am proposing to the public API is:
getTreeTableRow() -> getTableRow() -- which I will do by deprecating
(not for removal) the existing method and adding getTableRow() to match
the property name.
-- Kevin
On 7/12/2021 10:22 AM, Kevin Rushforth wrote:
> While evaluating a javadoc fix [1] that removes spurious warnings for
> missing comments on JavaFX property methods, I looked at the remaining
> warnings, and discovered an inconsistency in the naming of two of the
> properties in the TreeTableCell class. I filed JDK-8270314 [2] to
> track this.
>
> Before I submit a PR, I wanted to solicit comments.
>
> In TreeTableCell, there is a mismatch between name of the following
> property method vs the getter:
>
> tableRowProperty()
> getTreeTableRow()
>
> the get method has "Tree" in the name while the property method does not.
>
> The corresponding methods for column are self-consistent, and are
> named without the "tree" in the name:
>
> tableColumnProperty()
> getTableColumn()
>
> Given the type of the property -- TreeTableRow and TreeTableColumn,
> respectively -- the properties should have "Tree" in the name, but
> don't. Somewhat related is that the update methods for both row and
> column are updateTreeTableColumn and updateTreeTableRow which do
> have "TreeTable" in the name:
>
> There are two possible solutions that seem workable:
>
> Possible solutions:
>
> 1. Add Tree to all methods of the row and column properties
>
> tableRowProperty() --> treeTableRowProperty()
>
> tableColumnProperty() --> treeTableColumnProperty()
> getTableColumn() --> getTreeTableColumn()
>
> This is the most consistent, but is slightly more intrusive in that
> changes 3 of the 4 public methods of the row and column properties.
>
>
> 2. Remove Tree from all methods of these properties
>
> getTreeTableRow() -> getTableRow()
>
> This is a less intrusive change that only affects one method. While it
> makes the properties self-consistent and consistent with each other,
> the names are not what would be expected given the return type
> (TreeTableColumn and TreeTableRow), and are not consistent with the
> update methods. Also, for applications that don't use the property
> method, and only use the getter, it isn't any less change than the the
> first option.
>
>
> I propose to go with option #1 for maximum consistency and further
> propose to deprecate *not for removal* the misnamed methods.
>
>
> Comments?
>
> -- Kevin
>
> [1] https://github.com/openjdk/jdk/pull/4747
> [2] https://bugs.openjdk.java.net/browse/JDK-8270314
>
More information about the openjfx-dev
mailing list