On Sun, 14 Jan 2024 14:54:36 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

> Moves `SimpleSelector` and `CompoundSelector` to internal packages.
> 
> This can be done with only a minor API break, as `SimpleSelector` and 
> `CompoundSelector` were public before.  However, these classes could not be 
> constructed by 3rd parties.  The only way to access them was by doing a cast 
> (generally they're accessed via `Selector` not by their sub types).  The 
> reason they were public at all was because the CSS engine needs to be able to 
> access them from internal packages.
> 
> This change fixes a mistake (or possibly something that couldn't be modelled 
> at the time) when the CSS API was first made public. The intention was always 
> to have a `Selector` interface/abstract class, with private implementations 
> (`SimpleSelector` and `CompoundSelector`).
> 
> This PR as said has a small API break.  The other changes are (AFAICS) source 
> and binary compatible:
> 
> - Made `Selector` `sealed` only permitting `SimpleSelector` and 
> `CompoundSelector` -- as `Selector` had a package private constructor, there 
> are no concerns with pre-existing subclasses
> - `Selector` has a few more methods that are now `protected` -- given that 
> the class is now sealed, these modified methods are not accessible (they may 
> still require rudimentary documentation I suppose)
> - `Selector` now has a `public` default constructor -- as the class is 
> sealed, it is inaccessible
> - `SimpleSelector` and `CompoundSelector` have a few more `public` methods, 
> but they're internal now, so it is irrelevant
> - `createMatch` was implemented directly in `Selector` to avoid having to 
> expose package private fields in `Match` for use by `CompoundSelector`
> - No need anymore for the `SimpleSelectorShim`

This pull request has now been integrated.

Changeset: dad80e92
Author:    John Hendrikx <jhendr...@openjdk.org>
URL:       
https://git.openjdk.org/jfx/commit/dad80e9284fcde36aa0cac4e6459b6dbfd43ee13
Stats:     1836 lines in 14 files changed: 912 ins; 888 del; 36 mod

8323706: Remove SimpleSelector and CompoundSelector classes

Move SimpleSelector and CompoundSelector to internal packages

Reviewed-by: kcr, angorya

-------------

PR: https://git.openjdk.org/jfx/pull/1333

Reply via email to