From d0079ab66bd56446495362acaee05017098b8dbb Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 11 Sep 2020 17:58:12 +0200 Subject: [PATCH] UIDefaultsLoader: use class loader from FlatLaf.registerCustomDefaultsSource(String, ClassLoader) also for instantiating classes specified in values see commit b208017117503e25a9ea8a13a7e1b7e475828667 --- .../com/formdev/flatlaf/UIDefaultsLoader.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index d1303d48..8b47e1d0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -109,6 +109,14 @@ class UIDefaultsLoader } } + // collect addon class loaders + List addonClassLoaders = new ArrayList<>(); + for( FlatDefaultsAddon addon : addons ) { + ClassLoader addonClassLoader = addon.getClass().getClassLoader(); + if( !addonClassLoaders.contains( addonClassLoader ) ) + addonClassLoaders.add( addonClassLoader ); + } + // load custom properties files (usually provides by applications) List customDefaultsSources = FlatLaf.getCustomDefaultsSources(); int size = (customDefaultsSources != null) ? customDefaultsSources.size() : 0; @@ -119,6 +127,10 @@ class UIDefaultsLoader String packageName = (String) source; ClassLoader classLoader = (ClassLoader) customDefaultsSources.get( ++i ); + // use class loader also for instantiating classes specified in values + if( classLoader != null && !addonClassLoaders.contains( classLoader ) ) + addonClassLoaders.add( classLoader ); + packageName = packageName.replace( '.', '/' ); if( classLoader == null ) classLoader = FlatLaf.class.getClassLoader(); @@ -145,14 +157,6 @@ class UIDefaultsLoader } } - // collect addon class loaders - List addonClassLoaders = new ArrayList<>(); - for( FlatDefaultsAddon addon : addons ) { - ClassLoader addonClassLoader = addon.getClass().getClassLoader(); - if( !addonClassLoaders.contains( addonClassLoader ) ) - addonClassLoaders.add( addonClassLoader ); - } - // add additional defaults if( additionalDefaults != null ) properties.putAll( additionalDefaults );