File Source: abstractconfirmationstrategy.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.confirmation.AbstractConfirmationStrategy__static_init
          */
     1  package net.sourceforge.pebble.confirmation;
     2  
     3  import net.sourceforge.pebble.PluginProperties;
     4  import net.sourceforge.pebble.api.event.comment.CommentEvent;
     5  import net.sourceforge.pebble.api.event.comment.CommentListener;
     6  import net.sourceforge.pebble.api.confirmation.CommentConfirmationStrategy;
     7  import net.sourceforge.pebble.api.confirmation.TrackBackConfirmationStrategy;
     8  import net.sourceforge.pebble.domain.Blog;
     9  import net.sourceforge.pebble.domain.Comment;
    10  import net.sourceforge.pebble.event.response.ContentSpamListener;
    11  import net.sourceforge.pebble.event.response.IpAddressListener;
    12  import net.sourceforge.pebble.event.response.LinkSpamListener;
    13  import net.sourceforge.pebble.event.response.SpamScoreListener;
    14  import net.sourceforge.pebble.util.SecurityUtils;
    15  import net.sourceforge.pebble.PluginProperties;
    16  import net.sourceforge.pebble.api.event.comment.CommentEvent;
    17  import net.sourceforge.pebble.api.event.comment.CommentListener;
    18  import net.sourceforge.pebble.api.confirmation.CommentConfirmationStrategy;
    19  import net.sourceforge.pebble.api.confirmation.TrackBackConfirmationStrategy;
    20  import net.sourceforge.pebble.domain.Blog;
    21  import net.sourceforge.pebble.domain.Comment;
    22  import net.sourceforge.pebble.event.response.ContentSpamListener;
    23  import net.sourceforge.pebble.event.response.IpAddressListener;
    24  import net.sourceforge.pebble.event.response.LinkSpamListener;
    25  import net.sourceforge.pebble.event.response.SpamScoreListener;
    26  import net.sourceforge.pebble.util.SecurityUtils;
    27  
    28  /**
    29   * Starting point for ConfirmationStrategy implementations.
    30   *
    31   * @author    Simon Brown
    32   */
         /* 
    P/P   *  Method: void net.sourceforge.pebble.confirmation.AbstractConfirmationStrategy()
          */
    33  public abstract class AbstractConfirmationStrategy implements CommentConfirmationStrategy, TrackBackConfirmationStrategy {
    34  
    35    /** the name of the required override property */
    36    public static final String REQUIRED_KEY = "CommentConfirmationStrategy.required";
    37  
    38    /**
    39     * Called to determine whether confirmation is required. This default
    40     * implementation returns false if the user is authenticated. Otherwise,
    41     * it runs the default set of comment listeners to determine
    42     * whether the comment is spam. If so, true is returned.
    43     *
    44     * @param comment the Comment being confirmed
    45     * @return true if the comment should be confirmed, false otherwise
    46     */
    47    public boolean confirmationRequired(Comment comment) {
             /* 
    P/P       *  Method: bool confirmationRequired(Comment)
              * 
              *  Preconditions:
              *    comment != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    java.lang.String:equalsIgnoreCase(...)@68: {1}, {0}
              *    net.sourceforge.pebble.util.SecurityUtils:isUserAuthorisedForBlog(...)@52: {0}, {1}
              * 
              *  Preconditions:
              *    comment.blogEntry != null
              *    comment.blogEntry.blog.pluginProperties != null
              *    comment.blogEntry.blog != null
              *    (soft) comment.state != null
              *    (soft) init'ed(comment.state.name)
              * 
              *  Presumptions:
              *    net.sourceforge.pebble.domain.State__static_init.new State(State__static_init#1).name@66 != null
              * 
              *  Test Vectors:
              *    net.sourceforge.pebble.PluginProperties:getProperty(...)@49: Addr_Set{null}, Inverse{null}
              */
    48      PluginProperties props = comment.getBlogEntry().getBlog().getPluginProperties();
    49      String required = props.getProperty(REQUIRED_KEY);
    50  
    51      Blog blog = comment.getBlogEntry().getBlog();
    52      if (SecurityUtils.isUserAuthorisedForBlog(blog)) {
    53        return false;
    54      } else {
    55        // run a subset of the default comment listeners to figure out whether
    56        // the comment is spam
    57        CommentListener listener1 = new IpAddressListener();
    58        CommentListener listener2 = new LinkSpamListener();
    59        CommentListener listener3 = new ContentSpamListener();
    60        CommentListener listener4 = new SpamScoreListener();
    61        CommentEvent event = new CommentEvent(comment, CommentEvent.COMMENT_ADDED);
    62  
    63        listener1.commentAdded(event);
    64        listener2.commentAdded(event);
    65        listener3.commentAdded(event);
    66        listener4.commentAdded(event);
    67  
    68        return (required != null && required.equalsIgnoreCase("true")) || !comment.isApproved();
    69      }
    70    }
    71  
    72    /**
    73     * Called to determine whether confirmation is required.
    74     *
    75     * @param blog    the owning Blog
    76     * @return true if the confirmation is required, false otherwise
    77     */
    78    public boolean confirmationRequired(Blog blog) {
             /* 
    P/P       *  Method: bool confirmationRequired(Blog)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
    79      return !SecurityUtils.isUserAuthorisedForBlog(blog);
    80    }
    81  
    82  }








SofCheck Inspector Build Version : 2.22510
abstractconfirmationstrategy.java 2010-Jul-14 00:27:22
abstractconfirmationstrategy.class 2010-Jul-19 20:23:40