eclipse-windowbuilder / eclipse-windowbuilder/windowbuilder

Remove dependency to BurningWave

Aperta
#1,307 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
dependencies
Lingua principale
Java
Stelle
97
Fork
34
Merge medio
21h 38m
PR unite (30g)
29

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia individuando ogni utilizzo di BurningWave in WindowBuilder e tracciando i percorsi di accesso riflessivo interessati dal sistema dei moduli Java. Esamina il contesto delle issue #1305, #45, #1033, #1034 e #1039. Il lavoro è completato quando BurningWave viene rimosso, le proprietà Swing non accessibili vengono rilevate e gli utenti ricevono un errore chiaro che spiega quale accesso al modulo è necessario.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
desktop, tooling
Tipo di issue
Refactoring
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.