pebblecontextlistener.java

### File Source: pebblecontextlistener.java

             /*
        P/P   *  Method: net.sourceforge.pebble.web.listener.PebbleContextListener__static_init
              *
              *  Postconditions:
              *    init'ed(log)
              */
         1  /*
         2   * Copyright (c) 2003-2006, Simon Brown
         3   * All rights reserved.
         4   *
         5   * Redistribution and use in source and binary forms, with or without
         6   * modification, are permitted provided that the following conditions are met:
         7   *
         8   *   - Redistributions of source code must retain the above copyright
         9   *     notice, this list of conditions and the following disclaimer.
        10   *
        11   *   - Redistributions in binary form must reproduce the above copyright
        12   *     notice, this list of conditions and the following disclaimer in
        13   *     the documentation and/or other materials provided with the
        14   *     distribution.
        15   *
        16   *   - Neither the name of Pebble nor the names of its contributors may
        17   *     be used to endorse or promote products derived from this software
        18   *     without specific prior written permission.
        19   *
        20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
        21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
        24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        30   * POSSIBILITY OF SUCH DAMAGE.
        31   */
        32  package net.sourceforge.pebble.web.listener;
        33
        34  import net.sourceforge.pebble.Configuration;
        35  import net.sourceforge.pebble.PebbleContext;
        36  import net.sourceforge.pebble.dao.DAOFactory;
        37  import net.sourceforge.pebble.domain.*;
        38  import org.apache.commons.logging.Log;
        39  import org.apache.commons.logging.LogFactory;
             /*
        P/P   *  Method: void net.sourceforge.pebble.web.listener.PebbleContextListener()
              */
        40  import org.springframework.context.ApplicationContext;
        41  import org.springframework.web.context.support.WebApplicationContextUtils;
        42
        43  import javax.servlet.ServletContextEvent;
        44  import javax.servlet.ServletContextListener;
        45  import java.util.Collection;
        46
        47  /**
        48   * Allows the blog to be loaded when this web application is started up.
        49   *
        50   * @author    Simon Brown
        51   */
        52  public class PebbleContextListener implements ServletContextListener {
        53
        54    /** the log used by this class */
        55    private static Log log = LogFactory.getLog(PebbleContextListener.class);
        56
        57    /**
        58     * Called when the web application is started.
        59     *
        60     * @param event   a ServletContextEvent instance
        61     */
        62    public void contextInitialized(ServletContextEvent event) {
                 /*
        P/P       *  Method: void contextInitialized(ServletContextEvent)
                  *
                  *  Preconditions:
                  *    event != null
                  *    log != null
                  *
                  *  Presumptions:
                  *    java.lang.System:currentTimeMillis(...)@114 - java.lang.System:currentTimeMillis(...)@63 in -263..264-1
                  *    java.util.Iterator:next(...)@79 != null
                  *    javax.servlet.ServletContextEvent:getServletContext(...)@72 != null
                  *    net.sourceforge.pebble.domain.BlogManager:getBlogs(...)@78 != null
                  *    net.sourceforge.pebble.domain.BlogManager:getInstance(...)@74 != null
                  *    ...
                  *
                  *  Postconditions:
                  *    (soft) net.sourceforge.pebble.PebbleContext__static_init.new PebbleContext(PebbleContext__static_init#1).configuration != null
                  *    init'ed(net.sourceforge.pebble.PebbleContext__static_init.new PebbleContext(PebbleContext__static_init#1).webApplicationRoot)
                  *
                  *  Test Vectors:
                  *    java.util.Iterator:hasNext(...)@79: {1}, {0}
                  *    net.sourceforge.pebble.domain.Blog:getNumberOfBlogEntries(...)@82: {-231..-1, 1..232-1}, {0}
                  */
        63      long startTime = System.currentTimeMillis();
        64      log.info("Starting Pebble");
        65
        66      ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(event.getServletContext());
        67      Configuration config = (Configuration)applicationContext.getBean("pebbleConfiguration");
        68
        69      DAOFactory.setConfiguredFactory(config.getDaoFactory());
        70      PebbleContext ctx = PebbleContext.getInstance();
        71      ctx.setConfiguration(config);
        72      ctx.setWebApplicationRoot(event.getServletContext().getRealPath("/"));
        73
        74      BlogManager.getInstance().setMultiBlog(config.isMultiBlog());
        75      BlogManager.getInstance().startBlogs();
        76
        77      // find those blogs with no entries and add a welcome note
        78      Collection<Blog> blogs = (Collection<Blog>)BlogManager.getInstance().getBlogs();
        79      for (Blog blog : blogs) {
        80        try {
        81          // and add a default entry, if one doesn't exist
        82          if (blog.getNumberOfBlogEntries() == 0) {
        83            log.info("Creating 'welcome note' blog entry for " + blog.getId());
        84            BlogEntry blogEntry = new BlogEntry(blog);
        85            blogEntry.setTitle("Welcome");
        86            blogEntry.setBody(
        87                "<p>\n" +
        88                "Welcome to your new Pebble powered blog. Here are a few suggestions for getting started.\n" +
        89                "</p>\n" +
        90                "\n" +
        91                "<ul>\n" +
        92                "<li>Login to see the admin features of your blog. The default username is <code>username</code> and the password is <code>password</code>.</li>\n" +
        93                "<li>Modify your <a href=\"viewBlogProperties.secureaction\">blog properties</a></li>\n" +
        94                "<li><a href=\"addBlogEntry.secureaction\">Create a new blog entry</a>.</li>\n" +
        95                "<li>Give out a link to your <a href=\"./rss.xml\">RSS</a> feed.</li>\n" +
        96                "<li>Remove the default user and create your own user on the <a href=\"viewUsers.secureaction\">users page</a>.</li>\n" +
        97                "<li>Take a look at the <a href=\"./help/index.html\">online help</a>.</li>\n" +
        98                "<li>Delete this blog entry when you're finished with it.</li>\n" +
        99                "</ul>\n" +
       100                "\n" +
       101                "<p>\n" +
       102                "Have fun!\n" +
       103                "</p>");
       104            blogEntry.setAuthor("username");
       105            blogEntry.setPublished(true);
       106            BlogService service = new BlogService();
       107            service.putBlogEntry(blogEntry);
       108          }
       109        } catch (BlogServiceException e) {
       110          log.warn("Could not store 'welcome note' blog entry for " + blog.getId());
       111        }
       112      }
       113
       114      long endTime = System.currentTimeMillis();
       115      log.info("Pebble started in " + (endTime-startTime) + "ms");
       116    }
       117
       118    /**
       119     * Called when the web application is shutdown.
       120     *
       121     * @param event   a ServletContextEvent instance
       122     */
       123    public void contextDestroyed(ServletContextEvent event) {
                 /*
        P/P       *  Method: void contextDestroyed(ServletContextEvent)
                  *
                  *  Preconditions:
                  *    log != null
                  *
                  *  Presumptions:
                  *    net.sourceforge.pebble.domain.BlogManager:getInstance(...)@125 != null
                  */
       124      log.info("Stopping Pebble");
       125      BlogManager.getInstance().stopBlogs();
       126
       127      log.info("Pebble stopped");
       128    }
       129
       130  }

SofCheck Inspector Build Version : 2.22510

pebblecontextlistener.java | 2010-Jun-25 19:40:32
pebblecontextlistener.class | 2010-Jul-19 20:23:38