TreeTableCell: Misnamed / inconsistent methods for row and column properties
Kevin Rushforth
kevin.rushforth at oracle.com
Wed Jul 14 12:57:57 UTC 2021
PR #575, which implements option 2, is now RFR.
-- Kevin
On 7/13/2021 7:58 AM, Kevin Rushforth wrote:
> Here is a Draft PR that implements option 2:
>
> https://github.com/openjdk/jfx/pull/575
>
> It also fixes two additional issues with the properties:
>
> * The docs for each property is on a private property field that does
> have tree in the name, which results in no docs being generated for
> either the tableRow or tableColumn property.
>
> * The implementation of the tableRowProperty() method returns the
> writable property by mistake rather than the read-only property that
> is specified by the method's return type.
>
> I will likely make it RFR tomorrow, and plan to target it to jfx17.
>
> -- Kevin
>
>
> On 7/12/2021 2:55 PM, Kevin Rushforth wrote:
>> 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