File Source: PreviewURLStrategy.java

         /* 
    P/P   *  Method: org.apache.roller.weblogger.business.PreviewURLStrategy__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.business;
    20  
    21  import java.util.HashMap;
    22  import java.util.List;
    23  import java.util.Map;
    24  import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
    25  import org.apache.roller.weblogger.pojos.Weblog;
    26  import org.apache.roller.weblogger.pojos.WeblogTheme;
    27  import org.apache.roller.weblogger.util.URLUtilities;
    28  
    29  
    30  /**
    31   * A URLStrategy used by the preview rendering system.
    32   */
    33  public class PreviewURLStrategy extends MultiWeblogURLStrategy {
    34      
    35      private final String previewTheme;
    36      
    37      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.business.PreviewURLStrategy(String)
              * 
              *  Postconditions:
              *    this.previewTheme == theme
              *    init'ed(this.previewTheme)
              */
    38      public PreviewURLStrategy(String theme) {
    39          previewTheme = theme;
    40      }
    41      
    42      
    43      /**
    44       * Get root url for a given *preview* weblog.  
    45       * Optionally for a certain locale.
    46       */
    47      @Override
    48      public String getWeblogURL(Weblog weblog, String locale, boolean absolute) {
    49          
                 /* 
    P/P           *  Method: String getWeblogURL(Weblog, String, bool)
                  * 
                  *  Preconditions:
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
                  *    (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
                  * 
                  *  Test Vectors:
                  *    absolute: {0}, {1}
                  *    locale: Addr_Set{null}, Inverse{null}
                  *    this.previewTheme: Addr_Set{null}, Inverse{null}
                  *    weblog: Inverse{null}, Addr_Set{null}
                  */
    50          if(weblog == null) {
    51              return null;
    52          }
    53          
    54          StringBuffer url = new StringBuffer();
    55          
    56          if(absolute) {
    57              url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
    58          } else {
    59              url.append(WebloggerRuntimeConfig.getRelativeContextURL());
    60          }
    61          
    62          url.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
    63          
    64          if(locale != null) {
    65              url.append(locale).append("/");
    66          }
    67          
    68          Map params = new HashMap();
    69          if(previewTheme != null) {
    70              params.put("theme", URLUtilities.encode(previewTheme));
    71          }
    72          
    73          return url.toString() + URLUtilities.getQueryString(params);
    74      }
    75      
    76      
    77      /**
    78       * Get url for a given *preview* weblog entry.  
    79       * Optionally for a certain locale.
    80       */
    81      @Override
    82      public String getWeblogEntryURL(Weblog weblog,
    83                                      String locale,
    84                                      String previewAnchor,
    85                                      boolean absolute) {
    86          
                 /* 
    P/P           *  Method: String getWeblogEntryURL(Weblog, String, String, bool)
                  * 
                  *  Preconditions:
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
                  *    (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
                  * 
                  *  Test Vectors:
                  *    absolute: {0}, {1}
                  *    locale: Addr_Set{null}, Inverse{null}
                  *    previewAnchor: Addr_Set{null}, Inverse{null}
                  *    this.previewTheme: Addr_Set{null}, Inverse{null}
                  *    weblog: Inverse{null}, Addr_Set{null}
                  */
    87          if(weblog == null) {
    88              return null;
    89          }
    90          
    91          StringBuffer url = new StringBuffer();
    92          
    93          if(absolute) {
    94              url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
    95          } else {
    96              url.append(WebloggerRuntimeConfig.getRelativeContextURL());
    97          }
    98          
    99          url.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
   100          
   101          if(locale != null) {
   102              url.append(locale).append("/");
   103          }
   104          
   105          Map params = new HashMap();
   106          if(previewTheme != null) {
   107              params.put("theme", URLUtilities.encode(previewTheme));
   108          }
   109          if(previewAnchor != null) {
   110              params.put("previewEntry", URLUtilities.encode(previewAnchor));
   111          }
   112          
   113          return url.toString() + URLUtilities.getQueryString(params);
   114      }
   115      
   116      
   117      /**
   118       * Get url for a collection of entries on a given weblog.
   119       */
   120      public String getWeblogCollectionURL(Weblog weblog,
   121                                                        String locale,
   122                                                        String category,
   123                                                        String dateString,
   124                                                        List tags,
   125                                                        int pageNum,
   126                                                        boolean absolute) {
   127          
                 /* 
    P/P           *  Method: String getWeblogCollectionURL(Weblog, String, String, String, List, int, bool)
                  * 
                  *  Preconditions:
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
                  *    (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
                  * 
                  *  Test Vectors:
                  *    absolute: {0}, {1}
                  *    category: Addr_Set{null}, Inverse{null}
                  *    dateString: Inverse{null}, Addr_Set{null}
                  *    locale: Addr_Set{null}, Inverse{null}
                  *    pageNum: {-231..0}, {1..232-1}
                  *    tags: Addr_Set{null}, Inverse{null}
                  *    this.previewTheme: Addr_Set{null}, Inverse{null}
                  *    weblog: Inverse{null}, Addr_Set{null}
                  *    java.lang.String:equals(...)@148: {0}, {1}
                  *    java.lang.String:startsWith(...)@150: {0}, {1}
                  *    ...
                  */
   128          if(weblog == null) {
   129              return null;
   130          }
   131          
   132          StringBuffer pathinfo = new StringBuffer();
   133          Map params = new HashMap();
   134          
   135          if(absolute) {
   136          	pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
   137          } else {
   138          	pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
   139          }
   140          
   141          pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
   142          
   143          if(locale != null) {
   144          	pathinfo.append(locale).append("/");
   145          }
   146  
   147          String cat = null;
   148          if(category != null && "/".equals(category)) {
   149              cat = null;
   150          } else if(category != null && category.startsWith("/")) {
   151              cat = category.substring(1);
   152          }
   153          
   154          if(cat != null && dateString == null) {
   155              pathinfo.append("category/").append(URLUtilities.encodePath(cat));
   156              
   157          } else if(dateString != null && cat == null) {
   158              pathinfo.append("date/").append(dateString);  
   159          
   160          } else if(tags != null && tags.size() > 0) {
   161              pathinfo.append("tags/").append(URLUtilities.getEncodedTagsString(tags));
   162          } else {
   163              if(dateString != null) params.put("date", dateString);
   164              if(cat != null) params.put("cat", URLUtilities.encode(cat));
   165          }
   166  
   167          if(pageNum > 0) {
   168              params.put("page", Integer.toString(pageNum));
   169          }
   170          
   171          if(previewTheme != null) {
   172              params.put("theme", URLUtilities.encode(previewTheme));
   173          }
   174  
   175          return pathinfo.toString() + URLUtilities.getQueryString(params);
   176      }
   177      
   178  
   179      /**
   180       * Get url for a custom page on a given weblog.
   181       */
   182      @Override
   183      public String getWeblogPageURL(Weblog weblog,
   184                                                  String locale,
   185                                                  String pageLink,
   186                                                  String entryAnchor,
   187                                                  String category,
   188                                                  String dateString,
   189                                                  List tags,
   190                                                  int pageNum,
   191                                                  boolean absolute) {
   192          
                 /* 
    P/P           *  Method: String getWeblogPageURL(Weblog, String, String, String, String, String, List, int, bool)
                  * 
                  *  Preconditions:
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
                  *    (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...),&java.lang.StringBuilder:toString(...)}
                  * 
                  *  Test Vectors:
                  *    absolute: {0}, {1}
                  *    category: Addr_Set{null}, Inverse{null}
                  *    dateString: Addr_Set{null}, Inverse{null}
                  *    locale: Addr_Set{null}, Inverse{null}
                  *    pageLink: Addr_Set{null}, Inverse{null}
                  *    pageNum: {-231..0}, {1..232-1}
                  *    tags: Addr_Set{null}, Inverse{null}
                  *    this.previewTheme: Addr_Set{null}, Inverse{null}
                  *    weblog: Inverse{null}, Addr_Set{null}
                  *    java.util.List:size(...)@226: {-231..0}, {1..232-1}
                  */
   193          if(weblog == null) {
   194              return null;
   195          }
   196          
   197          StringBuffer pathinfo = new StringBuffer();
   198          Map params = new HashMap();
   199          
   200          if(absolute) {
   201              pathinfo.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
   202          } else {
   203              pathinfo.append(WebloggerRuntimeConfig.getRelativeContextURL());
   204          }
   205          
   206          pathinfo.append("/roller-ui/authoring/preview/").append(weblog.getHandle()).append("/");
   207          
   208          if(locale != null) {
   209              pathinfo.append(locale).append("/");
   210          }
   211          
   212          if(previewTheme != null) {
   213              params.put("theme", URLUtilities.encode(previewTheme));
   214          }
   215          
   216          if(pageLink != null) {
   217              pathinfo.append("page/").append(pageLink);
   218              
   219              // for custom pages we only allow query params
   220              if(dateString != null) {
   221                  params.put("date", dateString);
   222              }
   223              if(category != null) {
   224                  params.put("cat", URLUtilities.encode(category));
   225              }
   226              if(tags != null && tags.size() > 0) {
   227                  params.put("tags", URLUtilities.getEncodedTagsString(tags));
   228              }
   229              if(pageNum > 0) {
   230                  params.put("page", Integer.toString(pageNum));
   231              }
   232          } else {
   233              // if there is no page link then this is just a typical collection url
   234              return getWeblogCollectionURL(weblog, locale, category, dateString, tags, pageNum, absolute);
   235          }
   236          
   237          return pathinfo.toString() + URLUtilities.getQueryString(params);
   238      }
   239      
   240      
   241      /**
   242       * Get a url to a *preview* resource on a given weblog.
   243       */
   244      @Override
   245      public String getWeblogResourceURL(Weblog weblog, String filePath, boolean absolute) {
   246          
                 /* 
    P/P           *  Method: String getWeblogResourceURL(Weblog, String, bool)
                  * 
                  *  Preconditions:
                  *    (soft) filePath != null
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider != null
                  *    (soft) org/apache/roller/weblogger/business/WebloggerFactory.webloggerProvider.webloggerInstance != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.absoluteContextURL)
                  *    (soft) org/apache/roller/weblogger/config/WebloggerRuntimeConfig.log != null
                  *    (soft) init'ed(org/apache/roller/weblogger/config/WebloggerRuntimeConfig.relativeContextURL)
                  * 
                  *  Postconditions:
                  *    init'ed(java.lang.StringBuilder:toString(...)._tainted)
                  *    return_value in Addr_Set{null,&java.lang.StringBuilder:toString(...)}
                  * 
                  *  Test Vectors:
                  *    absolute: {0}, {1}
                  *    this.previewTheme: Addr_Set{null}, Inverse{null}
                  *    weblog: Inverse{null}, Addr_Set{null}
                  *    java.lang.String:equals(...)@268: {1}, {0}
                  *    java.lang.String:startsWith(...)@261: {0}, {1}
                  */
   247          if(weblog == null) {
   248              return null;
   249          }
   250          
   251          StringBuffer url = new StringBuffer();
   252          
   253          if(absolute) {
   254              url.append(WebloggerRuntimeConfig.getAbsoluteContextURL());
   255          } else {
   256              url.append(WebloggerRuntimeConfig.getRelativeContextURL());
   257          }
   258          
   259          url.append("/roller-ui/authoring/previewresource/").append(weblog.getHandle()).append("/");
   260          
   261          if(filePath.startsWith("/")) {
   262              url.append(filePath.substring(1));
   263          } else {
   264              url.append(filePath);
   265          }
   266          
   267          Map params = new HashMap();
   268          if(previewTheme != null && !WeblogTheme.CUSTOM.equals(previewTheme)) {
   269              params.put("theme", URLUtilities.encode(previewTheme));
   270          }
   271          
   272          return url.toString() + URLUtilities.getQueryString(params);
   273      }
   274      
   275  }








SofCheck Inspector Build Version : 2.18479
PreviewURLStrategy.java 2009-Jan-02 14:25:30
PreviewURLStrategy.class 2009-Sep-04 03:12:30