addtrackbackaction.java

### File Source: addtrackbackaction.java

             /*
        P/P   *  Method: net.sourceforge.pebble.web.action.AddTrackBackAction__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.action;
        33
        34  import net.sourceforge.pebble.Constants;
        35  import net.sourceforge.pebble.trackback.TrackBackTokenManager;
        36  import net.sourceforge.pebble.domain.*;
        37  import net.sourceforge.pebble.web.view.View;
        38  import net.sourceforge.pebble.web.view.impl.TrackBackResponseView;
        39  import org.apache.commons.logging.Log;
        40  import org.apache.commons.logging.LogFactory;
        41
             /*
        P/P   *  Method: void net.sourceforge.pebble.web.action.AddTrackBackAction()
              */
        42  import javax.servlet.ServletException;
        43  import javax.servlet.http.HttpServletRequest;
        44  import javax.servlet.http.HttpServletResponse;
        45
        46  /**
        47   * Adds a TrackBack to an existing blog entry.
        48   *
        49   * @author    Simon Brown
        50   */
        51  public class AddTrackBackAction extends Action {
        52
        53    /** the log used by this class */
        54    private static Log log = LogFactory.getLog(AddTrackBackAction.class);
        55
        56    /**
        57     * Peforms the processing associated with this action.
        58     *
        59     * @param request  the HttpServletRequest instance
        60     * @param response the HttpServletResponse instance
        61     * @return the name of the next view
        62     */
        63    public View process(HttpServletRequest request, HttpServletResponse response) throws ServletException {
        64      try {
                   /*
        P/P         *  Method: View process(HttpServletRequest, HttpServletResponse)
                    *
                    *  Preconditions:
                    *    request != null
                    *    this.model != null
                    *    this.model.data != null
                    *    (soft) net.sourceforge.pebble.trackback.TrackBackTokenManager__static_init.new TrackBackTokenManager(TrackBackTokenManager__static_init#1).tokens != null
                    *
                    *  Presumptions:
                    *    net.sourceforge.pebble.domain.BlogService:getBlogEntry(...)@86 != null
                    *
                    *  Postconditions:
                    *    return_value in Addr_Set{&new TrackBackResponseView(process#9),&new TrackBackResponseView(process#7),&new TrackBackResponseView(process#4),&new TrackBackResponseView(process#2)}
                    *    new TrackBackResponseView(process#2) num objects <= 1
                    *    new TrackBackResponseView(process#4) num objects <= 1
                    *    new TrackBackResponseView(process#7) num objects <= 1
                    *    new TrackBackResponseView(process#9) num objects <= 1
                    *
                    *  Test Vectors:
                    *    java.lang.String:length(...)@76: {1..232-1}, {0}
                    *    javax.servlet.http.HttpServletRequest:getParameter(...)@72: Addr_Set{null}, Inverse{null}
                    *    net.sourceforge.pebble.domain.BlogEntry:isTrackBacksEnabled(...)@89: {0}, {1}
                    */
        65        Blog blog = (Blog)getModel().get(Constants.BLOG_KEY);
        66        BlogEntry blogEntry = null;
        67
        68        String entry = request.getParameter("entry");
        69        String token = request.getParameter("token");
        70        String title = request.getParameter("title");
        71        String excerpt = request.getParameter("excerpt");
        72        String url = request.getParameter("url");
        73        String blogName = request.getParameter("blog_name");
        74        String ipAddress = request.getRemoteAddr();
        75
        76        if (url == null || url.length() == 0) {
        77          getModel().put("errorCode", new Integer(1));
        78          getModel().put("message", "The URL (permalink) must be specified for TrackBacks");
        79          return new TrackBackResponseView();
        80        } else if (!TrackBackTokenManager.getInstance().isValid(token)) {
        81          getModel().put("errorCode", new Integer(1));
        82          getModel().put("message", "The token has expired or is invalid");
        83          return new TrackBackResponseView();
        84        } else {
        85          BlogService service = new BlogService();
        86          blogEntry = service.getBlogEntry(blog, entry);
        87
        88          // only add the TrackBack if they are enabled for the entry
        89          if (blogEntry.isTrackBacksEnabled()) {
        90            TrackBack trackBack = blogEntry.createTrackBack(title, excerpt, url, blogName, ipAddress);
        91            blogEntry.addTrackBack(trackBack);
        92            service.putBlogEntry(blogEntry);
        93            TrackBackTokenManager.getInstance().expire(token);
        94
        95            getModel().put("errorCode", new Integer(0));
        96            return new TrackBackResponseView();
        97          } else {
        98            getModel().put("errorCode", new Integer(1));
        99            getModel().put("message", "TrackBacks are not enabled for this blog entry");
       100            return new TrackBackResponseView();
       101          }
       102        }
       103      } catch (Exception e) {
       104        log.error(e.getMessage(), e);
       105        e.printStackTrace();
       106        throw new ServletException(e);
       107      }
       108    }
       109
       110  }

SofCheck Inspector Build Version : 2.22510

addtrackbackaction.java | 2010-Jun-25 19:40:34
addtrackbackaction.class | 2010-Jul-19 20:23:38