You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2018/03/16 22:59:12 UTC
[12/12] bval git commit: make sure method-invocation-specified
participant objects always take precedence over XML-configured ones
make sure method-invocation-specified participant objects always take precedence over XML-configured ones
Project: http://git-wip-us.apache.org/repos/asf/bval/repo
Commit: http://git-wip-us.apache.org/repos/asf/bval/commit/f8da0211
Tree: http://git-wip-us.apache.org/repos/asf/bval/tree/f8da0211
Diff: http://git-wip-us.apache.org/repos/asf/bval/diff/f8da0211
Branch: refs/heads/bv2
Commit: f8da02117a9983615a5fc1095738f90a90c8b6b3
Parents: f783358
Author: Matt Benson <mb...@apache.org>
Authored: Fri Mar 16 17:58:52 2018 -0500
Committer: Matt Benson <mb...@apache.org>
Committed: Fri Mar 16 17:58:52 2018 -0500
----------------------------------------------------------------------
.../org/apache/bval/jsr/ConfigurationImpl.java | 41 ++++++++++++--------
1 file changed, 25 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/bval/blob/f8da0211/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
----------------------------------------------------------------------
diff --git a/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java b/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
index 3e2f678..b4d19f6 100644
--- a/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
+++ b/bval-jsr/src/main/java/org/apache/bval/jsr/ConfigurationImpl.java
@@ -63,26 +63,35 @@ import org.apache.commons.weaver.privilizer.Privileged;
public class ConfigurationImpl implements ApacheValidatorConfiguration, ConfigurationState {
private class LazyParticipant<T> extends Lazy<T> {
+ private boolean locked;
private LazyParticipant(Supplier<T> init) {
super(init);
}
- @Override
- public Lazy<T> reset(Supplier<T> init) {
- try {
- return super.reset(init);
- } finally {
- ConfigurationImpl.this.prepared = false;
- }
- }
-
ConfigurationImpl override(T value) {
if (value != null) {
- reset(() -> value);
+ synchronized (this) {
+ if (!locked) {
+ try {
+ reset(() -> value);
+ } finally {
+ ConfigurationImpl.this.prepared = false;
+ }
+ }
+ }
}
return ConfigurationImpl.this;
}
+
+ synchronized ConfigurationImpl externalOverride(T value) {
+ locked = false;
+ try {
+ return override(value);
+ } finally {
+ locked = true;
+ }
+ }
}
/**
@@ -187,7 +196,7 @@ public class ConfigurationImpl implements ApacheValidatorConfiguration, Configur
*/
@Override
public ConfigurationImpl messageInterpolator(MessageInterpolator resolver) {
- return messageInterpolator.override(resolver);
+ return messageInterpolator.externalOverride(resolver);
}
/**
@@ -195,7 +204,7 @@ public class ConfigurationImpl implements ApacheValidatorConfiguration, Configur
*/
@Override
public ApacheValidatorConfiguration traversableResolver(TraversableResolver resolver) {
- return traversableResolver.override(resolver);
+ return traversableResolver.externalOverride(resolver);
}
/**
@@ -203,17 +212,17 @@ public class ConfigurationImpl implements ApacheValidatorConfiguration, Configur
*/
@Override
public ConfigurationImpl constraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory) {
- return this.constraintValidatorFactory.override(constraintValidatorFactory);
+ return this.constraintValidatorFactory.externalOverride(constraintValidatorFactory);
}
@Override
public ApacheValidatorConfiguration parameterNameProvider(ParameterNameProvider parameterNameProvider) {
- return this.parameterNameProvider.override(parameterNameProvider);
+ return this.parameterNameProvider.externalOverride(parameterNameProvider);
}
@Override
public ApacheValidatorConfiguration clockProvider(ClockProvider clockProvider) {
- return this.clockProvider.override(clockProvider);
+ return this.clockProvider.externalOverride(clockProvider);
}
/**
@@ -469,7 +478,7 @@ public class ConfigurationImpl implements ApacheValidatorConfiguration, Configur
final String className = getClassName.get();
if (className != null) {
final Class<T> t = loadClass(className);
- participant.reset(() -> newInstance(t));
+ participant.override(newInstance(t));
}
}