Skip to content

Commit ac0ef3b

Browse files
committed
Refresh language registry when classpath changes
1 parent 25dbee3 commit ac0ef3b

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import org.apache.commons.lang3.StringUtils;
1818
import org.checkerframework.checker.nullness.qual.NonNull;
19+
import org.checkerframework.checker.nullness.qual.Nullable;
1920
import org.reactfx.value.SuspendableVar;
2021
import org.reactfx.value.Val;
2122
import org.reactfx.value.Var;
@@ -76,6 +77,8 @@ public class ASTManagerImpl implements ASTManager {
7677

7778
private final Var<Map<String, String>> ruleProperties = Var.newSimpleVar(Collections.emptyMap());
7879

80+
private @Nullable ClassLoader currentClassloader;
81+
7982
public ASTManagerImpl(DesignerRoot owner) {
8083
this.designerRoot = owner;
8184

@@ -233,12 +236,14 @@ private LanguageProcessorRegistry refreshRegistry(LanguageVersion version, Class
233236
langProperties,
234237
NOOP_REPORTER);
235238
lpRegistry.setValue(newRegistry);
239+
currentClassloader = classLoader;
236240
return newRegistry;
237241
}
238242

239243
// already created, need to check that the version is the same
240244
if (!current.getLanguages().getLanguages().contains(version.getLanguage())
241-
|| !current.getProcessor(version.getLanguage()).getLanguageVersion().equals(version)) {
245+
|| !current.getProcessor(version.getLanguage()).getLanguageVersion().equals(version)
246+
|| !Objects.equals(currentClassloader, classLoader) ) {
242247
// current is invalid, recreate it
243248
current.close();
244249
lpRegistry.setValue(null);

0 commit comments

Comments
 (0)