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 <[email protected]>
Authored: Mon Jul 23 11:13:26 2012 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
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);
                        }

Reply via email to