testcontainers / testcontainers/testcontainers-java
[Bug]: HiveMQExtension / Class Loading Issue
Dieses Issue hat noch niemand übernommen.
- 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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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