You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/10/24 10:53:18 UTC
svn commit: r1026749 -
/wicket/trunk/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
Author: mgrigorov
Date: Sun Oct 24 08:53:18 2010
New Revision: 1026749
URL: http://svn.apache.org/viewvc?rev=1026749&view=rev
Log:
Rollback the synchronization on DefaultClassResolver#classes. It seems it is needed to load only one class at a time, not to synchronize the map access.
See http://apache-wicket.1842946.n4.nabble.com/Re-svn-commit-r1026650-wicket-trunk-wicket-src-main-java-org-apache-wicket-application-DefaultClassRa-td3008647.html#a3008647
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java?rev=1026749&r1=1026748&r2=1026749&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java Sun Oct 24 08:53:18 2010
@@ -101,19 +101,23 @@ public final class DefaultClassResolver
}
else
{
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- if (loader == null)
+ // synchronize on the only class member to load only one class at a time and
+ // prevent LinkageError. See above for more info
+ synchronized (classes)
{
- loader = DefaultClassResolver.class.getClassLoader();
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ if (loader == null)
+ {
+ loader = DefaultClassResolver.class.getClassLoader();
+ }
+ // see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6500212
+ // clazz = loader.loadClass(classname);
+ clazz = Class.forName(classname, false, loader);
+ if (clazz == null)
+ {
+ throw new ClassNotFoundException(classname);
+ }
}
- // see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6500212
- // clazz = loader.loadClass(classname);
- clazz = Class.forName(classname, false, loader);
- if (clazz == null)
- {
- throw new ClassNotFoundException(classname);
- }
-
classes.put(classname, new WeakReference<Class<?>>(clazz));
}
}