Author: siren Date: Wed May 31 10:23:06 2006 New Revision: 410606 URL: http://svn.apache.org/viewvc?rev=410606&view=rev Log: Added simple licefycle support to controllers
Added: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Startable.java Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/tiles/ExtendableDefinitionsFactory.java Added: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Startable.java URL: http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Startable.java?rev=410606&view=auto ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Startable.java (added) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Startable.java Wed May 31 10:23:06 2006 @@ -0,0 +1,10 @@ +package org.apache.nutch.webapp.common; + +import javax.servlet.ServletContext; + +/** Controllers wishing to be initialized must extend this interface + * + */ +public interface Startable { + public void start(ServletContext servletContext); +} Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java URL: http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java?rev=410606&r1=410605&r2=410606&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java (original) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java Wed May 31 10:23:06 2006 @@ -27,6 +27,7 @@ import org.apache.hadoop.util.LogFormatter; import org.apache.nutch.webapp.common.ServiceLocator; +import org.apache.nutch.webapp.common.ServletContextServiceLocator; import org.apache.nutch.webapp.common.WebappInstanceServiceLocator; import org.apache.struts.tiles.ComponentContext; import org.apache.struts.tiles.Controller; @@ -116,5 +117,16 @@ HttpServletResponse response, ServletContext servletContext) throws ServletException, IOException { execute(tileContext, request, response, servletContext); + } + + /** + * Get servlet context service locator, this one cannot access request + * specific information as preferences etc. + * + * @param servletContext + * @return + */ + public ServiceLocator getServiceLocator(ServletContext servletContext){ + return ServletContextServiceLocator.getInstance(servletContext); } } Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/tiles/ExtendableDefinitionsFactory.java URL: http://svn.apache.org/viewvc/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/tiles/ExtendableDefinitionsFactory.java?rev=410606&r1=410605&r2=410606&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/tiles/ExtendableDefinitionsFactory.java (original) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/tiles/ExtendableDefinitionsFactory.java Wed May 31 10:23:06 2006 @@ -31,8 +31,10 @@ import org.apache.nutch.plugin.ExtensionPoint; import org.apache.nutch.webapp.common.PluginResourceLoader; import org.apache.nutch.webapp.common.ServletContextServiceLocator; +import org.apache.nutch.webapp.common.Startable; import org.apache.nutch.webapp.extension.UIExtensionPoint; import org.apache.struts.tiles.ComponentDefinition; +import org.apache.struts.tiles.Controller; import org.apache.struts.tiles.DefinitionsFactory; import org.apache.struts.tiles.DefinitionsFactoryConfig; import org.apache.struts.tiles.DefinitionsFactoryException; @@ -247,7 +249,13 @@ LOG.fine("Initializing controller: " + key); XmlDefinition d = definitions.getDefinition(key); try { - d.getOrCreateController(); + Controller controller=d.getOrCreateController(); + if(controller!=null){ + //check if it is implementing Startable, if so execute lifecycle method + if(controller instanceof Startable) { + ((Startable)controller).start(servletContext); + } + } } catch (Exception e) { e.printStackTrace(System.out); }