Author: mgrigorov
Date: Thu Jan  6 19:36:12 2011
New Revision: 1056028

URL: http://svn.apache.org/viewvc?rev=1056028&view=rev
Log:
Re-introduce IDestroyableWebApplicationFactory.

It was removed during the early days of Wicket 1.5 development.
Only SpringWebApplicationFactory implements it - only this factory has 
something to clean on destroy

Added:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IDestroyableWebApplicationFactory.java
      - copied, changed from r1056026, 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java
Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
    
wicket/trunk/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceWebApplicationFactory.java
    
wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/SpringWebApplicationFactory.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java?rev=1056028&r1=1056027&r2=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java
 Thu Jan  6 19:36:12 2011
@@ -102,7 +102,4 @@ public class ContextParamWebApplicationF
                }
        }
 
-       public void destroy()
-       {
-       }
 }

Copied: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IDestroyableWebApplicationFactory.java
 (from r1056026, 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java)
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IDestroyableWebApplicationFactory.java?p2=wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IDestroyableWebApplicationFactory.java&p1=wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java&r1=1056026&r2=1056028&rev=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IDestroyableWebApplicationFactory.java
 Thu Jan  6 19:36:12 2011
@@ -1,51 +1,30 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.protocol.http;
-
-/**
- * A factory interface used by wicket filter to create application objects. 
Configure your
- * webapplication to use this factory in web.xml like:
- * 
- * <pre>
- * &lt;filter&gt;
- *   &lt;filter-name&gt;MyApplication&lt;/filter-name&gt;
- *   
&lt;filter-class>org.apache.wicket.protocol.http.WicketFilter&lt;/filter-class&gt;
- *   &lt;init-param&gt;
- *     &lt;param-name&gt;applicationClassName&lt;/param-name&gt;
- *     &lt;param-value&gt;org.mycompany.MyApplication&lt;/param-value&gt;
- *   &lt;/init-param&gt;
- * &lt;/filter&gt;
- * </pre>
- * 
- * @author Igor Vaynberg (ivaynberg)
- */
-public interface IWebApplicationFactory
-{
-       /**
-        * Create application object
-        * 
-        * @param filter
-        *            the wicket filter
-        * @return application object instance
-        */
-       WebApplication createApplication(WicketFilter filter);
-
-       /**
-        * Called when the filter instance that used this factory is destroyed
-        */
-       void destroy();
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.protocol.http;
+
+/**
+ * Extension of {...@link IWebApplicationFactory} that is aware of the filter 
destruction.
+ * 
+ * @author igor.vaynberg
+ */
+public interface IDestroyableWebApplicationFactory extends 
IWebApplicationFactory
+{
+       /**
+        * Called when the filter instance that used this factory is destroyed
+        */
+       public void destroy();
+}

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java?rev=1056028&r1=1056027&r2=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IWebApplicationFactory.java
 Thu Jan  6 19:36:12 2011
@@ -43,9 +43,4 @@ public interface IWebApplicationFactory
         * @return application object instance
         */
        WebApplication createApplication(WicketFilter filter);
-
-       /**
-        * Called when the filter instance that used this factory is destroyed
-        */
-       void destroy();
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=1056028&r1=1056027&r2=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
 Thu Jan  6 19:36:12 2011
@@ -69,6 +69,9 @@ public class WicketFilter implements Fil
        // Wicket's Application object
        private WebApplication application;
 
+       /** the factory used to create the web aplication instance */
+       private IWebApplicationFactory applicationFactory;
+
        private FilterConfig filterConfig;
 
        private String filterPath;
@@ -275,8 +278,8 @@ public class WicketFilter implements Fil
        {
                this.filterConfig = filterConfig;
 
-               IWebApplicationFactory factory = getApplicationFactory();
-               application = factory.createApplication(this);
+               applicationFactory = getApplicationFactory();
+               application = applicationFactory.createApplication(this);
                application.setName(filterConfig.getFilterName());
                application.setWicketFilter(this);
 
@@ -458,6 +461,14 @@ public class WicketFilter implements Fil
                                application = null;
                        }
                }
