Author: snoopdave
Date: Tue Jun 19 08:12:43 2007
New Revision: 548758

URL: http://svn.apache.org/viewvc?view=rev&rev=548758
Log:
Refinements to Roller EZ install:
- Moved bootstrap logic from BootstrapFilter to new Struts Install action
- Replaced "please restart" messages with "click here to start using Roller"
- Added unknown error page for unexpected errors
- RollerContext is no longer a DatabaseScriptProvider
- All Struts actions now extend UIAction, no need for ApplicationAware

Added:
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/ServletContextDatabaseScriptProvider.java
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UnknownError.jsp
Modified:
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
    roller/trunk/apps/weblogger/src/sql/droptables.sql
    
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
    roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/CreateDatabase.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UpgradeDatabase.jsp
    roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java
 Tue Jun 19 08:12:43 2007
@@ -21,6 +21,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.utils.DatabaseCreator;
+import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;
 import org.apache.roller.weblogger.config.PingConfig;
 import org.apache.roller.weblogger.config.RollerConfig;
 
@@ -58,7 +60,14 @@
     /**
      * Bootstrap the Roller Weblogger business tier.
      */
-    public static final void bootstrap() {
+    public static final void bootstrap() throws WebloggerException {
+        
+        if ("manual".equals(RollerConfig.getProperty("installation.type"))) {
+            if (DatabaseCreator.isCreationRequired() 
+             || DatabaseUpgrader.isUpgradeRequired()) { 
+                return;
+            }
+        }        
         
         // This will cause instantiation and initialziation of Roller impl
         Roller roller = getRoller();

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
 Tue Jun 19 08:12:43 2007
@@ -33,7 +33,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.utils.DatabaseScriptProvider;
 import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;
 import org.apache.roller.weblogger.config.RollerConfig;
 import org.apache.roller.weblogger.business.RollerFactory;
@@ -42,6 +41,7 @@
 import org.apache.roller.weblogger.ui.core.plugins.UIPluginManager;
 import org.apache.roller.weblogger.ui.core.plugins.UIPluginManagerImpl;
 import org.apache.roller.weblogger.ui.core.security.AutoProvision;
+import 
org.apache.roller.weblogger.ui.struts2.core.ServletContextDatabaseScriptProvider;
 import org.apache.roller.weblogger.util.cache.CacheManager;
 import org.apache.velocity.runtime.RuntimeSingleton;
 import org.springframework.context.ApplicationContext;
@@ -53,7 +53,7 @@
  * Initialize the Roller web application/context.
  */
 public class RollerContext extends ContextLoaderListener  
-        implements ServletContextListener, DatabaseScriptProvider { 
+        implements ServletContextListener { 
     
     private static Log log = LogFactory.getLog(RollerContext.class);
     
@@ -79,9 +79,6 @@
             // Keep a reverence to ServletContext object
             this.servletContext = sce.getServletContext();
 
-            // Save self to context as DatabaseScriptProvider
-            this.servletContext.setAttribute("DatabaseScriptProvider", this);
-
             // Call Spring's context ContextLoaderListener to initialize all 
the 
             // context files specified in web.xml. This is necessary because 
             // listeners don't initialize in the order specified in 2.3 
containers
@@ -126,7 +123,8 @@
             // If installation type is manual, then don't run migraton scripts
             if 
("manual".equals(RollerConfig.getProperty("installation.type"))) {
                 if (DatabaseUpgrader.isUpgradeRequired()) {
-                    DatabaseUpgrader upgrader = new DatabaseUpgrader(this); 
+                    DatabaseUpgrader upgrader = new DatabaseUpgrader(
+                            new ServletContextDatabaseScriptProvider());  
                     upgrader.upgradeDatabase(false);
                 }
             }
@@ -288,14 +286,6 @@
         return servletContext;
     }
     
-
-    /**
-     * Get database script as stream, path is relative to dbscripts directory.
-     */
-    public InputStream getDatabaseScript(String path) throws Exception {
-        return getServletContext().getResourceAsStream("/WEB-INF/dbscripts/" + 
path);
-    }
-
 
     /**
      * Get an instance of AutoProvision, if available in roller.properties

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
 Tue Jun 19 08:12:43 2007
@@ -33,7 +33,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
 import org.apache.roller.weblogger.business.DatabaseProvider;
-
+import org.apache.roller.weblogger.business.RollerFactory;
 import org.apache.roller.weblogger.config.RollerConfig;
 import org.apache.roller.weblogger.business.utils.DatabaseCreator;
 import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;
@@ -58,55 +58,27 @@
         
         log.debug("Entered "+request.getRequestURI());
         
-        if ("auto".equals(RollerConfig.getProperty("installation.type"))) {
-            
+        if ("auto".equals(RollerConfig.getProperty("installation.type"))) {    
        
             // an auto-install is in progress, do some checks and if necessary
             // redirect to error, db create or db upgrade page
 
             // only do this if Roller is configured for auto-install and 
-            // only if request is NOT for install page or a style/script file
-            
+            // only if request is NOT for install page or a style/script file  
          
             String requestURI = request.getRequestURI();
             if (     requestURI != null 
-                 && !requestURI.startsWith("/roller/roller-ui/install") 
+                 &&  requestURI.indexOf("/roller-ui/install") < 0 
                  && !requestURI.endsWith(".js")
                  && !requestURI.endsWith(".css")) {
-                        
-                // if cannot connect to database
-                try {
-                    DatabaseProvider dp = 
DatabaseProvider.getDatabaseProvider();             
-                } catch (RollerException e) {
-                    // we doing an install, so forward to informative database 
error page
-                    RequestDispatcher rd = 
-                        
context.getRequestDispatcher("/roller-ui/install/databaseError.rol");
+                
+                if (!RollerFactory.isBootstrapped()) {
+                    // we doing an install, so forward to installer
+                    RequestDispatcher rd = context.getRequestDispatcher(
+                            "/roller-ui/install/install.rol");
                     rd.forward(req, res);
                     return;
-                }   
-
-                // if installation type 'auto' then check if upgrade required
-                try {               
-                    if (DatabaseCreator.isCreationRequired()) {
-                        // forward to database create page
-                        RequestDispatcher rd = context.getRequestDispatcher(
-                            "/roller-ui/install/createDatabase.rol");
-                        rd.forward(req, res);   
-                        return;
-                    } 
-                    if (DatabaseUpgrader.isUpgradeRequired()) {
-                        // forward to database upgrade page
-                        RequestDispatcher rd = context.getRequestDispatcher(
-                            "/roller-ui/install/upgradeDatabase.rol");
-                        rd.forward(req, res);
-                        return;
-                    }
-                } catch (Throwable t) {
-                    // Exception at this point indicates something is 
-                    // horribly wrong and there is no way to recover.
-                    throw new RuntimeException("FATAL error checking database 
status", t);
                 }
             }
         }
-                  
         chain.doFilter(request, response);                    
         log.debug("Exiting "+request.getRequestURI());
     }

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
 Tue Jun 19 08:12:43 2007
@@ -60,11 +60,15 @@
             chain.doFilter(request, response);
         } finally {
             log.debug("Releasing Roller Session");
-            RollerFactory.getRoller().release();
+            if (RollerFactory.getRoller() != null) {
+                RollerFactory.getRoller().release();
+            }
             
             // if planet is enabled then release planet backend as well
-            if(RollerConfig.getBooleanProperty("planet.aggregator.enabled")) {
-                PlanetFactory.getPlanet().release();
+            if (RollerConfig.getBooleanProperty("planet.aggregator.enabled")) {
+                if (PlanetFactory.getPlanet() != null) {
+                    PlanetFactory.getPlanet().release();
+                }
             }
         }
         

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
 Tue Jun 19 08:12:43 2007
@@ -18,26 +18,21 @@
 
 package org.apache.roller.weblogger.ui.struts2.core;
 
-import com.opensymphony.xwork2.ActionSupport;
 import java.sql.Connection;
 import java.util.List;
-import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.DatabaseProvider;
 import org.apache.roller.weblogger.business.utils.DatabaseCreator;
-import org.apache.roller.weblogger.business.utils.DatabaseScriptProvider;
 import org.apache.roller.weblogger.config.RollerConfig;
-import org.apache.struts2.interceptor.ApplicationAware;
+import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 
 /**
  * Walk user through database auto-creation process.
  */
-public class CreateDatabase extends ActionSupport implements ApplicationAware 
{ 
-    private static Log log = LogFactory.getLog(CreateDatabase.class);
-    
-    private DatabaseScriptProvider scripts = null;    
+public class CreateDatabase extends UIAction { 
+    private static Log log = LogFactory.getLog(CreateDatabase.class);      
     private boolean error = false;
     private List<String> messages = null;
     
@@ -46,17 +41,17 @@
         return SUCCESS;
     }
     
-    /**
-     * Looks for DatabaseScriptProvider via key 'DatabaseScriptProvider'
-     */
-    public void setApplication(Map map) {
-        if (map.get("DatabaseScriptProvider") != null) {
-            scripts = 
(DatabaseScriptProvider)map.get("DatabaseScriptProvider");
-        }
+    public boolean isUserRequired() {
+        return false;
     }
-
+    
+    public boolean isWeblogRequired() {
+        return false;
+    }
+    
     public String create() {
-        DatabaseCreator creator = new DatabaseCreator(scripts);
+        DatabaseCreator creator = new DatabaseCreator(
+                new ServletContextDatabaseScriptProvider());
         try {
             creator.createDatabase();
         } catch (Exception ex) {

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
 Tue Jun 19 08:12:43 2007
@@ -18,20 +18,28 @@
 
 package org.apache.roller.weblogger.ui.struts2.core;
 
-import com.opensymphony.xwork2.ActionSupport;
 import java.io.StringWriter;
 import java.util.List;
 import org.apache.roller.RollerException;
 import org.apache.roller.weblogger.business.DatabaseProvider;
 import org.apache.roller.weblogger.config.RollerConfig;
+import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 
 /**
  * Display error message about database.
  */
-public class DatabaseError extends ActionSupport { 
+public class DatabaseError extends UIAction { 
     
     public String execute() {
         return SUCCESS;
+    }
+    
+    public boolean isUserRequired() {
+        return false;
+    }
+    
+    public boolean isWeblogRequired() {
+        return false;
     }
     
     public String getProp(String key) {

Added: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java?view=auto&rev=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
 (added)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
 Tue Jun 19 08:12:43 2007
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  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.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+
+package org.apache.roller.weblogger.ui.struts2.core;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.RollerException;
+import org.apache.roller.weblogger.business.DatabaseProvider;
+import org.apache.roller.weblogger.business.RollerFactory;
+import org.apache.roller.weblogger.business.utils.DatabaseCreator;
+import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;
+import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+
+/**
+ * Walk user through install process.
+ */
+public class Install extends UIAction { 
+    private static Log log = LogFactory.getLog(Install.class);
+    private static final String DATABASE_ERROR = "database_error";
+    private static final String CREATE_DATABASE = "create_database";
+    private static final String UPGRADE_DATABASE = "upgrade_database";
+    private static final String UNKNOWN_ERROR = "unknown_error";
+    private Throwable rootCauseException = null;
+       
+    public String execute() {
+
+        try {
+            DatabaseProvider dp = DatabaseProvider.getDatabaseProvider();      
       
+        } catch (RollerException e) {
+            return DATABASE_ERROR;
+        }   
+        
+        try {               
+            if (DatabaseCreator.isCreationRequired()) {  
+                log.info("Forwarding to database table creation page");
+                return CREATE_DATABASE;
+            } 
+            if (DatabaseUpgrader.isUpgradeRequired()) {
+                log.info("Forwarding to database table upgrade page");
+                return UPGRADE_DATABASE;
+            }
+        } catch (Throwable t) {
+            rootCauseException = t;
+            log.error("ERROR checking database status", t);
+            return UNKNOWN_ERROR;
+        } 
+        
+        try {
+            log.info("Attempting to bootstrap Roller");
+            RollerFactory.bootstrap();
+        } catch (Throwable t) {
+            rootCauseException = t;
+            log.error("ERROR bootstrapping Roller", t);
+            return UNKNOWN_ERROR;
+        }
+        
+        return SUCCESS;
+    }
+
+    public boolean isUserRequired() {
+        return false;
+    }
+    
+    public boolean isWeblogRequired() {
+        return false;
+    }
+    
+    public Throwable getRootCauseException() {
+        return rootCauseException;
+    }
+    
+    public String getRootCauseStackTrace() {
+        String stackTrace = "";
+        if (getRootCauseException() != null) {
+            StringWriter sw = new StringWriter();
+            getRootCauseException().printStackTrace(new PrintWriter(sw));
+            stackTrace = sw.toString().trim();
+        }
+        return stackTrace;
+    }
+}
+

Added: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/ServletContextDatabaseScriptProvider.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/ServletContextDatabaseScriptProvider.java?view=auto&rev=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/ServletContextDatabaseScriptProvider.java
 (added)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/ServletContextDatabaseScriptProvider.java
 Tue Jun 19 08:12:43 2007
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  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.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+package org.apache.roller.weblogger.ui.struts2.core;
+
+import java.io.InputStream;
+import org.apache.roller.weblogger.business.utils.DatabaseScriptProvider;
+import org.apache.roller.weblogger.ui.core.RollerContext;
+
+/**
+ * Reads script from ServletContext.
+ */
+public class ServletContextDatabaseScriptProvider implements 
DatabaseScriptProvider {
+    
+    public InputStream getDatabaseScript(String path) throws Exception {
+        return RollerContext.getServletContext().getResourceAsStream(
+                "/WEB-INF/dbscripts/" + path);
+    }    
+}

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
 Tue Jun 19 08:12:43 2007
@@ -18,44 +18,40 @@
 
 package org.apache.roller.weblogger.ui.struts2.core;
 
-import com.opensymphony.xwork2.ActionSupport;
 import java.sql.Connection;
 import java.util.List;
-import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.DatabaseProvider;
-import org.apache.roller.weblogger.business.utils.DatabaseScriptProvider;
 import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;
 import org.apache.roller.weblogger.config.RollerConfig;
-import org.apache.struts2.interceptor.ApplicationAware;
+import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 
 /**
  * Walk user through database auto-upgrade process.
  */
-public class UpgradeDatabase extends ActionSupport implements ApplicationAware 
{ 
-    private static Log log = LogFactory.getLog(UpgradeDatabase.class);
-    
-    private DatabaseScriptProvider scripts = null;
+public class UpgradeDatabase extends UIAction { 
+    private static Log log = LogFactory.getLog(UpgradeDatabase.class);    
     private boolean error = false;
     private List<String> messages = null;
     
+    
     public String execute() {
         return SUCCESS;
+    }    
+    
+    public boolean isUserRequired() {
+        return false;
     }
     
-    /**
-     * Looks for DatabaseScriptProvider via key 'DatabaseScriptProvider'
-     */
-    public void setApplication(Map map) {
-        if (map.get("DatabaseScriptProvider") != null) {
-            scripts = 
(DatabaseScriptProvider)map.get("DatabaseScriptProvider");
-        }
+    public boolean isWeblogRequired() {
+        return false;
     }
     
     public String upgrade() {
-        DatabaseUpgrader upgrader = new DatabaseUpgrader(scripts);
+        DatabaseUpgrader upgrader = new DatabaseUpgrader(
+                new ServletContextDatabaseScriptProvider());
         try {
             upgrader.upgradeDatabase(true);
         } catch (Exception ex) {

Modified: roller/trunk/apps/weblogger/src/sql/droptables.sql
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/sql/droptables.sql?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- roller/trunk/apps/weblogger/src/sql/droptables.sql (original)
+++ roller/trunk/apps/weblogger/src/sql/droptables.sql Tue Jun 19 08:12:43 2007
@@ -21,6 +21,7 @@
 drop table rag_group;
 drop table rag_planet;
 drop table rag_properties;
+drop table rag_config;
 
 -- non-associated tables
 drop table newsfeed;

Modified: 
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- 
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties 
(original)
+++ 
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties 
Tue Jun 19 08:12:43 2007
@@ -733,10 +733,14 @@
 installer.bannerTitleLeft=Apache Roller Weblogger
 installer.bannerTitleRight=Auto-Installer
 
+# database error
 installer.cannotConnectToDatabase=Cannot connect to database
 installer.whatHappened=What happened?
 installer.whatHappenedDatabaseConnectionError=\
-Here's what happened when Roller tried to establish a connection:
+A database error occurred, probably because your database connection is \
+misconfigured. You will have to fix this problem and then restart or redeploy \
+Roller before you can proceed. Here's what happened when Roller \
+tried to establish a connection:
 installer.whyDidThatHappen=Why did that happen?
 installer.aboutTheException=In case the clues above are not enough to help you 
\
 figure out what is going wrong, here are some more details. The root cause of \
@@ -744,7 +748,17 @@
 installer.heresTheStackTrace=\
 To help you debug the problem, here is the stack trace for that exception:
 
+# unknown error
+installer.unknownError=An unknown error has occurred
+installer.whatHappenedUnknown=An unknown and unexpected error occured when \
+Roller tried to check database status or bootstrap itself. Roller can't \
+determine what happened so you will have to look at your servers log files \
+and diagnose the problem yourself. Follow the instructons on the Roller wiki \
+and seek help from the <a href=\
+"http://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists";> \
+Roller user mailing list.
 
+# create tables
 installer.noDatabaseTablesFound=No database tables found
 installer.noDatabaseTablesExplanation=\
 Roller is able to connect to your database of type [{0}], but found no tables. 
@@ -753,10 +767,17 @@
 installer.tablesCreated=Tables created successfully
 installer.tablesCreatedExplanation=Database tables were created successfully \
 as you can see below. 
-installer.pleaseRestart=Before you start using Roller please restart or \
-redeploy the Roller web application.
+installer.tryBootstrapping=Database tables are present and up-to-date. \
+Click <a href="{0}">here</a> to complete the installation process and start \
+using Roller.
 installer.errorCreatingTables=Error creating tables
+installer.errorCreatingTablesExplanation=Error creating tables, possibly due \
+to an error in the database creation script or because you are using an \
+unsupported database. You will have to fix this problem and then restart or \
+redeploy Roller before you can proceed. Below are the success/error messages \
+issued during the creation process:
 
+# upgrade tables
 installer.databaseUpgradeNeeded=Database tables need to be upgraded
 installer.databaseUpgradeNeededExplanation=\
 Roller is able to connect to your database of type [{0}] and found tables, \
@@ -767,6 +788,11 @@
 installer.tablesUpgradedExplanation=\
 Database tables were upgraded successfully as you can see below. 
 installer.errorUpgradingTables=Error upgrading tables
+installer.errorUpgradingTablesExplanation=Error upgrading tables, possibly due 
\
+to an error in the database creation script or because you are using an \
+unsupported database. You will have to fix this problem and then restart or \
+redeploy Roller before you can proceed. Below are the success/error messages \
+issued during the upgrade process:
 
 
 # ----------------------------------------------------------------------- Login

Modified: roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/classes/struts.xml Tue Jun 19 
08:12:43 2007
@@ -122,7 +122,7 @@
     </package>
     
     
-    <!-- Weblogger Admin UI (includes planet) -->
+    <!-- Weblogger install/bootstrap actions -->
     <package name="weblogger-install" namespace="/roller-ui/install" 
extends="weblogger">
         
         <action name="databaseError"
@@ -130,6 +130,11 @@
             <result name="success" type="tiles">.DatabaseError</result>
         </action>
             
+        <action name="unknownError"
+                
class="org.apache.roller.weblogger.ui.struts2.core.UpgradeDatabase">
+            <result name="success" type="tiles">.UnknownError</result>
+        </action>
+    
         <action name="createDatabase!*" method="{1}"
                 
class="org.apache.roller.weblogger.ui.struts2.core.CreateDatabase">
             <result name="success" type="tiles">.CreateDatabase</result>
@@ -140,6 +145,15 @@
             <result name="success" type="tiles">.UpgradeDatabase</result>
         </action>
     
+        <action name="install"
+                class="org.apache.roller.weblogger.ui.struts2.core.Install">
+            <result name="database_error"   type="chain">databaseError</result>
+            <result name="create_database"  
type="chain">createDatabase</result>
+            <result name="upgrade_database" 
type="chain">upgradeDatabase</result>
+            <result name="unknown_error"    type="tiles">.UnknownError</result>
+            <result name="success"          type="chain">home</result>
+        </action>
+            
     </package>
     
     

Modified: roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/CreateDatabase.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/CreateDatabase.jsp?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/CreateDatabase.jsp 
(original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/CreateDatabase.jsp Tue 
Jun 19 08:12:43 2007
@@ -20,10 +20,9 @@
 <s:if test="error">
     
     <h2><s:text name="installer.errorCreatingTables" /></h2> 
+    <p><s:text name="installer.errorCreatingTablesExplanation" /></p> 
 <pre>
-<s:iterator value="messages">
-<s:property/>
-</s:iterator>
+<s:iterator value="messages"><s:property/><br /></s:iterator>
 </pre>
     
 </s:if>
@@ -48,7 +47,11 @@
     <h2><s:text name="installer.tablesCreated" /></h2>
     
     <p><s:text name="installer.tablesCreatedExplanation" /></p>
-    <p><s:text name="installer.pleaseRestart" /></p>
+    <p>
+        <s:text name="installer.tryBootstrapping">
+            <s:param><s:url value="/"/></s:param>
+        </s:text>
+    </p>
     
 <pre>
 <s:iterator value="messages"><s:property/><br /></s:iterator>

Added: roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UnknownError.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UnknownError.jsp?view=auto&rev=548758
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UnknownError.jsp (added)
+++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UnknownError.jsp Tue Jun 
19 08:12:43 2007
@@ -0,0 +1,39 @@
+<%--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  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.  For additional information regarding
+  copyright in this work, please see the NOTICE file in the top level
+  directory of this distribution.
+--%>
+<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
+
+<h2><s:text name="installer.unknownError" /></h2>
+
+<h3><s:text name="installer.whatHappened" /></h3>
+
+<p><s:text name="installer.whatHappenedUnknown" /></p>
+    
+<h3><s:text name="installer.whyDidThatHappen" /></h3>
+
+<p>
+    <s:text name="installer.aboutTheException" />
+    [<s:property value="getRootCauseException().getClass().getName()" />]
+</p>
+
+<p><s:text name="installer.heresTheStackTrace" /></p>
+<pre>
+    [<s:property value="getRootCauseStackTrace()" />]
+</pre>
+
+<br />
+<br />

Modified: roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UpgradeDatabase.jsp
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UpgradeDatabase.jsp?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UpgradeDatabase.jsp 
(original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/jsps/core/UpgradeDatabase.jsp Tue 
Jun 19 08:12:43 2007
@@ -21,10 +21,9 @@
 <s:if test="error">
     
     <h2><s:text name="installer.errorUpgradingTables" /></h2> 
+    <p><s:text name="installer.errorUpgradingTablesExplanation" /></p> 
 <pre>
-<s:iterator value="messages">
-<s:property/>
-</s:iterator>
+<s:iterator value="messages"><s:property/><br /></s:iterator>
 </pre>
     
 </s:if>
@@ -49,7 +48,11 @@
     <h2><s:text name="installer.tablesUpgraded" /></h2>
     
     <p><s:text name="installer.tablesUpgradedExplanation" /></p>
-    <p><s:text name="installer.pleaseRestart" /></p>
+    <p>
+        <s:text name="installer.tryBootstrapping">
+            <s:param><s:url value="/"/></s:param>
+        </s:text>
+    </p>
     
 <pre>
 <s:iterator value="messages"><s:property/><br /></s:iterator>

Modified: roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml?view=diff&rev=548758&r1=548757&r2=548758
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/tiles.xml Tue Jun 19 08:12:43 2007
@@ -122,6 +122,12 @@
         <put name="banner" value="/WEB-INF/jsps/tiles/bannerInstallation.jsp" 
/>
     </definition>
     
+    <definition name=".UnknownError" extends=".tiles-errorpage" >
+        <put name="content" value="/WEB-INF/jsps/core/UnknownError.jsp" />
+        <put name="footer" value="/WEB-INF/jsps/tiles/empty.jsp" />
+        <put name="banner" value="/WEB-INF/jsps/tiles/bannerInstallation.jsp" 
/>
+    </definition>
+    
 
     <!-- global admin pages (and associates) -->
     <definition name=".GlobalConfig" extends=".tiles-tabbedpage" >


Reply via email to