Author: ivaynberg
Date: Thu Nov 12 06:06:02 2009
New Revision: 835247
URL: http://svn.apache.org/viewvc?rev=835247&view=rev
Log:
WICKET-2573
Modified:
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotSpringInjector.java
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java
Modified:
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java?rev=835247&r1=835246&r2=835247&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotProxyFieldValueFactory.java
Thu Nov 12 06:06:02 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;
}
/**
@@ -93,13 +108,23 @@
return cache.get(locator);
}
- 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;
}
else
{
Modified:
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotSpringInjector.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotSpringInjector.java?rev=835247&r1=835246&r2=835247&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotSpringInjector.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/AnnotSpringInjector.java
Thu Nov 12 06:06:02 2009
@@ -35,16 +35,31 @@
* Constructor
*
* @param locator
- * spring context locator
+ * spring context locator
*/
public AnnotSpringInjector(ISpringContextLocator locator)
{
- initFactory(locator);
+ this(locator, true);
}
- private void initFactory(ISpringContextLocator locator)
+
+ /**
+ * Constructor
+ *
+ * @param locator
+ * 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 AnnotSpringInjector(ISpringContextLocator locator, boolean
wrapInProxies)
+ {
+ initFactory(locator, wrapInProxies);
+ }
+
+ private void initFactory(ISpringContextLocator locator, boolean
wrapInProxies)
{
- factory = new AnnotProxyFieldValueFactory(locator);
+ factory = new AnnotProxyFieldValueFactory(locator,
wrapInProxies);
}
@Override
Modified:
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java?rev=835247&r1=835246&r2=835247&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket-spring/src/main/java/org/apache/wicket/spring/injection/annot/SpringComponentInjector.java
Thu Nov 12 06:06:02 2009
@@ -32,8 +32,8 @@
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
- * {...@link IComponentInstantiationListener} that injects component
properties annotated with {...@link
- * SpringBean} annotations.
+ * {...@link IComponentInstantiationListener} that injects component
properties annotated with
+ * {...@link SpringBean} annotations.
*
* To install in yourapplication.init() call
* <code>addComponentInstantiationListener(new
SpringComponentInjector(this));</code> Non-wicket
@@ -59,29 +59,33 @@
/**
* Constructor used when spring application context is declared in the
spring standard way and
- * can be located through {...@link
- *
WebApplicationContextUtils#getRequiredWebApplicationContext(ServletContext)}
+ * can be located through
+ * {...@link
WebApplicationContextUtils#getRequiredWebApplicationContext(ServletContext)}
*
* @param webapp
- * wicket web application
+ * wicket web application
*/
public SpringComponentInjector(WebApplication webapp)
{
// locate application context through spring's default location
// mechanism and pass it on to the proper constructor
this(webapp,
WebApplicationContextUtils.getRequiredWebApplicationContext(webapp
- .getServletContext()));
+ .getServletContext()), true);
}
/**
* Constructor
*
* @param webapp
- * wicket web application
+ * wicket web application
* @param ctx
- * spring's application context
+ * 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)
+ public SpringComponentInjector(WebApplication webapp,
ApplicationContext ctx,
+ boolean wrapInProxies)
{
if (webapp == null)
{
@@ -97,7 +101,7 @@
webapp.setMetaData(CONTEXT_KEY, new
ApplicationContextHolder(ctx));
// ... and create and register the annotation aware injector
- InjectorHolder.setInjector(new AnnotSpringInjector(new
ContextLocator()));
+ InjectorHolder.setInjector(new AnnotSpringInjector(new
ContextLocator(), wrapInProxies));
}
/**