You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2009/11/12 07:10:09 UTC

svn commit: r835250 - in /wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot: AnnotProxyFieldValueFactory.java SpringComponentInjector.java

Author: ivaynberg
Date: Thu Nov 12 06:10:09 2009
New Revision: 835250

URL: http://svn.apache.org/viewvc?rev=835250&view=rev
Log:
WICKET-2573

Modified:
    wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
    wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java

Modified: wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java?rev=835250&r1=835249&r2=835250&view=diff
==============================================================================
--- wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java (original)
+++ wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java Thu Nov 12 06:10:09 2009
@@ -62,17 +62,32 @@
 
 	private final ConcurrentHashMap<SpringBeanLocator, Object> cache = new ConcurrentHashMap<SpringBeanLocator, Object>();
 
+	private final boolean wrapInProxies;
+
 	/**
 	 * @param contextLocator
 	 *            spring context locator
 	 */
 	public AnnotProxyFieldValueFactory(ISpringContextLocator contextLocator)
 	{
+		this(contextLocator, true);
+	}
+
+	/**
+	 * @param contextLocator
+	 *            spring context locator
+	 * @param wrapInProxies
+	 *            whether or not wicket should wrap dependencies with specialized proxies that can
+	 *            be safely serialized. in most cases this should be set to true.
+	 */
+	public AnnotProxyFieldValueFactory(ISpringContextLocator contextLocator, boolean wrapInProxies)
+	{
 		if (contextLocator == null)
 		{
 			throw new IllegalArgumentException("[contextLocator] argument cannot be null");
 		}
 		this.contextLocator = contextLocator;
+		this.wrapInProxies = wrapInProxies;
 	}
 
 	/**
@@ -94,13 +109,22 @@
 				return cachedValue;
 			}
 
-			Object proxy = LazyInitProxyFactory.createProxy(field.getType(), locator);
+			final Object target;
+			if (wrapInProxies)
+			{
+				target = LazyInitProxyFactory.createProxy(field.getType(), locator);
+			}
+			else
+			{
+				target = locator.locateProxyTarget();
+			}
+
 			// only put the proxy into the cache if the bean is a singleton
 			if (locator.isSingletonBean())
 			{
-				cache.put(locator, proxy);
+				cache.put(locator, target);
 			}
-			return proxy;
+			return target;
 		}
 		return null;
 	}

Modified: wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java?rev=835250&r1=835249&r2=835250&view=diff
==============================================================================
--- wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java (original)
+++ wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java Thu Nov 12 06:10:09 2009
@@ -85,6 +85,24 @@
 	 */
 	public SpringComponentInjector(WebApplication webapp, ApplicationContext ctx)
 	{
+		this(webapp, ctx, true);
+	}
+
+	/**
+	 * Constructor
+	 * 
+	 * @param webapp
+	 *            wicket web application
+	 * @param ctx
+	 *            spring's application context
+	 * 
+	 * @param wrapInProxies
+	 *            whether or not wicket should wrap dependencies with specialized proxies that can
+	 *            be safely serialized. in most cases this should be set to true.
+	 */
+	public SpringComponentInjector(WebApplication webapp, ApplicationContext ctx,
+			boolean wrapInProxies)
+	{
 		if (webapp == null)
 		{
 			throw new IllegalArgumentException("Argument [[webapp]] cannot be null");
@@ -97,7 +115,7 @@
 
 		// store context in application's metadata ...
 		webapp.setMetaData(CONTEXT_KEY, new ApplicationContextHolder(ctx));
-		fieldValueFactory = new AnnotProxyFieldValueFactory(new ContextLocator());
+		fieldValueFactory = new AnnotProxyFieldValueFactory(new ContextLocator(), wrapInProxies);
 		bind(webapp);
 	}