Author: ivaynberg Date: Thu Aug 30 08:43:58 2007 New Revision: 571213 URL: http://svn.apache.org/viewvc?rev=571213&view=rev Log: WICKET-906
Modified: wicket/trunk/jdk-1.4/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java Modified: wicket/trunk/jdk-1.4/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java?rev=571213&r1=571212&r2=571213&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java (original) +++ wicket/trunk/jdk-1.4/wicket-ioc/src/main/java/org/apache/wicket/proxy/LazyInitProxyFactory.java Thu Aug 30 08:43:58 2007 @@ -23,9 +23,12 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import java.util.Arrays; +import java.util.List; import org.apache.wicket.IClusterable; import org.apache.wicket.model.IModel; +import org.apache.wicket.util.lang.Classes; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; @@ -62,7 +65,7 @@ * * Object locateProxyObject() * { - * MyApplication app = (MyApplication) Application.get(); + * MyApplication app = (MyApplication)Application.get(); * return app.getUserService(); * } * } @@ -116,10 +119,11 @@ */ public static Object createProxy(Class type, IProxyTargetLocator locator) { - if (type == String.class) + if (Classes.isPrimitive(type)) { - // We special-case Strings as sometimes people use these as SpringBeans (WICKET-603). - return locator.locateProxyTarget(); + // We special-case primitives as sometimes people use these as + // SpringBeans (WICKET-603, WICKET-906). Go figure. + return locator.locateProxyTarget(); } else if (type.isInterface()) { @@ -127,9 +131,9 @@ try { - return Proxy.newProxyInstance(Thread.currentThread() - .getContextClassLoader(), new Class[] {type, Serializable.class, - ILazyInitProxy.class, IWriteReplace.class}, handler); + return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), + new Class[] { type, Serializable.class, ILazyInitProxy.class, + IWriteReplace.class }, handler); } catch (IllegalArgumentException e) { @@ -140,10 +144,9 @@ * and fall back to the classloader (current) that actually * loaded this class. */ - return Proxy.newProxyInstance( - LazyInitProxyFactory.class.getClassLoader(), new Class[] {type, - Serializable.class, ILazyInitProxy.class, - IWriteReplace.class}, handler); + return Proxy.newProxyInstance(LazyInitProxyFactory.class.getClassLoader(), + new Class[] { type, Serializable.class, ILazyInitProxy.class, + IWriteReplace.class }, handler); } } @@ -152,8 +155,8 @@ CGLibInterceptor handler = new CGLibInterceptor(type, locator); Enhancer e = new Enhancer(); - e.setInterfaces(new Class[] {Serializable.class, ILazyInitProxy.class, - IWriteReplace.class}); + e.setInterfaces(new Class[] { Serializable.class, ILazyInitProxy.class, + IWriteReplace.class }); e.setSuperclass(type); e.setCallback(handler); @@ -222,8 +225,8 @@ } catch (ClassNotFoundException e) { - throw new InvalidClassException(type, "could not resolve class [" - + type + "] when deserializing proxy"); + throw new InvalidClassException(type, "could not resolve class [" + type + + "] when deserializing proxy"); } return LazyInitProxyFactory.createProxy(clazz, locator); @@ -237,8 +240,12 @@ * @author Igor Vaynberg (ivaynberg) * */ - private static class CGLibInterceptor implements MethodInterceptor, ILazyInitProxy, - Serializable, IWriteReplace + private static class CGLibInterceptor + implements + MethodInterceptor, + ILazyInitProxy, + Serializable, + IWriteReplace { private static final long serialVersionUID = 1L; @@ -270,8 +277,8 @@ * java.lang.reflect.Method, java.lang.Object[], * net.sf.cglib.proxy.MethodProxy) */ - public Object intercept(Object object, Method method, Object[] args, - MethodProxy proxy) throws Throwable + public Object intercept(Object object, Method method, Object[] args, MethodProxy proxy) + throws Throwable { if (isFinalizeMethod(method)) { @@ -331,8 +338,12 @@ * @author Igor Vaynberg (ivaynberg) * */ - private static class JdkHandler implements InvocationHandler, ILazyInitProxy, - Serializable, IWriteReplace + private static class JdkHandler + implements + InvocationHandler, + ILazyInitProxy, + Serializable, + IWriteReplace { private static final long serialVersionUID = 1L; @@ -435,10 +446,8 @@ */ protected static boolean isEqualsMethod(Method method) { - return method.getReturnType() == boolean.class - && method.getParameterTypes().length == 1 - && method.getParameterTypes()[0] == Object.class - && method.getName().equals("equals"); + return method.getReturnType() == boolean.class && method.getParameterTypes().length == 1 && + method.getParameterTypes()[0] == Object.class && method.getName().equals("equals"); } /** @@ -451,9 +460,8 @@ */ protected static boolean isHashCodeMethod(Method method) { - return method.getReturnType() == int.class - && method.getParameterTypes().length == 0 - && method.getName().equals("hashCode"); + return method.getReturnType() == int.class && method.getParameterTypes().length == 0 && + method.getName().equals("hashCode"); } /** @@ -466,9 +474,8 @@ */ protected static boolean isToStringMethod(Method method) { - return method.getReturnType() == String.class - && method.getParameterTypes().length == 0 - && method.getName().equals("toString"); + return method.getReturnType() == String.class && method.getParameterTypes().length == 0 && + method.getName().equals("toString"); } /** @@ -481,9 +488,8 @@ */ protected static boolean isFinalizeMethod(Method method) { - return method.getReturnType() == void.class - && method.getParameterTypes().length == 0 - && method.getName().equals("finalize"); + return method.getReturnType() == void.class && method.getParameterTypes().length == 0 && + method.getName().equals("finalize"); } /** @@ -495,9 +501,8 @@ */ protected static boolean isWriteReplaceMethod(Method method) { - return method.getReturnType() == Object.class - && method.getParameterTypes().length == 0 - && method.getName().equals("writeReplace"); + return method.getReturnType() == Object.class && method.getParameterTypes().length == 0 && + method.getName().equals("writeReplace"); } }