From 246888c949b1f7df9d8cb2e613d9666d061efc76 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 18 Dec 2025 14:29:00 +0100 Subject: [PATCH] pass the classloader in getTypeSystemOnClasspath --- .../xmlbeans/impl/schema/SchemaTypeLoaderImpl.java | 3 ++- .../xmlbeans/impl/schema/SchemaTypeSystemImpl.java | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java index 1501f89b7..86261dfd9 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java @@ -314,7 +314,8 @@ SchemaTypeSystemImpl typeSystemForClassname(String searchdir, String name) { } SchemaTypeSystemImpl getTypeSystemOnClasspath(String name) { - return _classpathTypeSystems.computeIfAbsent(name, n -> new SchemaTypeSystemImpl(_resourceLoader, n, this)); + return _classpathTypeSystems.computeIfAbsent(name, + n -> new SchemaTypeSystemImpl(_resourceLoader, _classLoader, n, this)); } SchemaTypeSystemImpl getTypeSystemOnClassloader(String name) { diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java index ed6b7919f..f55b0e012 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java @@ -222,9 +222,18 @@ public static SchemaTypeSystemImpl forName(String name, ClassLoader loader) { } public SchemaTypeSystemImpl(ResourceLoader resourceLoader, String name, SchemaTypeLoader linker) { + this(resourceLoader, null, name, linker); + } + + /** + * @since 5.4.0 + */ + public SchemaTypeSystemImpl(ResourceLoader resourceLoader, ClassLoader classLoader, + String name, SchemaTypeLoader linker) { _name = name; _linker = linker; _resourceLoader = resourceLoader; + _classloader = classLoader; try { initFromHeader(); } catch (RuntimeException | Error e) {