File Source: FeedModel.java

         /* 
    P/P   *  Method: org.apache.roller.weblogger.ui.rendering.model.FeedModel$FeedEntriesPager__static_init
          */
     1  /*
     2   * Licensed to the Apache Software Foundation (ASF) under one or more
     3   *  contributor license agreements.  The ASF licenses this file to You
     4   * under the Apache License, Version 2.0 (the "License"); you may not
     5   * use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.  For additional information regarding
    15   * copyright in this work, please see the NOTICE file in the top level
    16   * directory of this distribution.
    17   */
    18  
    19  package org.apache.roller.weblogger.ui.rendering.model;
    20  
    21  import java.util.HashMap;
    22  import java.util.List;
    23  import java.util.Map;
    24  import org.apache.commons.logging.Log;
    25  import org.apache.commons.logging.LogFactory;
    26  import org.apache.roller.weblogger.WebloggerException;
    27  import org.apache.roller.weblogger.business.URLStrategy;
    28  import org.apache.roller.weblogger.business.WebloggerFactory;
    29  import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
    30  import org.apache.roller.weblogger.pojos.Weblog;
    31  import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
    32  import org.apache.roller.weblogger.ui.rendering.pagers.CommentsPager;
    33  import org.apache.roller.weblogger.ui.rendering.pagers.Pager;
    34  import org.apache.roller.weblogger.ui.rendering.pagers.WeblogEntriesListPager;
    35  import org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest;
    36  import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;
    37  import org.apache.roller.weblogger.util.URLUtilities;
    38  
    39  
    40  /**
    41   * Model which provides information needed to render a feed.
    42   */
         /* 
    P/P   *  Method: int access$100()
          * 
          *  Preconditions:
          *    init'ed(DEFAULT_ENTRIES)
          * 
          *  Postconditions:
          *    return_value == DEFAULT_ENTRIES
          *    init'ed(return_value)
          */
    43  public class FeedModel implements Model {
    44      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.rendering.model.FeedModel__static_init
              * 
              *  Postconditions:
              *    init'ed(DEFAULT_ENTRIES)
              *    init'ed(log)
              */
    45      private static Log log = LogFactory.getLog(FeedModel.class); 
    46      
    47      private static int DEFAULT_ENTRIES = WebloggerRuntimeConfig.getIntProperty("site.newsfeeds.defaultEntries");
    48      
    49      private WeblogFeedRequest feedRequest = null;
    50      private URLStrategy urlStrategy = null;
    51      private Weblog weblog = null;
    52      
    53      
    54      public void init(Map initData) throws WebloggerException {
    55          
    56          // we expect the init data to contain a weblogRequest object
                 /* 
    P/P           *  Method: void init(Map)
                  * 
                  *  Preconditions:
                  *    initData != null
                  * 
                  *  Presumptions:
                  *    java.util.Map:get(...)@57 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@74 != null
                  *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:instanceof(...)@64 == 1
                  * 
                  *  Postconditions:
                  *    (soft) this.feedRequest != null
                  *    init'ed(this.urlStrategy)
                  *    init'ed(this.weblog)
                  * 
                  *  Test Vectors:
                  *    java.util.Map:get(...)@72: Inverse{null}, Addr_Set{null}
                  */
    57          WeblogRequest weblogRequest = (WeblogRequest) initData.get("parsedRequest");
    58          if(weblogRequest == null) {
    59              throw new WebloggerException("expected weblogRequest from init data");
    60          }
    61          
    62          // PageModel only works on page requests, so cast weblogRequest
    63          // into a WeblogPageRequest and if it fails then throw exception
    64          if(weblogRequest instanceof WeblogFeedRequest) {
    65              this.feedRequest = (WeblogFeedRequest) weblogRequest;
    66          } else {
    67              throw new WebloggerException("weblogRequest is not a WeblogFeedRequest."+
    68                      "  FeedModel only supports feed requests.");
    69          }
    70          
    71          // look for url strategy
    72          urlStrategy = (URLStrategy) initData.get("urlStrategy");
    73          if(urlStrategy == null) {
    74              urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
    75          }
    76          
    77          // extract weblog object
    78          weblog = feedRequest.getWeblog();
    79      }
    80      
    81      
    82      /** Template context name to be used for model */
    83      public String getModelName() {
                 /* 
    P/P           *  Method: String getModelName()
                  * 
                  *  Postconditions:
                  *    return_value == &"model"
                  */
    84          return "model";
    85      }
    86      
    87      
    88      /**
    89       * Get the weblog locale used to render this page, null if no locale.
    90       */
    91      public String getLocale() {
                 /* 
    P/P           *  Method: String getLocale()
                  * 
                  *  Preconditions:
                  *    this.feedRequest != null
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  */
    92          return feedRequest.getLocale();
    93      }
    94      
    95      
    96      /**
    97       * Get weblog being displayed.
    98       */
    99      public WeblogWrapper getWeblog() {
                 /* 
    P/P           *  Method: WeblogWrapper getWeblog()
                  * 
                  *  Preconditions:
                  *    init'ed(this.urlStrategy)
                  *    this.weblog != null
                  * 
                  *  Postconditions:
                  *    return_value == &new WeblogWrapper(wrap#1)
                  *    new WeblogWrapper(wrap#1) num objects == 1
                  *    new WeblogWrapper(wrap#1).pojo == this.weblog
                  *    new WeblogWrapper(wrap#1).pojo != null
                  *    new WeblogWrapper(wrap#1).urlStrategy == this.urlStrategy
                  *    init'ed(new WeblogWrapper(wrap#1).urlStrategy)
                  */
   100          return WeblogWrapper.wrap(weblog, urlStrategy);
   101      }
   102      
   103      
   104      /**
   105       * Get category path or name specified by request.
   106       */
   107      public boolean getExcerpts() {
                 /* 
    P/P           *  Method: bool getExcerpts()
                  * 
                  *  Preconditions:
                  *    this.feedRequest != null
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  */
   108          return feedRequest.isExcerpts();
   109      }
   110      
   111      
   112      /**
   113       * Get category path or name specified by request.
   114       */
   115      public String getCategoryPath() {
                 /* 
    P/P           *  Method: String getCategoryPath()
                  * 
                  *  Preconditions:
                  *    this.feedRequest != null
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  */
   116          return feedRequest.getWeblogCategoryName();
   117      }
   118      
   119      /**
   120       * Gets most recent entries limited by: weblog and category specified in 
   121       * request plus the weblog.entryDisplayCount.
   122       */
   123      public Pager getWeblogEntriesPager() {
                 /* 
    P/P           *  Method: Pager getWeblogEntriesPager()
                  * 
                  *  Preconditions:
                  *    this.feedRequest != null
                  *    this.urlStrategy != null
                  *    (soft) DEFAULT_ENTRIES <= 232-2
                  *    (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogEntriesListPager.log != null
                  * 
                  *  Postconditions:
                  *    return_value == &new FeedModel$FeedEntriesPager(getWeblogEntriesPager#1)
                  *    new ArrayList(getItems#1) num objects == 1
                  *    new FeedModel$FeedEntriesPager(getWeblogEntriesPager#1) num objects == 1
                  *    return_value.entries == &new ArrayList(getItems#1)
                  *    return_value.feedRequest == this.feedRequest
                  *    return_value.feedRequest != null
                  *    init'ed(return_value.lastUpdated)
                  *    return_value.length == DEFAULT_ENTRIES
                  *    (soft) return_value.length <= 232-2
                  *    init'ed(return_value.locale)
                  *    ...
                  */
   124          return new FeedEntriesPager(feedRequest);        
   125      }
   126      
   127      
   128      /**
   129       * Gets most recent comments limited by: weblog specified in request and 
   130       * the weblog.entryDisplayCount.
   131       */
   132      public Pager getCommentsPager() {
                 /* 
    P/P           *  Method: Pager getCommentsPager()
                  * 
                  *  Preconditions:
                  *    this.feedRequest != null
                  *    this.urlStrategy != null
                  *    (soft) DEFAULT_ENTRIES <= 232-2
                  *    (soft) org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.log != null
                  * 
                  *  Postconditions:
                  *    return_value == &new FeedModel$FeedCommentsPager(getCommentsPager#1)
                  *    new ArrayList(getItems#1) num objects == 1
                  *    new FeedModel$FeedCommentsPager(getCommentsPager#1) num objects == 1
                  *    return_value.comments == &new ArrayList(getItems#1)
                  *    return_value.feedRequest == this.feedRequest
                  *    return_value.feedRequest != null
                  *    init'ed(return_value.lastUpdated)
                  *    return_value.length == DEFAULT_ENTRIES
                  *    (soft) return_value.length <= 232-2
                  *    init'ed(return_value.locale)
                  *    ...
                  */
   133          return new FeedCommentsPager(feedRequest);
   134      }    
   135          
   136      /**
   137       * Returns the list of tags specified in the request /?tags=foo+bar
   138       * @return
   139       */
   140      public List getTags() {
                 /* 
    P/P           *  Method: List getTags()
                  * 
                  *  Preconditions:
                  *    this.feedRequest != null
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  */
   141          return feedRequest.getTags();
   142      }    
   143  
   144      public class FeedEntriesPager extends WeblogEntriesListPager {
   145          
   146          private WeblogFeedRequest feedRequest;
   147          
                 /* 
    P/P           *  Method: void org.apache.roller.weblogger.ui.rendering.model.FeedModel$FeedEntriesPager(FeedModel, WeblogFeedRequest)
                  * 
                  *  Preconditions:
                  *    Param_1 != null
                  *    Param_1.urlStrategy != null
                  *    feedRequest != null
                  *    (soft) org/apache/roller/weblogger/ui/rendering/model/FeedModel.DEFAULT_ENTRIES <= 232-2
                  *    (soft) org/apache/roller/weblogger/ui/rendering/pagers/WeblogEntriesListPager.log != null
                  * 
                  *  Postconditions:
                  *    this.entries == &new ArrayList(getItems#1)
                  *    this.feedRequest == feedRequest
                  *    this.feedRequest != null
                  *    init'ed(this.lastUpdated)
                  *    this.length == org/apache/roller/weblogger/ui/rendering/model/FeedModel.DEFAULT_ENTRIES
                  *    (soft) this.length <= 232-2
                  *    init'ed(this.locale)
                  *    init'ed(this.more)
                  *    this.page >= 0
                  *    init'ed(this.queryCat)
                  *    ...
                  */
   148          public FeedEntriesPager(WeblogFeedRequest feedRequest) {
   149              super(urlStrategy, urlStrategy.getWeblogFeedURL(feedRequest.getWeblog(), 
   150                      feedRequest.getLocale(), feedRequest.getType(),
   151                      feedRequest.getFormat(), null, null, null, false, true), 
   152                      feedRequest.getWeblog(), null, feedRequest.getWeblogCategoryName(), feedRequest.getTags(),
   153                      feedRequest.getLocale(), -1, feedRequest.getPage(), DEFAULT_ENTRIES);
   154              this.feedRequest = feedRequest;
   155          }
   156          
   157          protected String createURL(String url, Map params) {
                     /* 
    P/P               *  Method: String createURL(String, Map)
                      * 
                      *  Preconditions:
                      *    this.feedRequest != null
                      *    (soft) params != null
                      * 
                      *  Postconditions:
                      *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                      *    return_value == &java.lang.StringBuilder:toString(...)
                      * 
                      *  Test Vectors:
                      *    java.lang.String:length(...)@163: {0}, {1..232-1}
                      *    java.util.List:size(...)@159: {-231..0}, {1..232-1}
                      *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTags(...)@158: Addr_Set{null}, Inverse{null}
                      *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName(...)@162: Addr_Set{null}, Inverse{null}
                      *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:isExcerpts(...)@166: {0}, {1}
                      */
   158              List tags = feedRequest.getTags();
   159              if(tags != null && tags.size() > 0) {
   160                  params.put("tags", URLUtilities.getEncodedTagsString(tags));
   161              }
   162              String category = feedRequest.getWeblogCategoryName();
   163              if(category != null && category.trim().length() > 0) {
   164                  params.put("cat", URLUtilities.encode(category));
   165              }  
   166              if(feedRequest.isExcerpts()) {
   167                  params.put("excerpts", "true");
   168              }            
   169              return super.createURL(url, params);
   170          }
   171          
   172          public String getUrl() {
                     /* 
    P/P               *  Method: String getUrl()
                      * 
                      *  Preconditions:
                      *    this.feedRequest != null
                      *    init'ed(this.url)
                      * 
                      *  Postconditions:
                      *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                      *    return_value == &java.lang.StringBuilder:toString(...)
                      */
   173              return createURL(super.getUrl(), new HashMap());
   174          }
   175      }
   176      
   177      public class FeedCommentsPager extends CommentsPager {
   178          
   179          private WeblogFeedRequest feedRequest;
   180          
                 /* 
    P/P           *  Method: void org.apache.roller.weblogger.ui.rendering.model.FeedModel$FeedCommentsPager(FeedModel, WeblogFeedRequest)
                  * 
                  *  Preconditions:
                  *    Param_1 != null
                  *    Param_1.urlStrategy != null
                  *    feedRequest != null
                  *    (soft) org/apache/roller/weblogger/ui/rendering/model/FeedModel.DEFAULT_ENTRIES <= 232-2
                  *    (soft) org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.log != null
                  * 
                  *  Postconditions:
                  *    this.comments == &new ArrayList(getItems#1)
                  *    this.feedRequest == feedRequest
                  *    this.feedRequest != null
                  *    init'ed(this.lastUpdated)
                  *    this.length == org/apache/roller/weblogger/ui/rendering/model/FeedModel.DEFAULT_ENTRIES
                  *    (soft) this.length <= 232-2
                  *    init'ed(this.locale)
                  *    init'ed(this.more)
                  *    this.page >= 0
                  *    this.sinceDays == -1
                  *    ...
                  */
   181          public FeedCommentsPager(WeblogFeedRequest feedRequest) {            
   182              super(urlStrategy, urlStrategy.getWeblogFeedURL(feedRequest.getWeblog(), 
   183                      feedRequest.getLocale(), feedRequest.getType(),
   184                      feedRequest.getFormat(), null, null,
   185                      null, false, true), feedRequest.getWeblog(), feedRequest.getLocale(), -1, feedRequest.getPage(), DEFAULT_ENTRIES);
   186              this.feedRequest = feedRequest;
   187          }
   188          
   189          protected String createURL(String url, Map params) {
                     /* 
    P/P               *  Method: String createURL(String, Map)
                      * 
                      *  Preconditions:
                      *    this.feedRequest != null
                      *    (soft) params != null
                      * 
                      *  Postconditions:
                      *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                      *    return_value == &java.lang.StringBuilder:toString(...)
                      * 
                      *  Test Vectors:
                      *    java.lang.String:length(...)@195: {0}, {1..232-1}
                      *    java.util.List:size(...)@191: {-231..0}, {1..232-1}
                      *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getTags(...)@190: Addr_Set{null}, Inverse{null}
                      *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:getWeblogCategoryName(...)@194: Addr_Set{null}, Inverse{null}
                      *    org.apache.roller.weblogger.ui.rendering.util.WeblogFeedRequest:isExcerpts(...)@198: {0}, {1}
                      */
   190              List tags = feedRequest.getTags();
   191              if(tags != null && tags.size() > 0) {
   192                  params.put("tags", URLUtilities.getEncodedTagsString(tags));
   193              }
   194              String category = feedRequest.getWeblogCategoryName();
   195              if(category != null && category.trim().length() > 0) {
   196                  params.put("cat", URLUtilities.encode(category));
   197              }  
   198              if(feedRequest.isExcerpts()) {
   199                  params.put("excerpts", "true");
   200              }   
   201              return super.createURL(url, params);
   202          }
   203          
   204          public String getUrl() {
                     /* 
    P/P               *  Method: String getUrl()
                      * 
                      *  Preconditions:
                      *    this.feedRequest != null
                      *    init'ed(this.url)
                      * 
                      *  Postconditions:
                      *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                      *    return_value == &java.lang.StringBuilder:toString(...)
                      */
   205              return createURL(super.getUrl(), new HashMap());
   206          }
   207      }      
   208  }








SofCheck Inspector Build Version : 2.18479
FeedModel.java 2009-Jan-02 14:25:44
FeedModel.class 2009-Sep-04 03:12:46
FeedModel$FeedCommentsPager.class 2009-Sep-04 03:12:46
FeedModel$FeedEntriesPager.class 2009-Sep-04 03:12:46