+
+               if (applicationFactory != null)
+               {
+                       if (applicationFactory instanceof 
IDestroyableWebApplicationFactory)
+                       {
+                               
((IDestroyableWebApplicationFactory)applicationFactory).destroy();
+                       }
+               }
        }
 
        /**

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java?rev=1056028&r1=1056027&r2=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java
 Thu Jan  6 19:36:12 2011
@@ -199,10 +199,6 @@ public class WicketFilterTest extends Te
                {
                        return application;
                }
-
-               public void destroy()
-               {
-               }
        }
 
        public void testCheckRedirect_1()

Modified: 
wicket/trunk/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceWebApplicationFactory.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceWebApplicationFactory.java?rev=1056028&r1=1056027&r2=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceWebApplicationFactory.java
 (original)
+++ 
wicket/trunk/wicket-guice/src/main/java/org/apache/wicket/guice/GuiceWebApplicationFactory.java
 Thu Jan  6 19:36:12 2011
@@ -177,7 +177,4 @@ public class GuiceWebApplicationFactory 
                return app;
        }
 
-       public void destroy()
-       {
-       }
 }

Modified: 
wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/SpringWebApplicationFactory.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/SpringWebApplicationFactory.java?rev=1056028&r1=1056027&r2=1056028&view=diff
==============================================================================
--- 
wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/SpringWebApplicationFactory.java
 (original)
+++ 
wicket/trunk/wicket-spring/src/main/java/org/apache/wicket/spring/SpringWebApplicationFactory.java
 Thu Jan  6 19:36:12 2011
@@ -20,6 +20,7 @@ import java.util.Map;
 
 import javax.servlet.ServletContext;
 
+import org.apache.wicket.protocol.http.IDestroyableWebApplicationFactory;
 import org.apache.wicket.protocol.http.IWebApplicationFactory;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WicketFilter;
@@ -92,7 +93,7 @@ import org.springframework.web.context.s
  * @author Janne Hietam&auml;ki (jannehietamaki)
  * 
  */
-public class SpringWebApplicationFactory implements IWebApplicationFactory
+public class SpringWebApplicationFactory implements 
IDestroyableWebApplicationFactory
 {
 
        /** additional context created for this filter, if any */
@@ -147,23 +148,23 @@ public class SpringWebApplicationFactory
                        if (application == null)
                        {
                                throw new IllegalArgumentException(
-                                               "Unable to find WebApplication 
bean with name [" + beanName + "]");
+                                       "Unable to find WebApplication bean 
with name [" + beanName + "]");
                        }
                        return application;
                }
                else
                {
-                       Map< ? , ? > beans = 
BeanFactoryUtils.beansOfTypeIncludingAncestors(ac,
-                                       WebApplication.class, false, false);
+                       Map<?, ?> beans = 
BeanFactoryUtils.beansOfTypeIncludingAncestors(ac,
+                               WebApplication.class, false, false);
                        if (beans.size() == 0)
                        {
                                throw new IllegalStateException("bean of type 
[" + WebApplication.class.getName() +
-                                               "] not found");
+                                       "] not found");
                        }
                        if (beans.size() > 1)
                        {
                                throw new IllegalStateException("More than one 
bean of type [" +
-                                               WebApplication.class.getName() 
+ "] found, must have only one");
+                                       WebApplication.class.getName() + "] 
found, must have only one");
                        }
                        return (WebApplication)beans.values().iterator().next();
                }
@@ -181,7 +182,7 @@ public class SpringWebApplicationFactory
         * @throws BeansException
         */
        protected final ConfigurableWebApplicationContext 
createWebApplicationContext(
-                       WebApplicationContext parent, WicketFilter filter) 
throws BeansException
+               WebApplicationContext parent, WicketFilter filter) throws 
BeansException
        {
                ConfigurableWebApplicationContext wac = newApplicationContext();
                wac.setParent(parent);
@@ -204,7 +205,7 @@ public class SpringWebApplicationFactory
         *            wicket filter
         */
        protected void 
postProcessWebApplicationContext(ConfigurableWebApplicationContext wac,
-                       WicketFilter filter)
+               WicketFilter filter)
        {
                // noop
        }


Reply via email to