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


Reply via email to