eclipse-windowbuilder / eclipse-windowbuilder/windowbuilder

Remove dependency to BurningWave

Offen
#1,307 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
dependencies
Vorherrschende Sprache
Java
Sterne
97
Forks
34
Ø Merge
21 Std. 38 Min.
Gemergte PRs (30 T.)
29

Beschreibung

In continuation of https://github.com/eclipse-windowbuilder/windowbuilder/issues/1305, we should try to get rid of BurningWave alltogether.

This dependency was initially added as a fix for https://github.com/eclipse-windowbuilder/windowbuilder/issues/45 to circumvent the increasingly stricter rules of newer Java release. Additionally, it is required to access the internal fields of Swing and SWT components during design time.

However, WindowBuilder has evolved quite a lot since then. The dependency to CGLib, which was responsible for the initial problem, has long since removed by ByteBuddy. Furthermore, reflective access has become much more robust via e.g. #1033, #1034 and #1039.

The only instances where this dependency becomes necessary is for projects using the module system and which don't expose their properties. This in short means: Swing.

There are certain properties like [JFrame.isRootPaneCheckingEnabled()](https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/JFrame.html#isRootPaneCheckingEnabled()) that are not publicly accessible.

Image

But the Oracle team has made it very clear that our use case is not supported and tools such as BurningWave will inevitably stop working.

For WindowBuilder, this means that we can't break encapsulation and instead have to rely on the user to explicitly open those modules for us. It is therefore necessary to detect such a lack of permissions and report a proper error message.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, jede WindowBuilder-Verwendung von BurningWave zu lokalisieren und die durch das Java-Modulsystem betroffenen reflektiven Zugriffspfade nachzuverfolgen. Prüfe den Kontext aus den Issues #1305, #45, #1033, #1034 und #1039. Als erledigt gilt die Aufgabe, wenn BurningWave entfernt ist, nicht zugängliche Swing-Eigenschaften erkannt werden und Benutzer eine klare Fehlermeldung erhalten, die erklärt, welcher Modulzugriff erforderlich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
desktop, tooling
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.