Copied: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
 (from r548758, 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java)
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java?view=diff&rev=548830&p1=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java&r1=548758&p2=roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java&r2=548830
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/CreateDatabase.java
 Tue Jun 19 12:29:52 2007
@@ -22,8 +22,8 @@
 import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.roller.util.DatabaseProvider;
 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.config.RollerConfig;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;

Copied: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
 (from r548758, 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java)
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java?view=diff&rev=548830&p1=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java&r1=548758&p2=roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java&r2=548830
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/DatabaseError.java
 Tue Jun 19 12:29:52 2007
@@ -21,7 +21,7 @@
 import java.io.StringWriter;
 import java.util.List;
 import org.apache.roller.RollerException;
-import org.apache.roller.weblogger.business.DatabaseProvider;
+import org.apache.roller.util.DatabaseProvider;
 import org.apache.roller.weblogger.config.RollerConfig;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 

Copied: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
 (from r548758, 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java)
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java?view=diff&rev=548830&p1=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java&r1=548758&p2=roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java&r2=548830
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
 Tue Jun 19 12:29:52 2007
@@ -23,7 +23,7 @@
 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.util.DatabaseProvider;
 import org.apache.roller.weblogger.business.RollerFactory;
 import org.apache.roller.weblogger.business.utils.DatabaseCreator;
 import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;

Copied: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
 (from r548758, 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java)
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java?view=diff&rev=548830&p1=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java&r1=548758&p2=roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java&r2=548830
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/core/UpgradeDatabase.java
 Tue Jun 19 12:29:52 2007
@@ -22,8 +22,8 @@
 import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.roller.util.DatabaseProvider;
 import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.DatabaseProvider;
 import org.apache.roller.weblogger.business.utils.DatabaseUpgrader;
 import org.apache.roller.weblogger.config.RollerConfig;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntryBean.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntryBean.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntryBean.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/EntryBean.java
 Tue Jun 19 12:29:52 2007
@@ -220,10 +220,11 @@
             log.debug("pubtime vals are "+getDateString()+", "+getHours()+", 
"+getMinutes()+", "+getSeconds());
             
             // first convert the specified date string into an actual Date obj
-            DateFormat df = new SimpleDateFormat("MM/dd/yy", locale);
-            df.setTimeZone(timezone);
+            DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, 
locale);
             Date newDate = df.parse(getDateString());
             
+            log.debug("dateString yields date - "+newDate);
+            
             // Now handle the time from the hour, minute and second combos
             Calendar cal = Calendar.getInstance(locale);
             cal.setTime(newDate);
@@ -253,6 +254,9 @@
         return status.equals(WeblogEntry.PUBLISHED);
     }
     
+    public boolean isScheduled() {
+        return status.equals(WeblogEntry.SCHEDULED);
+    }
     
     public void copyTo(WeblogEntry entry) throws WebloggerException {
         
@@ -328,7 +332,7 @@
             setMinutes(cal.get(Calendar.MINUTE));
             setSeconds(cal.get(Calendar.SECOND));
             
-            DateFormat df = new SimpleDateFormat("MM/dd/yy", locale);
+            DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, 
locale);
             df.setTimeZone(entry.getWebsite().getTimeZoneInstance());
             setDateString(df.format(entry.getPubTime()));
             

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
 Tue Jun 19 12:29:52 2007
@@ -71,7 +71,9 @@
             UserManager mgr = RollerFactory.getRoller().getUserManager();
             
             // get current list of templates, minus custom stylesheet
-            List<WeblogTemplate> pages = mgr.getPages(getActionWeblog());
+            List<WeblogTemplate> raw = mgr.getPages(getActionWeblog()); 
+            List<WeblogTemplate> pages = new ArrayList<WeblogTemplate>();
+            pages.addAll(raw);
             if(getActionWeblog().getTheme().getStylesheet() != null) {
                 pages.remove(mgr.getPageByLink(getActionWeblog(), 
                         
getActionWeblog().getTheme().getStylesheet().getLink()));

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/I18nMessages.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/I18nMessages.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/I18nMessages.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/I18nMessages.java
 Tue Jun 19 12:29:52 2007
@@ -118,7 +118,7 @@
             return bundle.getString(key);
         } catch (Exception e) {
             // send a warning in the logs
-            log.warn("Error getting key "+key, e);
+            log.warn("Error getting key "+key);
             return key;
         }
     }

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/util/URLUtilities.java
 Tue Jun 19 12:29:52 2007
