Skip to content

Commit 663ca49

Browse files
committed
resource message cache
1 parent 909f1b3 commit 663ca49

File tree

3 files changed

+13
-27
lines changed

3 files changed

+13
-27
lines changed

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,11 @@
1414

1515
/** Builds and caches the ValidationAdapter adapters for DValidator. */
1616
final class CoreAdapterBuilder {
17-
17+
public static final ValidationAdapter NOOP = (type, req, propertyName) -> true;
1818
private final DValidator context;
1919
private final List<ValidationContext.AdapterFactory> factories = new ArrayList<>();
2020
private final List<ValidationContext.AnnotationFactory> annotationFactories = new ArrayList<>();
2121
private final Map<Object, ValidationAdapter<?>> adapterCache = new ConcurrentHashMap<>();
22-
private final MessageInterpolator interpolator;
2322

2423
CoreAdapterBuilder(
2524
DValidator context,
@@ -30,7 +29,6 @@ final class CoreAdapterBuilder {
3029
this.annotationFactories.addAll(userAnnotationFactories);
3130
this.annotationFactories.add(BasicAdapters.FACTORY);
3231
this.annotationFactories.add(NumberAdapters.FACTORY);
33-
interpolator = context.interpolator();
3432
}
3533

3634
/** Return the adapter from cache if exists else return null. */
@@ -76,6 +74,6 @@ <T> ValidationAdapter<T> buildAnnotation(Class<? extends Annotation> cls, Map<St
7674
}
7775
}
7876
// unknown annotations have noop
79-
return NoopAnnotationValidator.INSTANCE;
77+
return NOOP;
8078
}
8179
}

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ final class DResourceBundleManager {
1616
private final Map<Locale, List<ResourceBundle>> map = new HashMap<>();
1717
private static final List<ResourceBundle> EMPTY = List.of();
1818
private static final String DEFAULT_BUNDLE = "io.avaje.validation.Messages";
19+
private final Map<String, String> messageCache = new HashMap<>();
1920

2021
DResourceBundleManager(
2122
List<String> names, List<ResourceBundle> providedBundles, LocaleResolver localeResolver) {
@@ -61,13 +62,16 @@ private void addBundle(final String name, final Locale locale) {
6162
@Nullable
6263
public String message(String template, Locale resolvedLocale) {
6364

64-
for (final var bundle : map.getOrDefault(resolvedLocale, EMPTY)) {
65+
return messageCache.computeIfAbsent(
66+
template + resolvedLocale,
67+
k -> {
68+
for (final var bundle : map.getOrDefault(resolvedLocale, EMPTY)) {
6569

66-
if (bundle.containsKey(template)) {
67-
return bundle.getString(template);
68-
}
69-
}
70-
71-
return null;
70+
if (bundle.containsKey(template)) {
71+
return bundle.getString(template);
72+
}
73+
}
74+
return null;
75+
});
7276
}
7377
}

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

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)