You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2017/03/31 06:45:46 UTC

[1/2] tapestry-5 git commit: TAP5-2546: use class loading lock for synchronization This does not change the previous behavior since PlasticClassLoader is not (yet) registered as parallel capable

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 <jo...@eddyson.de>
Authored: Fri Mar 31 08:40:44 2017 +0200
Committer: Jochen Kemnade <jo...@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);
+        }
     }
 }


[2/2] tapestry-5 git commit: TAP5-2546: register PlasticClassLoader as parallel capable PlasticClassLoader does not hold any internal state, so it is able to load classes in parallel.

Posted by jk...@apache.org.
TAP5-2546: register PlasticClassLoader as parallel capable
PlasticClassLoader does not hold any internal state, so it is able to load classes in parallel.


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

Branch: refs/heads/master
Commit: 627df8511604bc969af4e59ed34fb9578ed1586d
Parents: 77a2cc3
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Fri Mar 31 08:43:37 2017 +0200
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Fri Mar 31 08:43:37 2017 +0200

----------------------------------------------------------------------
 .../apache/tapestry5/internal/plastic/PlasticClassLoader.java  | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/627df851/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 715ddd4..a4ba43c 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
@@ -16,6 +16,12 @@ package org.apache.tapestry5.internal.plastic;
 
 public class PlasticClassLoader extends ClassLoader
 {
+    static
+    {
+        // TAP5-2546
+        ClassLoader.registerAsParallelCapable();
+    }
+
     private final ClassLoaderDelegate delegate;
 
     public PlasticClassLoader(ClassLoader parent, ClassLoaderDelegate delegate)