| 1 |  |  | 
            
  
    | 2 |  |  | 
            
  
    | 3 |  |  | 
            
  
    | 4 |  |  | 
            
  
    | 5 |  |  | 
            
  
    | 6 |  |  | 
            
  
    | 7 |  |  | 
            
  
    | 8 |  |  | 
            
  
    | 9 |  |  | 
            
  
    | 10 |  |  | 
            
  
    | 11 |  |  | 
            
  
    | 12 |  |  | 
            
  
    | 13 |  |  | 
            
  
    | 14 |  |  | 
            
  
    | 15 |  |  | 
            
  
    | 16 |  |  | 
            
  
    | 17 |  |  | 
            
  
    | 18 |  |  | 
            
  
    | 19 |  |  | 
            
  
    | 20 |  |  | 
            
  
    | 21 |  |  | 
            
  
    | 22 |  |  | 
            
  
    | 23 |  |  | 
            
  
    | 24 |  |  | 
            
  
    | 25 |  |  | 
            
  
    | 26 |  |  | 
            
  
    | 27 |  |  | 
            
  
    | 28 |  |  | 
            
  
    | 29 |  |  | 
            
  
    | 30 |  |  | 
            
  
    | 31 |  |  | 
            
  
    | 32 |  | package net.sourceforge.pebble.web.action; | 
            
  
    | 33 |  |  | 
            
  
    | 34 |  | import net.sourceforge.pebble.Constants; | 
            
  
    | 35 |  | import net.sourceforge.pebble.service.StaticPageService; | 
            
  
    | 36 |  | import net.sourceforge.pebble.service.StaticPageServiceException; | 
            
  
    | 37 |  | import net.sourceforge.pebble.domain.*; | 
            
  
    | 38 |  | import net.sourceforge.pebble.util.SecurityUtils; | 
            
  
    | 39 |  | import net.sourceforge.pebble.util.StringUtils; | 
            
  
    | 40 |  | import net.sourceforge.pebble.web.controller.RequireSecurityToken; | 
            
  
    | 41 |  | import net.sourceforge.pebble.web.validation.ValidationContext; | 
            
  
    | 42 |  | import net.sourceforge.pebble.web.view.RedirectView; | 
            
  
    | 43 |  | import net.sourceforge.pebble.web.view.View; | 
            
  
    | 44 |  | import net.sourceforge.pebble.web.view.ForwardView; | 
            
  
    | 45 |  | import net.sourceforge.pebble.web.view.impl.BlogEntryFormView; | 
            
  
    | 46 |  | import net.sourceforge.pebble.web.view.impl.StaticPageFormView; | 
            
  
    | 47 |  | import org.apache.commons.logging.Log; | 
            
  
    | 48 |  | import org.apache.commons.logging.LogFactory; | 
            
  
    | 49 |  |  | 
            
  
    | 50 |  | import javax.servlet.ServletException; | 
            
  
    | 51 |  | import javax.servlet.http.HttpServletRequest; | 
            
  
    | 52 |  | import javax.servlet.http.HttpServletResponse; | 
            
  
    | 53 |  |  | 
            
  
    | 54 |  |  | 
            
  
    | 55 |  |  | 
            
  
    | 56 |  |  | 
            
  
    | 57 |  | @author | 
            
  
    | 58 |  |  | 
            
  
    | 59 |  | @RequireSecurityToken | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 79 (79) | Complexity: 17 | Complexity Density: 0,27 |  | 
  
  
    | 60 |  | public class SaveStaticPageAction extends SecureAction { | 
            
  
    | 61 |  |  | 
            
  
    | 62 |  |  | 
            
  
    | 63 |  | private static Log log = LogFactory.getLog(SaveStaticPageAction.class); | 
            
  
    | 64 |  |  | 
            
  
    | 65 |  |  | 
            
  
    | 66 |  | private static final String PREVIEW = "Preview"; | 
            
  
    | 67 |  | private static final String CANCEL = "Cancel"; | 
            
  
    | 68 |  |  | 
            
  
    | 69 |  |  | 
            
  
    | 70 |  |  | 
            
  
    | 71 |  |  | 
            
  
    | 72 |  | @param | 
            
  
    | 73 |  | @param | 
            
  
    | 74 |  | @return | 
            
  
    | 75 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 10 (10) | Complexity: 5 | Complexity Density: 0,83 |  | 
  
  
    | 76 | 0 |  public View process(HttpServletRequest request, HttpServletResponse response) throws ServletException {... | 
            
  
    | 77 | 0 | String submitType = request.getParameter("submit"); | 
            
  
    | 78 |  |  | 
            
  
    | 79 | 0 | if (submitType != null && submitType.equalsIgnoreCase(PREVIEW)) { | 
            
  
    | 80 | 0 | return previewPage(request); | 
            
  
    | 81 | 0 | } else if (submitType != null && submitType.equalsIgnoreCase(CANCEL)) { | 
            
  
    | 82 | 0 | return unlockPage(request); | 
            
  
    | 83 |  | } else { | 
            
  
    | 84 | 0 | return savePage(request); | 
            
  
    | 85 |  | } | 
            
  
    | 86 |  | } | 
            
  
    | 87 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 8 (8) | Complexity: 1 | Complexity Density: 0,12 |  | 
  
  
    | 88 | 0 |  private View previewPage(HttpServletRequest request) throws ServletException {... | 
            
  
    | 89 | 0 | StaticPage staticPage = getStaticPage(request); | 
            
  
    | 90 |  |  | 
            
  
    | 91 |  |  | 
            
  
    | 92 | 0 | staticPage = (StaticPage)staticPage.clone(); | 
            
  
    | 93 | 0 | populateStaticPage(staticPage, request); | 
            
  
    | 94 |  |  | 
            
  
    | 95 | 0 | ValidationContext validationContext = new ValidationContext(); | 
            
  
    | 96 | 0 | staticPage.validate(validationContext); | 
            
  
    | 97 | 0 | getModel().put("validationContext", validationContext); | 
            
  
    | 98 | 0 | getModel().put(Constants.STATIC_PAGE_KEY, staticPage); | 
            
  
    | 99 |  |  | 
            
  
    | 100 | 0 | return new StaticPageFormView(); | 
            
  
    | 101 |  | } | 
            
  
    | 102 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 8 (8) | Complexity: 2 | Complexity Density: 0,33 |  | 
  
  
    | 103 | 0 |  private View unlockPage(HttpServletRequest request) throws ServletException {... | 
            
  
    | 104 | 0 | StaticPage staticPage = getStaticPage(request); | 
            
  
    | 105 | 0 | StaticPageService service = new StaticPageService(); | 
            
  
    | 106 | 0 | service.unlock(staticPage); | 
            
  
    | 107 |  |  | 
            
  
    | 108 | 0 | if (staticPage.isPersistent()) { | 
            
  
    | 109 | 0 | return new RedirectView(staticPage.getLocalPermalink()); | 
            
  
    | 110 |  | } else { | 
            
  
    | 111 | 0 | return new RedirectView(staticPage.getBlog().getUrl() + "viewStaticPages.secureaction"); | 
            
  
    | 112 |  | } | 
            
  
    | 113 |  | } | 
            
  
    | 114 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 18 (18) | Complexity: 3 | Complexity Density: 0,19 |  | 
  
  
    | 115 | 0 |  private View savePage(HttpServletRequest request) throws ServletException {... | 
            
  
    | 116 | 0 | StaticPageService service = new StaticPageService(); | 
            
  
    | 117 | 0 | StaticPage staticPage = getStaticPage(request); | 
            
  
    | 118 | 0 | populateStaticPage(staticPage, request); | 
            
  
    | 119 | 0 | getModel().put(Constants.STATIC_PAGE_KEY, staticPage); | 
            
  
    | 120 |  |  | 
            
  
    | 121 | 0 | ValidationContext validationContext = new ValidationContext(); | 
            
  
    | 122 | 0 | staticPage.validate(validationContext); | 
            
  
    | 123 |  |  | 
            
  
    | 124 | 0 | if (validationContext.hasErrors())  { | 
            
  
    | 125 | 0 | getModel().put("validationContext", validationContext); | 
            
  
    | 126 | 0 | return new StaticPageFormView(); | 
            
  
    | 127 |  | } else { | 
            
  
    | 128 | 0 | try { | 
            
  
    | 129 | 0 | service.putStaticPage(staticPage); | 
            
  
    | 130 | 0 | staticPage.getBlog().info("Static page <a href=\"" + staticPage.getLocalPermalink() + "\">" + staticPage.getTitle() + "</a> saved."); | 
            
  
    | 131 | 0 | service.unlock(staticPage); | 
            
  
    | 132 | 0 | return new RedirectView(staticPage.getLocalPermalink()); | 
            
  
    | 133 |  | } catch (StaticPageServiceException e) { | 
            
  
    | 134 | 0 | log.error(e.getMessage(), e); | 
            
  
    | 135 |  |  | 
            
  
    | 136 | 0 | return new StaticPageFormView(); | 
            
  
    | 137 |  | } | 
            
  
    | 138 |  | } | 
            
  
    | 139 |  | } | 
            
  
    | 140 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 11 (11) | Complexity: 4 | Complexity Density: 0,44 |  | 
  
  
    | 141 | 0 |  private StaticPage getStaticPage(HttpServletRequest request) throws ServletException {... | 
            
  
    | 142 | 0 | Blog blog = (Blog)getModel().get(Constants.BLOG_KEY); | 
            
  
    | 143 | 0 | String id = request.getParameter("page"); | 
            
  
    | 144 | 0 | String persistent = request.getParameter("persistent"); | 
            
  
    | 145 |  |  | 
            
  
    | 146 | 0 | if (persistent != null && persistent.equalsIgnoreCase("true")) { | 
            
  
    | 147 | 0 | try { | 
            
  
    | 148 | 0 | StaticPageService service = new StaticPageService(); | 
            
  
    | 149 | 0 | return service.getStaticPageById(blog, id); | 
            
  
    | 150 |  | } catch (StaticPageServiceException e) { | 
            
  
    | 151 | 0 | throw new ServletException(e); | 
            
  
    | 152 |  | } | 
            
  
    | 153 |  | } else { | 
            
  
    | 154 | 0 | return new StaticPage(blog); | 
            
  
    | 155 |  | } | 
            
  
    | 156 |  | } | 
            
  
    | 157 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 16 (16) | Complexity: 1 | Complexity Density: 0,06 |  | 
  
  
    | 158 | 0 |  private void populateStaticPage(StaticPage staticPage, HttpServletRequest request) {... | 
            
  
    | 159 | 0 | String title = request.getParameter("title"); | 
            
  
    | 160 | 0 | String subtitle = request.getParameter("subtitle"); | 
            
  
    | 161 | 0 | String body = StringUtils.filterNewlines(request.getParameter("body")); | 
            
  
    | 162 | 0 | String tags = request.getParameter("tags"); | 
            
  
    | 163 | 0 | String originalPermalink = request.getParameter("originalPermalink"); | 
            
  
    | 164 | 0 | String name = request.getParameter("name"); | 
            
  
    | 165 | 0 | String author = SecurityUtils.getUsername(); | 
            
  
    | 166 | 0 | String template = request.getParameter("template"); | 
            
  
    | 167 |  |  | 
            
  
    | 168 | 0 | staticPage.setTitle(title); | 
            
  
    | 169 | 0 | staticPage.setSubtitle(subtitle); | 
            
  
    | 170 | 0 | staticPage.setBody(body); | 
            
  
    | 171 | 0 | staticPage.setTags(tags); | 
            
  
    | 172 | 0 | staticPage.setAuthor(author); | 
            
  
    | 173 | 0 | staticPage.setOriginalPermalink(originalPermalink); | 
            
  
    | 174 | 0 | staticPage.setName(name); | 
            
  
    | 175 | 0 | staticPage.setTemplate(template); | 
            
  
    | 176 |  | } | 
            
  
    | 177 |  |  | 
            
  
    | 178 |  |  | 
            
  
    | 179 |  |  | 
            
  
    | 180 |  |  | 
            
  
    | 181 |  | @return | 
            
  
    | 182 |  | @param | 
            
  
    | 183 |  |  | 
               
        |  |  | 
           
           |  | 0% | Uncovered Elements: 1 (1) | Complexity: 1 | Complexity Density: 1 |  | 
  
  
    | 184 | 0 |  public String[] getRoles(HttpServletRequest request) {... | 
            
  
    | 185 | 0 | return new String[]{Constants.BLOG_CONTRIBUTOR_ROLE}; | 
            
  
    | 186 |  | } | 
            
  
    | 187 |  |  | 
            
  
    | 188 |  | } |