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:05:55 UTC
[2/2] git commit: WICKET-4663 LazyInitProxyFactory uses wrong
ClassLoader in OSGi environment
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/9dda5dce
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/9dda5dce
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/9dda5dce
Branch: refs/heads/master
Commit: 9dda5dce7889de626b5c44ea22390451828879a2
Parents: 325049d
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jul 23 11:03:35 2012 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jul 23 11:03:35 2012 +0300
----------------------------------------------------------------------
.../wicket/application/AbstractClassResolver.java | 7 -----
.../wicket/application/CompoundClassResolver.java | 19 +++++++++++++
.../wicket/application/DefaultClassResolver.java | 2 +-
.../apache/wicket/application/IClassResolver.java | 6 ++++
.../apache/wicket/proxy/LazyInitProxyFactory.java | 21 ++++++++++++--
5 files changed, 44 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/9dda5dce/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 dbd4fe2..e2a4997 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
@@ -117,13 +117,6 @@ public abstract class AbstractClassResolver implements IClassResolver
return clazz;
}
- /**
- * Returns the {@link ClassLoader} to be used for resolving classes
- *
- * @return the {@link ClassLoader} to be used for resolving classes
- */
- protected abstract ClassLoader getClassLoader();
-
@Override
public Iterator<URL> getResources(final String name)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/9dda5dce/wicket-core/src/main/java/org/apache/wicket/application/CompoundClassResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/application/CompoundClassResolver.java b/wicket-core/src/main/java/org/apache/wicket/application/CompoundClassResolver.java
index 8a39a9c..f73bae3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/application/CompoundClassResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/application/CompoundClassResolver.java
@@ -109,6 +109,25 @@ public class CompoundClassResolver implements IClassResolver
}
/**
+ * @return the class loader returned by the first registered IClassResolver. If there is no
+ * registered IClassResolver then the current thread's context class loader will be returned.
+ */
+ @Override
+ public ClassLoader getClassLoader()
+ {
+ final ClassLoader classLoader;
+ if (resolvers.isEmpty() == false)
+ {
+ classLoader = resolvers.iterator().next().getClassLoader();
+ }
+ else
+ {
+ classLoader = Thread.currentThread().getContextClassLoader();
+ }
+ return classLoader;
+ }
+
+ /**
* Adds a resolver
*
* @param resolver
http://git-wip-us.apache.org/repos/asf/wicket/blob/9dda5dce/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/9dda5dce/wicket-core/src/main/java/org/apache/wicket/application/IClassResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/application/IClassResolver.java b/wicket-core/src/main/java/org/apache/wicket/application/IClassResolver.java
index c7e9cf9..6fcfe04 100644
--- a/wicket-core/src/main/java/org/apache/wicket/application/IClassResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/application/IClassResolver.java
@@ -47,4 +47,10 @@ public interface IClassResolver
*/
Iterator<URL> getResources(String name);
+ /**
+ * Returns the {@link ClassLoader} to be used for resolving classes
+ *
+ * @return the {@link ClassLoader} to be used for resolving classes
+ */
+ ClassLoader getClassLoader();
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/wicket/blob/9dda5dce/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 c23ddfd..94a2875 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,10 +30,12 @@ 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.util.io.IClusterable;
+import org.apache.wicket.Application;
import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.model.IModel;
+import org.apache.wicket.application.IClassResolver;
import org.apache.wicket.core.util.lang.WicketObjects;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.io.IClusterable;
/**
* A factory class that creates lazy init proxies given a type and a {@link IProxyTargetLocator}
@@ -135,7 +137,20 @@ public class LazyInitProxyFactory
try
{
- return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ if (Application.exists())
+ {
+ IClassResolver classResolver = (IClassResolver) Application.get()
+ .getApplicationSettings()
+ .getClassResolver();
+
+ if (classResolver != null)
+ {
+ classLoader = classResolver.getClassLoader();
+ }
+ }
+
+ return Proxy.newProxyInstance(classLoader,
new Class[] { type, Serializable.class, ILazyInitProxy.class,
IWriteReplace.class }, handler);
}