@@ -25,6 +25,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import org.apache.commons.lang.StringUtils;
 import org.apache.roller.weblogger.config.RollerRuntimeConfig;
 import org.apache.roller.weblogger.pojos.WeblogTheme;
 import org.apache.roller.weblogger.pojos.Weblog;
@@ -325,7 +326,7 @@
                                                     String filePath,
                                                     boolean absolute) {
         
-        if(weblog == null) {
+        if(weblog == null || StringUtils.isEmpty(filePath)) {
             return null;
         }
         

Modified: 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/xmlrpc/MetaWeblogAPIHandler.java
 Tue Jun 19 12:29:52 2007
@@ -140,8 +140,8 @@
         
         String cat = null;
         if ( postcontent.get("categories") != null ) {
-            Vector cats = (Vector)postcontent.get("categories");
-            cat = (String)cats.elementAt(0);
+            Object[] cats = (Object[])postcontent.get("categories");
+            cat = (String)cats[0];
         }
         mLogger.debug("      Title: " + title);
         mLogger.debug("   Category: " + cat);
@@ -259,11 +259,13 @@
             // so here we take accept the first category that exists
             WeblogCategory rollerCat = null;
             if ( postcontent.get("categories") != null ) {
-                Vector cats = (Vector)postcontent.get("categories");
-                if (cats != null && cats.size() > 0) {
-                    for (int i=0; i<cats.size(); i++) {
-                        String cat = (String)cats.get(i);
-                        rollerCat = weblogMgr.getWeblogCategoryByPath(website, 
cat);
+                Object[] cats = (Object[])postcontent.get("categories");
+                if (cats != null && cats.length > 0) {
+                    mLogger.debug("cats type - "+cats[0].getClass().getName());
+                    mLogger.debug("cat to string - "+cats[0].toString());
+                    for (int i=0; i<cats.length; i++) {
+                        Object cat = cats[i];
+                        rollerCat = weblogMgr.getWeblogCategoryByPath(website, 
(String)cat);
                         if (rollerCat != null) {
                             entry.setCategory(rollerCat);
                             break;

Modified: 
roller/branches/roller_guice/apps/weblogger/src/sql/240-to-300-migration.vm
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/sql/240-to-300-migration.vm?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/sql/240-to-300-migration.vm 
(original)
+++ roller/branches/roller_guice/apps/weblogger/src/sql/240-to-300-migration.vm 
Tue Jun 19 12:29:52 2007
@@ -13,11 +13,6 @@
 #addColumnNotNull("website" "enablemultilang" $db.BOOLEAN_SQL_TYPE 
$db.BOOLEAN_FALSE)
 #addColumnNotNull("website" "showalllangs" $db.BOOLEAN_SQL_TYPE 
$db.BOOLEAN_TRUE)
 
--- add new column which holds the locale for a weblog entry
--- then set the values and make column not null
-#addColumnNull("weblogentry" "locale" "varchar(20)")
-create index we_locale_idx on weblogentry(locale);
-
 -- add new column which holds the hidden status for a page, default is false
 #addColumnNotNull("webpage" "hidden" $db.BOOLEAN_SQL_TYPE $db.BOOLEAN_FALSE)
 

Modified: 
roller/branches/roller_guice/apps/weblogger/src/sql/310-to-320-migration.vm
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/sql/310-to-320-migration.vm?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/sql/310-to-320-migration.vm 
(original)
+++ roller/branches/roller_guice/apps/weblogger/src/sql/310-to-320-migration.vm 
Tue Jun 19 12:29:52 2007
@@ -50,8 +50,8 @@
 -- remove old indexes that are no longer of value
 drop index we_pubtime_idx on weblogentry;
 drop index we_pubentry_idx on weblogentry;
-drop index co_pending_idx on roller_comment;
-drop index co_approved_idx on roller_comment;
+-- drop index co_pending_idx on roller_comment;
+-- drop index co_approved_idx on roller_comment;
 
 -- fix wacky indexs which ended up with a size constraint
 drop index rage_sid_idx on rag_entry;

Modified: 
roller/branches/roller_guice/apps/weblogger/src/sql/dbscripts.properties
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/sql/dbscripts.properties?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/sql/dbscripts.properties 
(original)
+++ roller/branches/roller_guice/apps/weblogger/src/sql/dbscripts.properties 
Tue Jun 19 12:29:52 2007
@@ -7,5 +7,5 @@
 # list all db templates to generate, separated by spaces
 templates=createdb 200-to-210-migration 210-to-230-migration \
 230-to-240-migration 240-to-300-migration 300-to-310-migration \
-310-to-320-migration 3xx-to-400-migration
+310-to-320-migration 320-to-400-migration
 

Modified: roller/branches/roller_guice/apps/weblogger/src/sql/droptables.sql
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/sql/droptables.sql?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/sql/droptables.sql 
(original)
+++ roller/branches/roller_guice/apps/weblogger/src/sql/droptables.sql Tue Jun 
19 12:29:52 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/branches/roller_guice/apps/weblogger/test/java/org/apache/roller/weblogger/ui/rendering/util/CommentValidatorTest.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/test/java/org/apache/roller/weblogger/ui/rendering/util/CommentValidatorTest.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/test/java/org/apache/roller/weblogger/ui/rendering/util/CommentValidatorTest.java
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/test/java/org/apache/roller/weblogger/ui/rendering/util/CommentValidatorTest.java
 Tue Jun 19 12:29:52 2007
@@ -25,6 +25,7 @@
 import org.apache.roller.weblogger.pojos.WeblogCategory;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.Weblog;
+import 
org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager;
 import org.apache.roller.weblogger.util.RollerMessages;
 
 /**

Modified: 
roller/branches/roller_guice/apps/weblogger/testdata/roller-custom.properties
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/testdata/roller-custom.properties?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/testdata/roller-custom.properties 
(original)
+++ 
roller/branches/roller_guice/apps/weblogger/testdata/roller-custom.properties 
Tue Jun 19 12:29:52 2007
@@ -22,12 +22,14 @@
 search.index.dir=search-index
 
 
-#jdbc.driverClass=com.mysql.jdbc.Driver
-#jdbc.connectionURL=jdbc:mysql://localhost:3306/rollertest
-#jdbc.username=scott
-#jdbc.password=tiger
+
+#database.jdbc.driverClass=com.mysql.jdbc.Driver
+#database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollertest
+#database.jdbc.username=scott
+#database.jdbc.password=tiger
 #hibernate.dialect=org.hibernate.dialect.MySQLDialect
 #openjpa.jdbc.DBDictionary=mysql(SupportsSubselect=false, 
SearchStringEscape=\\\\)
 
-openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE
+openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=INFO
+#openjpa.Log=DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE
 

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
 Tue Jun 19 12:29:52 2007
@@ -455,6 +455,10 @@
 createWeblog.error.missingEmailAddress=You must enter a valid email address
 createWeblog.error.handleExists=A weblog with that handle already exists
 
+# ----------------------------------------------------------- Auto-installation
+
+databaseError.title=Database error
+
 
 # --------------------------------------------------------------- Entry editors
 
@@ -724,7 +728,74 @@
 Click the following link and login as user [{2}] to accept or decline this \
 invitation <{3}>.
 
-# ------------------------------------------------------------------------ 
Login
+# ------------------------------------------------------------------- Installer
+
+installer.bannerTitleLeft=Apache Roller Weblogger
+installer.bannerTitleRight=Auto-Installer
+
+# database error
+installer.cannotConnectToDatabase=Cannot connect to database
+installer.whatHappened=What happened?
+installer.whatHappenedDatabaseConnectionError=\
+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 \
+the problem is an exception of type
+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. 
+installer.createTables=Would you like Roller to create the tables for you?
+installer.yesCreateTables=Yes - create tables now
+installer.tablesCreated=Tables created successfully
+installer.tablesCreatedExplanation=Database tables were created successfully \
+as you can see below. 
+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, \
+but the tables need to be upgraded.
+installer.upgradeTables=Would you like Roller to upgrade the tables for you?
+installer.yesUpgradeTables=Yes - upgrade tables now
+installer.tablesUpgraded=Tables were upgraded successfully
+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
 
 loginPage.title=Welcome to Roller
 loginPage.prompt=Please enter your username and password to login.
@@ -734,7 +805,7 @@
 loginPage.login=Login
 loginPage.reset=Reset
 
-# --------------------------------------------------------------- Bookmark 
Macro
+# -------------------------------------------------------------- Bookmark Macro
 
 macro.bookmark.urlFeed=URL of site's RSS feed
 macro.bookmark.error=The requested Bookmark Folder does not exist: {0}
@@ -961,7 +1032,7 @@
 
 pageForm.title=Edit Template
 pageForm.subtitle=Edit template <span>{0}</span> in weblog <span>{1}</span>
-pageForm.tip=You can edit this template to change what it generates.\
+pageForm.tip=You can edit this template to change what it generates. \
 Refer the the Roller Template Guide for information about the objects \
 and code you are allowed to use in a template. This is for advanced \
 users only, if you're not comfortable with HTML, you might want to leave \
@@ -1622,6 +1693,7 @@
 weblogEdit.recentEntries=Recent Weblog Entries
 weblogEdit.remove=Remove
 weblogEdit.save=Save as Draft
+weblogEdit.scheduled=Scheduled
 weblogEdit.scheduledEntries=Scheduled Entries
 weblogEdit.seconds=Seconds
 weblogEdit.status=Status

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/log4j.properties
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/log4j.properties?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/log4j.properties
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/log4j.properties
 Tue Jun 19 12:29:52 2007
@@ -30,7 +30,9 @@
 
 # Roller dependent libraries
 log4j.category.org.hibernate=INFO
-log4j.category.org.apache.struts=ERROR
+log4j.category.org.apache.struts2=INFO
+# the struts2 file upload stuff has some overly verbose messaging
+log4j.category.org.apache.struts2.interceptor.FileUploadInterceptor=WARN
 log4j.category.org.springframework=WARN
 log4j.category.org.acegisecurity=ERROR
 # Velocity talks a lot, so by default it is set to STFU mode

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/struts.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/struts.xml?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/struts.xml 
(original)
+++ roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/struts.xml 
Tue Jun 19 12:29:52 2007
@@ -88,7 +88,7 @@
                 class="org.apache.roller.weblogger.ui.struts2.core.Setup">
             <result name="success" type="tiles">.Setup</result>
         </action>
-            
+                        
         <action name="login"
                 class="org.apache.roller.weblogger.ui.struts2.core.Login">
             <result type="tiles">.Login</result>
@@ -119,6 +119,41 @@
             <result type="tiles">.MainMenu</result>
         </action>
         
+    </package>
+    
+    
+    <!-- Weblogger install/bootstrap actions -->
+    <package name="weblogger-install" namespace="/roller-ui/install" 
extends="weblogger">
+        
+        <action name="databaseError"
+                
class="org.apache.roller.weblogger.ui.struts2.core.DatabaseError">
+            <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>
+        </action>
+            
+        <action name="upgradeDatabase!*" method="{1}"
+                
class="org.apache.roller.weblogger.ui.struts2.core.UpgradeDatabase">
+            <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/branches/roller_guice/apps/weblogger/web/WEB-INF/dbscripts/mysql/130-to-200-migration.sql
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/dbscripts/mysql/130-to-200-migration.sql?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/dbscripts/mysql/130-to-200-migration.sql
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/dbscripts/mysql/130-to-200-migration.sql
 Tue Jun 19 12:29:52 2007
@@ -61,6 +61,11 @@
 update weblogentry set status='', pubtime=pubtime, updatetime=updatetime;
 alter table weblogentry modify status varchar(20) not null;
 
+-- add new column which holds the locale for a weblog entry
+-- then set the values and make column not null
+    alter table weblogentry add column locale varchar(20) default null;
+create index we_locale_idx on weblogentry(locale);
+
 create index we_status_idx on weblogentry(status);
 create index weblogentry_userid_index on weblogentry(userid);
 
@@ -124,7 +129,7 @@
 
 -- Transfer old column data to the new column.  This is not critical as 
currently it is not used, and
 -- later the data will be generated by usage in the ping processor.
-update pingtarget set conditioncode=condition;
+-- update pingtarget set conditioncode=condition;
 
 -- Drop the old column 
 -- Don't do this until you're sure you don't need to back-off to Roller 1.2

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/admin/ModifyUser.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/admin/ModifyUser.jsp?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/admin/ModifyUser.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/admin/ModifyUser.jsp
 Tue Jun 19 12:29:52 2007
@@ -103,7 +103,7 @@
                         </a>
                     </td>
                     <td width="%15">
-                        <s:url action="postEntry" 
namespace="/roller-ui/authoring" id="newEntry">
+                        <s:url action="entryAdd" 
namespace="/roller-ui/authoring" id="newEntry">
                             <s:param name="weblog" 
value="#perms.website.handle" />
                         </s:url>
                         <img src='<s:url 
value="/images/page_white_edit.png"/>' />
@@ -111,7 +111,7 @@
                         <s:text name="userAdmin.newEntry" /></a>
                     </td>
                     <td width="%15">
-                        <s:url value="entries" 
namespace="/roller-ui/authoring" id="editEntries">
+                        <s:url action="entries" 
namespace="/roller-ui/authoring" id="editEntries">
                             <s:param name="weblog" 
value="#perms.website.handle" />
                         </s:url>
                         <img src='<s:url 
value="/images/page_white_edit.png"/>' />
@@ -119,7 +119,7 @@
                         <s:text name="userAdmin.editEntries" /></a> 
                     </td>
                     <td width="%15">
-                        <s:url value="settings" 
namespace="/roller-ui/authoring" id="manageWeblog">
+                        <s:url action="weblogConfig" 
namespace="/roller-ui/authoring" id="manageWeblog">
                             <s:param name="weblog" 
value="#perms.website.handle" />
                         </s:url>
                         <img src='<s:url 
value="/images/page_white_edit.png"/>' />

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryAdd.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryAdd.jsp?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryAdd.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryAdd.jsp
 Tue Jun 19 12:29:52 2007
@@ -23,7 +23,7 @@
     </s:text>
 </p>
 
-<s:form id="entry" action="entryAdd!save">
+<s:form id="entry" action="entryAdd!save" onsubmit="editorCleanup()">
     <s:hidden name="weblog" />
     
     <%-- ================================================================== 
--%>

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/editor/EntryEdit.jsp
 Tue Jun 19 12:29:52 2007
@@ -31,7 +31,7 @@
     </s:text>
 </p>
 
-<s:form id="entry" action="entryEdit!save">
+<s:form id="entry" action="entryEdit!save" onsubmit="editorCleanup()">
     <s:hidden name="weblog" />
     <s:hidden name="bean.id" />
     

Modified: 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/tiles/tiles-errorpage.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/tiles/tiles-errorpage.jsp?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/tiles/tiles-errorpage.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/WEB-INF/jsps/tiles/tiles-errorpage.jsp
 Tue Jun 19 12:29:52 2007
@@ -25,6 +25,10 @@
     </head>
     <body>
         
+        <div id="banner">
+            <tiles:insertAttribute name="banner" />
+        </div>
+        
         <div id="wrapper"> 
             <div id="leftcontent_wrap">
                 <div id="leftcontent"> 

Modified: roller/branches/roller_guice/apps/weblogger/web/WEB-INF/tiles.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/tiles.xml?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/web/WEB-INF/tiles.xml (original)
+++ roller/branches/roller_guice/apps/weblogger/web/WEB-INF/tiles.xml Tue Jun 
19 12:29:52 2007
@@ -53,6 +53,7 @@
     </definition>
     
     <definition name=".tiles-errorpage" 
template="/WEB-INF/jsps/tiles/tiles-errorpage.jsp">
+        <put name="banner"       value="/WEB-INF/jsps/tiles/empty.jsp" />
         <put name="head"         value="/WEB-INF/jsps/tiles/head.jsp" />
         <put name="messages"     value="/WEB-INF/jsps/tiles/messages.jsp" />
         <put name="content"      value="${content}" />
@@ -65,12 +66,8 @@
         <put name="content" value="/WEB-INF/jsps/errors/denied.jsp" />
     </definition>
     
-    
+        
     <!-- core pages (and associates) -->
-    <definition name=".Setup" extends=".tiles-simplepage" >
-        <put name="content" value="/WEB-INF/jsps/core/Setup.jsp" />
-    </definition>
-    
     <definition name=".Login" extends=".tiles-simplepage" >
         <put name="content" value="/WEB-INF/jsps/core/Login.jsp" />
     </definition>
@@ -102,6 +99,36 @@
     </definition>
     
     
+        <!-- setup pages -->
+    <definition name=".Setup" extends=".tiles-simplepage" >
+        <put name="content" value="/WEB-INF/jsps/core/Setup.jsp" />
+    </definition>
+    
+    <definition name=".CreateDatabase" extends=".tiles-errorpage" >
+        <put name="content" value="/WEB-INF/jsps/core/CreateDatabase.jsp" />
+        <put name="footer" value="/WEB-INF/jsps/tiles/empty.jsp" />
+        <put name="banner" value="/WEB-INF/jsps/tiles/bannerInstallation.jsp" 
/>
+    </definition>
+
+    <definition name=".UpgradeDatabase" extends=".tiles-errorpage" >
+        <put name="content" value="/WEB-INF/jsps/core/UpgradeDatabase.jsp" />
+        <put name="footer" value="/WEB-INF/jsps/tiles/empty.jsp" />
+        <put name="banner" value="/WEB-INF/jsps/tiles/bannerInstallation.jsp" 
/>
+    </definition>
+    
+    <definition name=".DatabaseError" extends=".tiles-errorpage" >
+        <put name="content" value="/WEB-INF/jsps/core/DatabaseError.jsp" />
+        <put name="footer" value="/WEB-INF/jsps/tiles/empty.jsp" />
+        <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" >
         <put name="content" value="/WEB-INF/jsps/admin/GlobalConfig.jsp" />

Modified: roller/branches/roller_guice/apps/weblogger/web/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/web.xml?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/web/WEB-INF/web.xml (original)
+++ roller/branches/roller_guice/apps/weblogger/web/WEB-INF/web.xml Tue Jun 19 
12:29:52 2007
@@ -45,6 +45,11 @@
     </filter>
     
     <filter>
+        <filter-name>BootstrapFilter</filter-name>
+        
<filter-class>org.apache.roller.weblogger.ui.core.filters.BootstrapFilter</filter-class>
+    </filter>
+    
+    <filter>
         <filter-name>CompressionFilter</filter-name>
         
<filter-class>org.apache.roller.weblogger.ui.core.filters.CompressionFilter</filter-class>
     </filter>
@@ -121,6 +126,12 @@
         <url-pattern>/*</url-pattern>
         <dispatcher>REQUEST</dispatcher>
         <dispatcher>FORWARD</dispatcher>
+    </filter-mapping>
+    
+    <filter-mapping>
+        <filter-name>BootstrapFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+        <dispatcher>REQUEST</dispatcher>
     </filter-mapping>
     
     <!-- Map everything to the PersistenceSessionFilter.

Modified: 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-text.jsp
 Tue Jun 19 12:29:52 2007
@@ -20,7 +20,7 @@
 
 <script type="text/javascript">
 <!--
-function postWeblogEntry() {
+function editorCleanup() {
     // no-op
 }
 function changeSize(e, num) {

Modified: 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-xinha.jsp
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-xinha.jsp?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-xinha.jsp
 (original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/roller-ui/authoring/editors/editor-xinha.jsp
 Tue Jun 19 12:29:52 2007
@@ -18,10 +18,9 @@
 <%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
 
 <script type="text/javascript">
-<!--
-function postWeblogEntry() {
-    document.weblogEntryFormEx.text.value = 
xinha_editors.xe_content.getHTML().trim();
-    document.weblogEntryFormEx.summary.value = 
xinha_editors.xe_summary.getHTML().trim();
+function editorCleanup() {
+    $('xe_content').value = xinha_editors.xe_content.getHTML().trim();
+    $('xe_summary').value = xinha_editors.xe_summary.getHTML().trim();
 }
 
 // (preferably absolute) URL (including trailing slash) where Xinha is 
installed
@@ -29,7 +28,6 @@
 
 // And the language we need to use in the editor.
 _editor_lang = "en"; 
--->
 </script>
 <script type="text/javascript" src='<s:url 
value="/roller-ui/authoring/editors/xinha/htmlarea.js" />'></script>
 <script type="text/javascript" src='<s:url 
value="/roller-ui/authoring/editors/xinha/my_config.js" />'></script> 
@@ -42,8 +40,4 @@
 <%-- ===================================================================== --%>
 <b><s:text name="weblogEdit.summary" /></b><br />
 <s:textarea id="xe_summary" name="bean.summary" rows="10" cols="50" 
cssStyle="width: 100%" />
-
-
  
-
-

Modified: roller/branches/roller_guice/apps/weblogger/web/themes/basic/theme.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/themes/basic/theme.xml?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/web/themes/basic/theme.xml 
(original)
+++ roller/branches/roller_guice/apps/weblogger/web/themes/basic/theme.xml Tue 
Jun 19 12:29:52 2007
@@ -6,7 +6,7 @@
     <author>Roller Weblogger</author>
     
     <!-- theme preview image -->
-    <preview-image path="sm-theme-basic.png" />
+    <preview-image path="basic-preview.png" />
     
     <!-- stylesheet -->
     <stylesheet>

Modified: 
roller/branches/roller_guice/apps/weblogger/web/themes/brushedmetal/theme.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/themes/brushedmetal/theme.xml?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/apps/weblogger/web/themes/brushedmetal/theme.xml 
(original)
+++ 
roller/branches/roller_guice/apps/weblogger/web/themes/brushedmetal/theme.xml 
Tue Jun 19 12:29:52 2007
@@ -6,7 +6,7 @@
     <author>Bryan Bell</author>
     
     <!-- theme preview image -->
-    <preview-image path="sm-theme-brushedmetal.png" />
+    <preview-image path="brushedmetal-preview.png" />
     
     <!-- stylesheet -->
     <stylesheet>

Modified: roller/branches/roller_guice/apps/weblogger/web/themes/sotto/theme.xml
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/themes/sotto/theme.xml?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/web/themes/sotto/theme.xml 
(original)
+++ roller/branches/roller_guice/apps/weblogger/web/themes/sotto/theme.xml Tue 
Jun 19 12:29:52 2007
@@ -6,7 +6,7 @@
     <author>Matt Raible</author>
     
     <!-- theme preview image -->
-    <preview-image path="sm-theme-sotto.png" />
+    <preview-image path="sotto-preview.png" />
     
     <!-- stylesheet -->
     <stylesheet>

Modified: 
roller/branches/roller_guice/components/core/src/java/org/apache/roller/util/DatabaseProvider.java
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/components/core/src/java/org/apache/roller/util/DatabaseProvider.java?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- 
roller/branches/roller_guice/components/core/src/java/org/apache/roller/util/DatabaseProvider.java
 (original)
+++ 
roller/branches/roller_guice/components/core/src/java/org/apache/roller/util/DatabaseProvider.java
 Tue Jun 19 12:29:52 2007
@@ -21,6 +21,8 @@
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -48,22 +50,30 @@
  * </pre>
  */
 @com.google.inject.Singleton
-public abstract class DatabaseProvider  {
+public class DatabaseProvider  {
     private static Log log = LogFactory.getLog(DatabaseProvider.class);
+
     public enum ConfigurationType {JNDI_NAME, JDBC_PROPERTIES;}
-        
-    protected ConfigurationType type = ConfigurationType.JNDI_NAME;
+    protected ConfigurationType type = ConfigurationType.JNDI_NAME; 
     
+    private static DatabaseProvider singletonInstance = null;
+    private static DatabaseProviderException startupException = null;
+    private static List<String> startupLog = new ArrayList<String>();
+    
+    protected DataSource dataSource = null;    
     protected String jndiName = null; 
-    protected DataSource dataSource = null;  
     
     protected String jdbcDriverClass = null;
     protected String jdbcConnectionURL = null;
     protected String jdbcPassword = null;
     protected String jdbcUsername = null;
     protected Properties props = null;
-   
     
+    
+    /**
+     * Reads configuraiton, loads driver or locates data-source and attempts
+     * to get test connecton so that we can fail early.
+     */ 
     protected void init(
         ConfigurationType type,
         String jndiName, 
@@ -78,42 +88,108 @@
         this.jdbcConnectionURL = jdbcConnectionURL;
         this.jdbcUsername      = jdbcUsername;
         this.jdbcPassword      = jdbcPassword;
+         
+        if ("jdbc".equals(type)) {
+            type = ConfigurationType.JDBC_PROPERTIES;
+        }
         
-        // init now so we fail early
+        successMessage("SUCCESS: Got parameters. Using configuration type " + 
type);
+
+        // If we're doing JDBC then attempt to load JDBC driver class
         if (getType() == ConfigurationType.JDBC_PROPERTIES) {
-            log.info("Using 'jdbc' properties based configuration");
+            successMessage("-- Using JDBC driver class: "   + jdbcDriverClass);
+            successMessage("-- Using JDBC connection URL: " + 
jdbcConnectionURL);
+            successMessage("-- Using JDBC username: "       + jdbcUsername);
+            successMessage("-- Using JDBC password: [hidden]");
             try {
                 Class.forName(getJdbcDriverClass());
             } catch (ClassNotFoundException ex) {
-                throw new DatabaseProviderException(
-                   "Cannot load specified JDBC driver class [" 
+getJdbcDriverClass()+ "]", ex);
+                String errorMsg = 
+                     "ERROR: cannot load JDBC driver class [" + 
getJdbcDriverClass()+ "]. "
+                    +"Likely problem: JDBC driver jar missing from server 
classpath.";
+                errorMessage(errorMsg);
+                startupException = new DatabaseProviderException(errorMsg, ex);
+                throw startupException;
             }
+            successMessage("SUCCESS: loaded JDBC driver class [" 
+getJdbcDriverClass()+ "]");
+            
             if (getJdbcUsername() != null || getJdbcPassword() != null) {
                 props = new Properties();
                 if (getJdbcUsername() != null) props.put("user", 
getJdbcUsername());
                 if (getJdbcPassword() != null) props.put("password", 
getJdbcPassword());
             }
-        } else {
-            log.info("Using 'jndi' based configuration");
+            
+        // Else attempt to locate JNDI datasource
+        } else { 
             String name = "java:comp/env/" + getJndiName();
+            successMessage("-- Using JNDI datasource name: " + name);
             try {
                 InitialContext ic = new InitialContext();
                 dataSource = (DataSource)ic.lookup(name);
             } catch (NamingException ex) {
-                throw new DatabaseProviderException(
-                    "ERROR looking up data-source with JNDI name: " + name, 
ex);
+                String errorMsg = 
+                    "ERROR: cannot locate JNDI DataSource [" +name+ "]. "
+                   +"Likely problem: no DataSource or datasource is 
misconfigured.";
+                errorMessage(errorMsg);
+                startupException =  new DatabaseProviderException(errorMsg, 
ex);
+                throw startupException;
             }            
+            successMessage("SUCCESS: located JNDI DataSource [" +name+ "]");
         }
+        
+        // So far so good. Now, can we get a connection?
         try { 
             Connection testcon = getConnection();
             testcon.close();
         } catch (Throwable t) {
-            throw new DatabaseProviderException("ERROR unable to obtain 
connection", t);
+            String errorMsg = 
+                "ERROR: unable to obtain database connection. "
+               +"Likely problem: bad connection parameters or database 
unavailable.";
+            errorMessage(errorMsg);
+            startupException =  new DatabaseProviderException(errorMsg, t);
+            throw startupException;
         }
     }
     
+    private void successMessage(String msg) {
+        startupLog.add(msg);
+        log.info(msg);
+    }
+    
+    private void errorMessage(String msg) {
+        startupLog.add(msg);
+        log.error(msg);
+    }
     
     /**
+     * Get global database provider singlton, instantiating if necessary.
+     */
+    public static DatabaseProvider getDatabaseProvider() throws 
DatabaseProviderException {
+        // No need to jam log with database connection attempts
+        if (startupException != null) {
+            throw startupException;
+        }
+        if (singletonInstance == null) {
+            singletonInstance = new DatabaseProvider();
+        }
+        return singletonInstance;
+    }
+    
+    /**
+     * Exception that occured during startup, or null if none occured.
+     */
+    public static DatabaseProviderException getStartupException() {
+        return startupException;
+    }
+
+    /** 
+     * List of success and error messages when class was first instantiated.
+     **/
+    public static List<String> getStartupLog() {
+        return startupLog;
+    }
+
+    /**
      * Get database connection from data-source or driver manager, depending 
      * on which is configured.
      */
@@ -148,4 +224,5 @@
     public String getJdbcUsername() {
         return jdbcUsername;
     }
-}
+
+}
\ No newline at end of file

Modified: roller/branches/roller_guice/merges.txt
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/merges.txt?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
--- roller/branches/roller_guice/merges.txt (original)
+++ roller/branches/roller_guice/merges.txt Tue Jun 19 12:29:52 2007
@@ -1,4 +1,7 @@
 
+June 19, 2007
+svn merge -r 545682:548758 https://svn.apache.org/repos/asf/roller/trunk
+
 June 10, 2007
 svn merge -r 545649:545682 https://svn.apache.org/repos/asf/roller/trunk
 

Modified: roller/branches/roller_guice/tools/roller-core/roller-core.jar
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/tools/roller-core/roller-core.jar?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
Binary files - no diff available.

Modified: 
roller/branches/roller_guice/tools/roller-planet/roller-planet-business.jar
URL: 
http://svn.apache.org/viewvc/roller/branches/roller_guice/tools/roller-planet/roller-planet-business.jar?view=diff&rev=548830&r1=548829&r2=548830
==============================================================================
Binary files - no diff available.


Reply via email to