From 0ca434b1796182f40b19a3ac3802770ccfe72e42 Mon Sep 17 00:00:00 2001 From: Zbynek Konecny Date: Thu, 16 Oct 2025 00:25:52 +0200 Subject: [PATCH] Refresh language registry when classpath changes --- .../pmd/util/fxdesigner/app/services/ASTManagerImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java index 23be9d67..7e93e964 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java @@ -16,6 +16,7 @@ import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.reactfx.value.SuspendableVar; import org.reactfx.value.Val; import org.reactfx.value.Var; @@ -76,6 +77,8 @@ public class ASTManagerImpl implements ASTManager { private final Var> ruleProperties = Var.newSimpleVar(Collections.emptyMap()); + private @Nullable ClassLoader currentClassloader; + public ASTManagerImpl(DesignerRoot owner) { this.designerRoot = owner; @@ -233,12 +236,14 @@ private LanguageProcessorRegistry refreshRegistry(LanguageVersion version, Class langProperties, NOOP_REPORTER); lpRegistry.setValue(newRegistry); + currentClassloader = classLoader; return newRegistry; } // already created, need to check that the version is the same if (!current.getLanguages().getLanguages().contains(version.getLanguage()) - || !current.getProcessor(version.getLanguage()).getLanguageVersion().equals(version)) { + || !current.getProcessor(version.getLanguage()).getLanguageVersion().equals(version) + || !Objects.equals(currentClassloader, classLoader)) { // current is invalid, recreate it current.close(); lpRegistry.setValue(null);