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);
}