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 2012/07/23 10:14:04 UTC

git commit: WICKET-4663 LazyInitProxyFactory uses wrong ClassLoader in OSGi environment

Updated Branches:
  refs/heads/wicket-1.5.x be9300fe2 -> 29844aa3f


WICKET-4663 LazyInitProxyFactory uses wrong ClassLoader in OSGi environment


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/29844aa3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/29844aa3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/29844aa3

Branch: refs/heads/wicket-1.5.x
Commit: 29844aa3f3c29f4e58d7cf76b3975999d39ca739
Parents: be9300f
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jul 23 11:13:26 2012 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jul 23 11:13:26 2012 +0300

----------------------------------------------------------------------
 .../wicket/application/AbstractClassResolver.java  |    2 +-
 .../wicket/application/DefaultClassResolver.java   |    2 +-
 .../apache/wicket/proxy/LazyInitProxyFactory.java  |   19 +++++++++++++-
 3 files changed, 19 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/29844aa3/wicket-core/src/main/java/org/apache/wicket/application/AbstractClassResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/application/AbstractClassResolver.java b/wicket-core/src/main/java/org/apache/wicket/application/AbstractClassResolver.java
index 584d928..c9f7d5b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/application/AbstractClassResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/application/AbstractClassResolver.java
@@ -121,7 +121,7 @@ public abstract class AbstractClassResolver implements IClassResolver
 	 * 
 	 * @return the {@link ClassLoader} to be used for resolving classes
 	 */
-	protected abstract ClassLoader getClassLoader();
+	public abstract ClassLoader getClassLoader();
 
 	public Iterator<URL> getResources(final String name)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/29844aa3/wicket-core/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/application/DefaultClassResolver.java b/wicket-core/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
index e83e417..eb9fe7d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
@@ -34,7 +34,7 @@ public final class DefaultClassResolver extends AbstractClassResolver
 	 *         {@link ClassLoader} that was used to load this class.
 	 */
 	@Override
-	protected ClassLoader getClassLoader()
+	public ClassLoader getClassLoader()
 	{
 		ClassLoader loader = Thread.currentThread().getContextClassLoader();
 		if (loader == null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/29844aa3/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java
----------------------------------------------------------------------
diff --git a/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java b/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java
index b442d14..e2a3290 100644
--- a/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java
+++ b/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java
@@ -30,9 +30,11 @@ import net.sf.cglib.core.Predicate;
 import net.sf.cglib.proxy.Enhancer;
 import net.sf.cglib.proxy.MethodInterceptor;
 import net.sf.cglib.proxy.MethodProxy;
-
+import org.apache.wicket.Application;
 import org.apache.wicket.IClusterable;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.application.AbstractClassResolver;
+import org.apache.wicket.application.IClassResolver;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.lang.WicketObjects;
 
@@ -136,7 +138,20 @@ public class LazyInitProxyFactory
 
 			try
 			{
-				return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
+				ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+				if (Application.exists())
+				{
+					IClassResolver classResolver = Application.get()
+							.getApplicationSettings()
+							.getClassResolver();
+
+					if (classResolver instanceof AbstractClassResolver)
+					{
+						classLoader = ((AbstractClassResolver) classResolver).getClassLoader();
+					}
+				}
+
+				return Proxy.newProxyInstance(classLoader,
 					new Class[] { type, Serializable.class, ILazyInitProxy.class,
 							IWriteReplace.class }, handler);
 			}