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));
        }
 
        /**


Reply via email to