[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tapestry-dev
Subject:    [1/2] tapestry-5 git commit: TAP5-2546: use class loading lock for synchronization This does not cha
From:       jkemnade () apache ! org
Date:       2017-03-31 6:45:46
Message-ID: 260e231f41a44a0589c04cec5c686032 () git ! apache ! org
[Download RAW message or body]

Repository: tapestry-5
Updated Branches:
  refs/heads/master c0fffb902 -> 627df8511


TAP5-2546: use class loading lock for synchronization
This does not change the previous behavior since PlasticClassLoader is not (yet) \
registered as parallel capable


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/77a2cc37
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/77a2cc37
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/77a2cc37

Branch: refs/heads/master
Commit: 77a2cc3769450d4a90004b1d72ce75c156c6a711
Parents: c0fffb9
Author: Jochen Kemnade <jochen.kemnade@eddyson.de>
Authored: Fri Mar 31 08:40:44 2017 +0200
Committer: Jochen Kemnade <jochen.kemnade@eddyson.de>
Committed: Fri Mar 31 08:40:44 2017 +0200

----------------------------------------------------------------------
 .../internal/plastic/PlasticClassLoader.java    | 34 ++++++++++++--------
 1 file changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/77a2cc37/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassLoader.java
                
----------------------------------------------------------------------
diff --git a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassLoader.java \
b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassLoader.java \
                index e940113..715ddd4 100644
--- a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassLoader.java
                
+++ b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassLoader.java
 @@ -26,29 +26,35 @@ public class PlasticClassLoader extends ClassLoader
     }
 
     @Override
-    protected synchronized Class<?> loadClass(String name, boolean resolve) throws \
ClassNotFoundException +    protected Class<?> loadClass(String name, boolean \
resolve) throws ClassNotFoundException  {
-        Class<?> loadedClass = findLoadedClass(name);
+        synchronized(getClassLoadingLock(name))
+        {
+            Class<?> loadedClass = findLoadedClass(name);
 
-        if (loadedClass != null)
-            return loadedClass;
+            if (loadedClass != null)
+                return loadedClass;
 
-        if (delegate.shouldInterceptClassLoading(name))
-        {
-            Class<?> c = delegate.loadAndTransformClass(name);
+            if (delegate.shouldInterceptClassLoading(name))
+            {
+                Class<?> c = delegate.loadAndTransformClass(name);
 
-            if (resolve)
-                resolveClass(c);
+                if (resolve)
+                    resolveClass(c);
 
-            return c;
-        } else
-        {
-            return super.loadClass(name, resolve);
+                return c;
+            } else
+            {
+                return super.loadClass(name, resolve);
+            }
         }
     }
 
     public synchronized Class<?> defineClassWithBytecode(String className, byte[] \
bytecode)  {
-        return defineClass(className, bytecode, 0, bytecode.length);
+        synchronized(getClassLoadingLock(className))
+        {
+            return defineClass(className, bytecode, 0, bytecode.length);
+        }
     }
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic