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> - * <filter> - * <filter-name>MyApplication</filter-name> - * <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> - * <init-param> - * <param-name>applicationClassName</param-name> - * <param-value>org.mycompany.MyApplication</param-value> - * </init-param> - * </filter> - * </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ä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 }