You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2017/06/21 17:13:32 UTC

tomee git commit: fixing LazyValidatorFactory serialization

Repository: tomee
Updated Branches:
  refs/heads/master 51e607b81 -> 198d0a9eb


fixing LazyValidatorFactory serialization


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/198d0a9e
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/198d0a9e
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/198d0a9e

Branch: refs/heads/master
Commit: 198d0a9ebee768dc4d977e9201fb885f50e8b128
Parents: 51e607b
Author: rmannibucau <rm...@apache.org>
Authored: Wed Jun 21 19:13:27 2017 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Jun 21 19:13:27 2017 +0200

----------------------------------------------------------------------
 .../assembler/classic/LazyValidatorFactory.java |  4 +-
 .../assembler/classic/ValidatorBuilder.java     | 43 ++++++++++++++------
 2 files changed, 32 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/198d0a9e/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/LazyValidatorFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/LazyValidatorFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/LazyValidatorFactory.java
index 57b2c42..5de3923 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/LazyValidatorFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/LazyValidatorFactory.java
@@ -25,8 +25,8 @@ import java.util.concurrent.locks.ReentrantLock;
 
 // TODO: make it generic (LazyDelegate + Factory + refactor LazyValidator)
 public class LazyValidatorFactory implements InvocationHandler, Serializable {
-    private final ReentrantLock lock = new ReentrantLock();
-    private final ClassLoader loader;
+    private transient final ReentrantLock lock = new ReentrantLock();
+    private transient final ClassLoader loader;
     private final ValidationInfo info;
     private volatile ValidatorFactory factory;
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/198d0a9e/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
index d5c11d0..18c4e6f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
@@ -17,6 +17,7 @@
 
 package org.apache.openejb.assembler.classic;
 
+import org.apache.openejb.bval.ValidatorUtil;
 import org.apache.openejb.jee.bval.DefaultValidatedExecutableTypesType;
 import org.apache.openejb.jee.bval.ExecutableValidationType;
 import org.apache.openejb.jee.bval.PropertyType;
@@ -31,6 +32,7 @@ import org.apache.webbeans.container.BeanManagerImpl;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.InjectionTarget;
+import javax.naming.NamingException;
 import javax.validation.BootstrapConfiguration;
 import javax.validation.Configuration;
 import javax.validation.ConstraintValidatorFactory;
@@ -415,55 +417,70 @@ public final class ValidatorBuilder {
         }
     }
 
-    private static final class OpenEJBValidatorFactory implements ValidatorFactory {
-        private final ValidatorFactory delegate;
-        private final Collection<Releasable<?>> toRelease;
+    private static final class OpenEJBValidatorFactory implements ValidatorFactory, Serializable {
+        private transient ValidatorFactory delegate;
+        private transient Collection<Releasable<?>> toRelease;
 
         public OpenEJBValidatorFactory(final ValidatorFactory validatorFactory, final Collection<Releasable<?>> releasables) {
             delegate = validatorFactory;
             toRelease = releasables;
         }
 
+        private ValidatorFactory delegate() {
+            if (delegate != null) {
+                return delegate;
+            }
+            try {
+                return ValidatorUtil.lookupFactory();
+            } catch (final NamingException e) {
+                return Validation.buildDefaultValidatorFactory();
+            }
+        }
+
         @Override
         public Validator getValidator() {
-            return delegate.getValidator();
+            return delegate().getValidator();
         }
 
         @Override
         public ValidatorContext usingContext() {
-            return delegate.usingContext();
+            return delegate().usingContext();
         }
 
         @Override
         public MessageInterpolator getMessageInterpolator() {
-            return delegate.getMessageInterpolator();
+            return delegate().getMessageInterpolator();
         }
 
         @Override
         public TraversableResolver getTraversableResolver() {
-            return delegate.getTraversableResolver();
+            return delegate().getTraversableResolver();
         }
 
         @Override
         public ConstraintValidatorFactory getConstraintValidatorFactory() {
-            return delegate.getConstraintValidatorFactory();
+            return delegate().getConstraintValidatorFactory();
         }
 
         @Override
         public <T> T unwrap(final Class<T> type) {
-            return delegate.unwrap(type);
+            return delegate().unwrap(type);
         }
 
         @Override
         public ParameterNameProvider getParameterNameProvider() {
-            return delegate.getParameterNameProvider();
+            return delegate().getParameterNameProvider();
         }
 
         @Override
         public void close() {
-            delegate.close();
-            for (final Releasable<?> r : toRelease) {
-                r.release();
+            if (delegate != null) {
+                delegate.close();
+            }
+            if (toRelease != null) {
+                for (final Releasable<?> r : toRelease) {
+                    r.release();
+                }
             }
         }
     }