You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2006/07/24 23:57:33 UTC

svn commit: r425199 - in /incubator/roller/branches/roller_3.0: src/org/apache/roller/ui/rendering/model/ src/org/apache/roller/ui/rendering/servlets/ web/WEB-INF/classes/

Author: agilliland
Date: Mon Jul 24 14:57:33 2006
New Revision: 425199

URL: http://svn.apache.org/viewvc?rev=425199&view=rev
Log:
update model loading process so that it's fully configurable.  all models are defined in the roller.properties config now.


Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/model/ModelLoader.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/SearchServlet.java
    incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/model/ModelLoader.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/model/ModelLoader.java?rev=425199&r1=425198&r2=425199&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/model/ModelLoader.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/model/ModelLoader.java Mon Jul 24 14:57:33 2006
@@ -33,50 +33,13 @@
 
 
 /**
- * Loads page models (read-only data access objects which implement Model) 
- * and helpers (which "help" with HTML gen.) needed by page rendering process.
+ * Helps with model loading process.
  */
 public class ModelLoader {
     
     private static Log log = LogFactory.getLog(ModelLoader.class);
     
     
-    /** 
-     * Load helpers needed in weblog pages (e.g. calendar, menu).
-     */
-    public static void loadWeblogHelpers(Map model, Map initData) 
-            throws RollerException {
-        
-        // helps render the calendar
-        CalendarModel calendarTag = new CalendarModel();
-        calendarTag.init(initData);
-        model.put(calendarTag.getModelName(), calendarTag);
-        
-        // helps render menus
-        MenuModel menuTag = new MenuModel();
-        menuTag.init(initData);
-        model.put(menuTag.getModelName(), menuTag);
-        
-        // helps url building
-        URLModel urlModel = new URLModel();
-        urlModel.init(initData);
-        model.put(urlModel.getModelName(), urlModel);
-    }
-    
-    
-    /**
-     * Load generic utility helpers.
-     */
-    public static void loadUtilityHelpers(Map model, Map initData) 
-            throws RollerException {
-        
-        // general set of utilities
-        UtilitiesModel utils = new UtilitiesModel();
-        utils.init(initData);
-        model.put(utils.getModelName(), utils);
-    }
-    
-    
     /**
      * Load old page models, but only if velocity.pagemodel.classname defined.
      */
@@ -97,94 +60,18 @@
     
     
     /**
-     * Load set of common weblog models.
-     *
-     * This is the list of models defined by rendering.weblogPageModels
-     */
-    public static void loadPageModels(Map model, Map initData)
-            throws RollerException {
-        
-        String weblogModels = 
-                RollerConfig.getProperty("rendering.pageRenderModels");
-        loadModels(weblogModels, model, initData);
-    }
-    
-    
-    /**
-     * Load set of common feed models.
-     *
-     * This is the list of models defined by rendering.feedRendererModels
-     */
-    public static void loadFeedModels(Map model, Map initData)
-            throws RollerException {
-        
-        // feeds need url building too
-        URLModel urlModel = new URLModel();
-        urlModel.init(initData);
-        model.put(urlModel.getModelName(), urlModel);
-
-        String weblogModels = 
-                RollerConfig.getProperty("rendering.feedRenderModels");
-        loadModels(weblogModels, model, initData);
-    }
-    
-    
-    /**
-     * Load set of common search models.
-     *
-     * This is the list of models defined by rendering.searchRendererModels
-     */
-    public static void loadSearchModels(Map model, Map initData)
-            throws RollerException {
-        
-        String searchModels = 
-                RollerConfig.getProperty("rendering.searchRenderModels");
-        loadModels(searchModels, model, initData);
-    }
-    
-    
-    /**
-     * Load set of common site-wide models.
-     *
-     * This is the list of models defined by rendering.sitePageModels
-     */
-    public static void loadSiteModels(Map model, Map initData)
-            throws RollerException {
-        
-        String weblogModels = 
-                RollerConfig.getProperty("rendering.siteRenderModels");
-        loadModels(weblogModels, model, initData);
-    }
-    
-    
-    /**
-     * Load set of custom models allowed for the given weblog.
+     * Load set of custom models set for the given weblog.
      *
      * Does not fail if there is a problem with one of the models.
      */
-    public static void loadCustomModels(
-            WebsiteData weblog, 
-            Map model,
-            Map initData) {
+    public static void loadCustomModels(WebsiteData weblog, Map model, Map initData) {
         
         if (weblog.getPageModels() != null) {
-            String[] weblogModels = 
-                Utilities.stringToStringArray(weblog.getPageModels(), ",");
-            for (int i=0; i<weblogModels.length; i++) {
-                try { // don't die just because of one bad custom model
-                    Class modelClass = Class.forName(weblogModels[i]);
-                    Model pageModel = (Model)modelClass.newInstance();
-                    pageModel.init(initData);             
-                    model.put(pageModel.getModelName(), pageModel);
-                } catch (RollerException re) {
-                    log.warn("ERROR: initializing a plugin: " + weblogModels[i]);
-                } catch (ClassNotFoundException cnfe) {
-                    log.warn("ERROR: can't find model: " + weblogModels[i]);
-                } catch (InstantiationException ie) {
-                    log.warn("ERROR: insantiating model: " + weblogModels[i]);
-                } catch (IllegalAccessException iae) {
-                    log.warn("ERROR: access exception model: " + weblogModels[i]);
-                }
+            try {
+                loadModels(weblog.getPageModels(), model, initData, false);
+            } catch(RollerException ex) {
+                // shouldn't happen, but log it just in case
+                log.error("Error loading weblog custom models", ex);
             }
         }     
     }
@@ -192,29 +79,46 @@
     
     /**
      * Convenience method to load a comma-separated list of page models.
-     * If any of the models fail to load, throws an exception.
+     *
+     * Optionally fails if any exceptions are thrown when initializing
+     * the Model instances.
      */
-    private static void loadModels(
-            String modelsString,
-            Map model,
-            Map initData) throws RollerException {
+    public static void loadModels(String modelsString, Map model, 
+                                   Map initData, boolean fail) 
+            throws RollerException {
         
-        String currentModel = null;
-        try { // if we can't load a configued page models, then bail out
-            String[] models = Utilities.stringToStringArray(modelsString, ",");
-            for (int i=0; i<models.length; i++) {
-                currentModel = models[i];
-                Class modelClass = Class.forName(currentModel);
+        String[] models = Utilities.stringToStringArray(modelsString, ",");
+        for(int i=0; i < models.length; i++) {
+            try {
+                Class modelClass = Class.forName(models[i]);
                 Model pageModel = (Model) modelClass.newInstance();
-                pageModel.init(initData);            
+                pageModel.init(initData);
                 model.put(pageModel.getModelName(), pageModel);
+            } catch (RollerException re) {
+                if(fail) {
+                    throw re;
+                } else {
+                    log.warn("Error initializing model: " + models[i]);
+                }
+            } catch (ClassNotFoundException cnfe) {
+                if(fail) {
+                    throw new RollerException("Error finding model: " + models[i], cnfe);
+                } else {
+                    log.warn("Error finding model: " + models[i]);
+                }
+            } catch (InstantiationException ie) {
+                if(fail) {
+                    throw new RollerException("Error insantiating model: " + models[i], ie);
+                } else {
+                    log.warn("Error insantiating model: " + models[i]);
+                }
+            } catch (IllegalAccessException iae) {
+                if(fail) {
+                    throw new RollerException("Error accessing model: " + models[i], iae);
+                } else {
+                    log.warn("Error accessing model: " + models[i]);
+                }
             }
-        } catch (ClassNotFoundException cnfe) {
-            throw new RollerException("ERROR: can't find model: " + currentModel);
-        } catch (InstantiationException ie) {
-            throw new RollerException("ERROR: insantiating model: " + currentModel);
-        } catch (IllegalAccessException iae) {
-            throw new RollerException("ERROR: access exception model: " + currentModel);
         }
     }
     

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java?rev=425199&r1=425198&r2=425199&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/FeedServlet.java Mon Jul 24 14:57:33 2006
@@ -29,6 +29,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
+import org.apache.roller.config.RollerConfig;
 import org.apache.roller.config.RollerRuntimeConfig;
 import org.apache.roller.pojos.StaticTemplate;
 import org.apache.roller.pojos.Template;
@@ -186,18 +187,17 @@
             initData.put("feedRequest", feedRequest);
             initData.put("weblogRequest", feedRequest);
             
-            // Feeds get the weblog specific page model
-            ModelLoader.loadFeedModels(model, initData);
-            
-            // special handling for site wide feed
-            if (RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
-                ModelLoader.loadSiteModels(model, initData);
+            // Load models for feeds
+            String feedModels = RollerConfig.getProperty("rendering.feedModels");
+            ModelLoader.loadModels(feedModels, model, initData, true);
+            
+            // Load special models for site-wide blog
+            if(RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
+                String siteModels = RollerConfig.getProperty("rendering.siteModels");
+                ModelLoader.loadModels(siteModels, model, initData, true);
             }
-            
-            // utility helpers and plugin helpers
-            ModelLoader.loadUtilityHelpers(model, initData);
 
-            // Feeds get weblog's custom models too
+            // Load weblog custom models
             ModelLoader.loadCustomModels(weblog, model, initData);
             
         } catch (RollerException ex) {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java?rev=425199&r1=425198&r2=425199&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PageServlet.java Mon Jul 24 14:57:33 2006
@@ -275,19 +275,17 @@
             initData.put("weblogRequest", pageRequest);
             initData.put("pageContext", pageContext);
             
-            // Feeds get the weblog specific page model
-            ModelLoader.loadPageModels(model, initData);
+            // Load models for pages
+            String pageModels = RollerConfig.getProperty("rendering.pageModels");
+            ModelLoader.loadModels(pageModels, model, initData, true);
             
-            // special handling for site wide weblog
-            if(isSiteWide) {
-                ModelLoader.loadSiteModels(model, initData);
+            // Load special models for site-wide blog
+            if(RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
+                String siteModels = RollerConfig.getProperty("rendering.siteModels");
+                ModelLoader.loadModels(siteModels, model, initData, true);
             }
-            
-            // add helpers
-            ModelLoader.loadUtilityHelpers(model, initData);
-            ModelLoader.loadWeblogHelpers(model, initData);
 
-            // Feeds get weblog's custom models too
+            // Load weblog custom models
             ModelLoader.loadCustomModels(weblog, model, initData);
             
             // ick, gotta load pre-3.0 model stuff as well :(

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java?rev=425199&r1=425198&r2=425199&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/PreviewServlet.java Mon Jul 24 14:57:33 2006
@@ -31,6 +31,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
+import org.apache.roller.config.RollerConfig;
 import org.apache.roller.config.RollerRuntimeConfig;
 import org.apache.roller.pojos.Template;
 import org.apache.roller.pojos.Theme;
@@ -150,20 +151,18 @@
             initData.put("weblogRequest", previewRequest);
             initData.put("pageContext", pageContext);
             
-            // standard weblog models
-            ModelLoader.loadPageModels(model, initData);
-            
-            // special handling for site wide weblog
-            if (RollerRuntimeConfig.isSiteWideWeblog(tmpWebsite.getHandle())) {
-                ModelLoader.loadSiteModels(model, initData);
+            // Load models for pages
+            String pageModels = RollerConfig.getProperty("rendering.pageModels");
+            ModelLoader.loadModels(pageModels, model, initData, true);
+            
+            // Load special models for site-wide blog
+            if(RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
+                String siteModels = RollerConfig.getProperty("rendering.siteModels");
+                ModelLoader.loadModels(siteModels, model, initData, true);
             }
-            
-            // add helpers
-            ModelLoader.loadUtilityHelpers(model, initData);
-            ModelLoader.loadWeblogHelpers(model, initData);
-            
-            // weblog's custom models
-            ModelLoader.loadCustomModels(tmpWebsite, model, initData);
+
+            // Load weblog custom models
+            ModelLoader.loadCustomModels(weblog, model, initData);
             
             // ick, gotta load pre-3.0 model stuff as well :(
             ModelLoader.loadOldModels(model, request, response, pageContext, previewRequest);

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/SearchServlet.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/SearchServlet.java?rev=425199&r1=425198&r2=425199&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/SearchServlet.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/servlets/SearchServlet.java Mon Jul 24 14:57:33 2006
@@ -31,6 +31,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
+import org.apache.roller.config.RollerConfig;
 import org.apache.roller.config.RollerRuntimeConfig;
 import org.apache.roller.model.RollerFactory;
 import org.apache.roller.model.UserManager;
@@ -129,19 +130,17 @@
             pageRequest.setWeblogCategoryName(searchRequest.getWeblogCategoryName());
             initData.put("pageRequest", pageRequest);
         
-            // default weblog models
-            ModelLoader.loadSearchModels(model, initData);
-            
-            // special site wide models
-            if (RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
-                ModelLoader.loadSiteModels(model, initData);
+            // Load models for pages
+            String searchModels = RollerConfig.getProperty("rendering.searchModels");
+            ModelLoader.loadModels(searchModels, model, initData, true);
+            
+            // Load special models for site-wide blog
+            if(RollerRuntimeConfig.isSiteWideWeblog(weblog.getHandle())) {
+                String siteModels = RollerConfig.getProperty("rendering.siteModels");
+                ModelLoader.loadModels(siteModels, model, initData, true);
             }
-            
-            // add helpers
-            ModelLoader.loadUtilityHelpers(model, initData);
-            ModelLoader.loadWeblogHelpers(model, initData);
 
-            // Search gets weblog's custom models too
+            // Load weblog custom models
             ModelLoader.loadCustomModels(weblog, model, initData);
             
             // ick, gotta load pre-3.0 model stuff as well :(

Modified: incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties?rev=425199&r1=425198&r2=425199&view=diff
==============================================================================
--- incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/branches/roller_3.0/web/WEB-INF/classes/roller.properties Mon Jul 24 14:57:33 2006
@@ -92,23 +92,34 @@
 # The set of user defined request mappers.  These are prepended to the list above.
 rendering.userRequestMappers=
 
-# Set of page models to be created for weblog rendering
-rendering.pageRenderModels=\
+# Set of models to be made available for weblog page rendering
+rendering.pageModels=\
 org.apache.roller.ui.rendering.model.PageModel,\
-org.apache.roller.ui.rendering.model.ConfigModel
+org.apache.roller.ui.rendering.model.ConfigModel,\
+org.apache.roller.ui.rendering.model.UtilitiesModel,\
+org.apache.roller.ui.rendering.model.URLModel,\
+org.apache.roller.ui.rendering.model.CalendarModel,\
+org.apache.roller.ui.rendering.model.MenuModel
 
-rendering.feedRenderModels=\
+# Set of models to be made available for weblog feed rendering
+rendering.feedModels=\
 org.apache.roller.ui.rendering.model.FeedModel,\
-org.apache.roller.ui.rendering.model.ConfigModel
+org.apache.roller.ui.rendering.model.ConfigModel,\
+org.apache.roller.ui.rendering.model.UtilitiesModel,\
+org.apache.roller.ui.rendering.model.URLModel
 
-rendering.searchRenderModels=\
+# Set of models to be made available for weblog search rendering
+rendering.searchModels=\
 org.apache.roller.ui.rendering.model.SearchResultsModel,\
-org.apache.roller.ui.rendering.model.ConfigModel
+org.apache.roller.ui.rendering.model.ConfigModel,\
+org.apache.roller.ui.rendering.model.UtilitiesModel,\
+org.apache.roller.ui.rendering.model.URLModel,\
+org.apache.roller.ui.rendering.model.CalendarModel,\
+org.apache.roller.ui.rendering.model.MenuModel
 
-# Set of page models to be created for site-wide rendering
-rendering.siteRenderModels=\
-org.apache.roller.ui.rendering.model.SiteModel,\
-org.apache.roller.ui.rendering.model.PlanetModel
+# Set of page models specifically for site-wide rendering
+rendering.siteModels=\
+org.apache.roller.ui.rendering.model.SiteModel
 
 # Deprecated Roller 2.X page model configuration
 # Comment out this property to completely disable Roller 2.X page models