File Source: shortpermalinkprovider.java

         /* 
    P/P   *  Method: net.sourceforge.pebble.permalink.ShortPermalinkProvider__static_init
          */
     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.permalink;
    33  
    34  import net.sourceforge.pebble.domain.BlogEntry;
    35  import net.sourceforge.pebble.domain.Blog;
    36  import net.sourceforge.pebble.domain.BlogService;
    37  import net.sourceforge.pebble.domain.BlogServiceException;
    38  
    39  
    40  /**
    41   * Generates permalinks using the pattern <time-in-millis>.
    42   *
    43   * @author Simon Brown
    44   */
         /* 
    P/P   *  Method: void net.sourceforge.pebble.permalink.ShortPermalinkProvider()
          */
    45  public class ShortPermalinkProvider extends PermalinkProviderSupport {
    46  
    47    /** the regex used to check for a blog entry permalink */
    48    private static final String BLOG_ENTRY_PERMALINK_REGEX = "/\\d*.html";
    49  
    50    /**
    51     * Gets the permalink for a blog entry.
    52     *
    53     * @return  a URI as a String
    54     */
    55    public String getPermalink(BlogEntry blogEntry) {
             /* 
    P/P       *  Method: String getPermalink(BlogEntry)
              * 
              *  Preconditions:
              *    blogEntry != null
              * 
              *  Postconditions:
              *    return_value != null
              */
    56      return "/" + blogEntry.getId() + ".html";
    57    }
    58  
    59    /**
    60     * Determines whether the specified URI is a blog entry permalink.
    61     *
    62     * @param uri   a relative URI
    63     * @return      true if the URI represents a permalink to a blog entry,
    64     *              false otherwise
    65     */
    66    public boolean isBlogEntryPermalink(String uri) {
             /* 
    P/P       *  Method: bool isBlogEntryPermalink(String)
              * 
              *  Postconditions:
              *    init'ed(return_value)
              * 
              *  Test Vectors:
              *    uri: Addr_Set{null}, Inverse{null}
              */
    67      if (uri != null) {
    68        return uri.matches(BLOG_ENTRY_PERMALINK_REGEX);
    69      } else {
    70        return false;
    71      }
    72    }
    73  
    74    /**
    75     * Gets the blog entry referred to by the specified URI.
    76     *
    77     * @param uri   a relative URI
    78     * @return  a BlogEntry instance, or null if one can't be found
    79     */
    80    public BlogEntry getBlogEntry(String uri) {
    81      // uri is of the form /1234567890123.html, so extract the 13-digit ID
    82      // and use it to find the correct blog entry
             /* 
    P/P       *  Method: BlogEntry getBlogEntry(String)
              * 
              *  Preconditions:
              *    init'ed(this.blog)
              *    (soft) uri != null
              * 
              *  Postconditions:
              *    init'ed(return_value)
              */
    83      Blog blog = getBlog();
    84      BlogService service = new BlogService();
    85      try {
    86        return service.getBlogEntry(blog, uri.substring(1, 14));
    87      } catch (BlogServiceException e) {
    88        return null;
    89      }
    90    }
    91  
    92  }








SofCheck Inspector Build Version : 2.22510
shortpermalinkprovider.java 2010-Jun-25 19:40:32
shortpermalinkprovider.class 2010-Jul-19 20:23:38