testcontainers / testcontainers/testcontainers-java

[Bug]: HiveMQExtension / Class Loading Issue

Aperta
#10,074 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

modules/hivemq type/bug
Lingua principale
Java
Stelle
8.7k
Fork
1.9k
Merge medio
2g 17h
PR unite (30g)
9

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dal metodo putSubclassesIntoJar mostrato nel report e verifica come vengono convertiti i nomi delle classi di ClassPool prima della chiamata a JavaArchive.addClass. Riproduci la configurazione di HiveMQExtension con addAdditionalClass e una voce [B, quindi verifica che il caricamento delle classi venga completato senza l’eccezione segnalata e che la gestione esistente di [L rimanga invariata.

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

Valutazione

Stack tecnologico
java
Ambito
testing-qa
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.