testcontainers / testcontainers/testcontainers-java

[Bug]: HiveMQExtension / Class Loading Issue

Offen
#10,074 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

modules/hivemq type/bug
Vorherrschende Sprache
Java
Sterne
8.7k
Forks
1.9k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
9

Beschreibung

Module

HiveMQ

Testcontainers version

1.20.6

Using the latest Testcontainers version?

Yes

Host OS

Linux

Host Arch

x64

Docker version
27.4
What happened?

Hello,

if you want to proplery JUnit Test a HiveMQExtension you need to unfortunately add all depencies used via the method "addAdditionalClass". However the following code leads to an exception "Unclosed character class near index 6
/[B$.*" due to following code:

    private void putSubclassesIntoJar(
        final @NotNull String extensionId,
        final @Nullable Class<?> clazz,
        final @NotNull JavaArchive javaArchive
    ) throws NotFoundException {
        if (clazz != null) {
            final Set<String> subClassNames = ClassPool
                .getDefault()
                .get(clazz.getName())
                .getClassFile()
                .getConstPool()
                .getClassNames();
            for (final String subClassName : subClassNames) {
                final String className = subClassName.replaceAll("/", ".");

                if (!className.startsWith("[L")) {
                    LOGGER.debug("Trying to package subclass '{}' into extension '{}'.", className, extensionId);
                    javaArchive.addClass(className);
                } else {
                    LOGGER.debug("Class '{}' will be ignored.", className);
                }
            }
        }
    }

Based on inpuit "subClassNames" can include "[B" in additition to "[L" (already checked). I would propose to add another case OR allow the proplery extend this class in general (unfortunately private constructor) ...

Relevant log output

Additional Information

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit der im Bericht gezeigten Methode putSubclassesIntoJar und untersuchen Sie, wie die Klassennamen von ClassPool konvertiert werden, bevor JavaArchive.addClass aufgerufen wird. Reproduzieren Sie die HiveMQExtension-Konfiguration mit addAdditionalClass und einem [B-Eintrag. Überprüfen Sie anschließend, dass das Laden der Klassen ohne die gemeldete Ausnahme abgeschlossen wird und die bestehende [L-Behandlung unverändert bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
testing-qa
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

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