Clover Coverage Report - Pebble 2.5-SNAPSHOT
Coverage timestamp: Sat Jun 12 2010 09:39:29 EST
../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
9   92   5   3
2   27   0,56   3
3     1,67  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  ShortPermalinkProvider       Line # 45 9 0% 5 1 92,9% 0.9285714
 
  (6)
 
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    */
 
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  6 toggle public String getPermalink(BlogEntry blogEntry) {
56  6 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  10 toggle public boolean isBlogEntryPermalink(String uri) {
67  10 if (uri != null) {
68  8 return uri.matches(BLOG_ENTRY_PERMALINK_REGEX);
69    } else {
70  2 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  4 toggle 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
83  4 Blog blog = getBlog();
84  4 BlogService service = new BlogService();
85  4 try {
86  4 return service.getBlogEntry(blog, uri.substring(1, 14));
87    } catch (BlogServiceException e) {
88  0 return null;
89    }
90    }
91   
92    }