testcontainers / testcontainers/testcontainers-java
[Bug]: HiveMQExtension / Class Loading Issue
Nessuno ha ancora preso questa issue.
- 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- 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