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


Reply via email to