Skip to content

Commit 044a324

Browse files
authored
For custom ClassLoader support, use non-static ExtensionLoader (#307)
1 parent e3ffef4 commit 044a324

File tree

2 files changed

+17
-17
lines changed

2 files changed

+17
-17
lines changed

validator/src/main/java/io/avaje/validation/core/DValidator.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -286,13 +286,12 @@ public Builder messageInterpolator(MessageInterpolator interpolator) {
286286
return this;
287287
}
288288

289-
private void registerComponents() {
290-
ExtensionLoader.init(classLoader);
289+
private void registerComponents(ExtensionLoader loader) {
291290
// first register all user defined ValidatorCustomizer
292-
for (final ValidatorCustomizer next : ExtensionLoader.customizers()) {
291+
for (final ValidatorCustomizer next : loader.customizers()) {
293292
next.customize(this);
294293
}
295-
for (final GeneratedComponent next : ExtensionLoader.generatedComponents()) {
294+
for (final GeneratedComponent next : loader.generatedComponents()) {
296295
next.customize(this);
297296
}
298297
}
@@ -304,12 +303,13 @@ public Validator build() {
304303
return DEFAULT;
305304
}
306305

307-
registerComponents();
306+
final var loader = new ExtensionLoader(classLoader);
307+
registerComponents(loader);
308308

309309
final var localeResolver = new LocaleResolver(defaultLocale, otherLocales);
310310
final var interpolator =
311311
Optional.ofNullable(this.userInterpolator)
312-
.or(ExtensionLoader::interpolator)
312+
.or(loader::interpolator)
313313
.orElseGet(BasicMessageInterpolator::new);
314314

315315
return new DValidator(

validator/src/main/java/io/avaje/validation/core/ExtensionLoader.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
/** Load all the services using the common service interface. */
1616
final class ExtensionLoader {
1717

18-
private static final List<GeneratedComponent> generatedComponents = new ArrayList<>();
19-
private static final List<ValidatorCustomizer> customizers = new ArrayList<>();
20-
private static final List<AdapterFactory> adapterFactories = new ArrayList<>();
21-
private static final List<AnnotationFactory> annotationFactories = new ArrayList<>();
22-
private static Optional<MessageInterpolator> interpolator = Optional.empty();
18+
private final List<GeneratedComponent> generatedComponents = new ArrayList<>();
19+
private final List<ValidatorCustomizer> customizers = new ArrayList<>();
20+
private final List<AdapterFactory> adapterFactories = new ArrayList<>();
21+
private final List<AnnotationFactory> annotationFactories = new ArrayList<>();
22+
private Optional<MessageInterpolator> interpolator = Optional.empty();
2323

24-
static void init(ClassLoader classLoader) {
24+
ExtensionLoader(ClassLoader classLoader) {
2525
for (var spi : ServiceLoader.load(ValidationExtension.class, classLoader)) {
2626
if (spi instanceof GeneratedComponent gc) {
2727
generatedComponents.add(gc);
@@ -37,23 +37,23 @@ static void init(ClassLoader classLoader) {
3737
}
3838
}
3939

40-
static Optional<MessageInterpolator> interpolator() {
40+
Optional<MessageInterpolator> interpolator() {
4141
return interpolator;
4242
}
4343

44-
static List<GeneratedComponent> generatedComponents() {
44+
List<GeneratedComponent> generatedComponents() {
4545
return generatedComponents;
4646
}
4747

48-
static List<ValidatorCustomizer> customizers() {
48+
List<ValidatorCustomizer> customizers() {
4949
return customizers;
5050
}
5151

52-
static List<AdapterFactory> adapterFactories() {
52+
List<AdapterFactory> adapterFactories() {
5353
return adapterFactories;
5454
}
5555

56-
static List<AnnotationFactory> annotationFactories() {
56+
List<AnnotationFactory> annotationFactories() {
5757
return annotationFactories;
5858
}
5959
}

0 commit comments

Comments
 (0)