eclipse-windowbuilder / eclipse-windowbuilder/windowbuilder

Remove dependency to BurningWave

Abierto
#1,307 1 comentario 0 reacciones 0 asignados Ver en GitHub
dependencies
Lenguaje dominante
Java
Estrellas
97
Forks
34
Merge medio
21 h 38 min
PR fusionados (30 d)
29

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza localizando cada uso de BurningWave en WindowBuilder y siguiendo las rutas de acceso reflexivo afectadas por el sistema de módulos de Java. Revisa el contexto de las issues #1305, #45, #1033, #1034 y #1039. Se considera terminado cuando BurningWave se haya eliminado, se detecten las propiedades de Swing inaccesibles y los usuarios reciban un error claro que explique qué acceso al módulo es necesario.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
desktop, tooling
Tipo de issue
Refactorización
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.