File Source: BookmarkEdit.java

     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.struts2.editor;
    20  
    21  import java.net.MalformedURLException;
    22  import java.net.URL;
    23  import org.apache.commons.lang.StringUtils;
    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.BookmarkManager;
    28  import org.apache.roller.weblogger.business.WebloggerFactory;
    29  import org.apache.roller.weblogger.pojos.WeblogBookmark;
    30  import org.apache.roller.weblogger.pojos.WeblogPermission;
    31  import org.apache.roller.weblogger.ui.struts2.util.UIAction;
    32  import org.apache.roller.weblogger.util.cache.CacheManager;
    33  import org.apache.struts2.interceptor.validation.SkipValidation;
    34  
    35  
    36  /**
    37   * Add a new bookmark to a folder.
    38   */
    39  public class BookmarkEdit extends UIAction {
    40      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    41      private static Log log = LogFactory.getLog(BookmarkEdit.class);
    42      
    43      // the bookmark we are editing
    44      private WeblogBookmark bookmark = null;
    45      
    46      // bean for managing form data
    47      private BookmarkBean bean = new BookmarkBean();
    48      
    49      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit()
              * 
              *  Postconditions:
              *    this.actionName == &"bookmarkEdit"
              *    this.bean == &new BookmarkBean(BookmarkEdit#1)
              *    this.bookmark == null
              *    this.bean.description == null
              *    this.bean.feedUrl == null
              *    this.bean.id == null
              *    this.bean.image == null
              *    this.bean.name == null
              *    this.bean.url == null
              *    this.desiredMenu == &"editor"
              *    ...
              */
    50      public BookmarkEdit() {
    51          this.actionName = "bookmarkEdit";
    52          this.desiredMenu = "editor";
    53          this.pageTitle = "bookmarkForm.edit.title";
    54      }
    55      
    56      
    57      public short requiredWeblogPermissions() {
                 /* 
    P/P           *  Method: short requiredWeblogPermissions()
                  * 
                  *  Presumptions:
                  *    init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN)
                  * 
                  *  Postconditions:
                  *    return_value == org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
                  *    (soft) init'ed(return_value)
                  */
    58          return WeblogPermission.ADMIN;
    59      }
    60      
    61      
    62      public void myPrepare() {
    63          try {
                     /* 
    P/P               *  Method: void myPrepare()
                      * 
                      *  Preconditions:
                      *    this.bean != null
                      *    init'ed(this.bean.id)
                      *    (soft) log != null
                      * 
                      *  Presumptions:
                      *    org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@64 != null
                      *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@64 != null
                      * 
                      *  Postconditions:
                      *    possibly_updated(this.bookmark)
                      * 
                      *  Test Vectors:
                      *    org.apache.commons.lang.StringUtils:isEmpty(...)@65: {1}, {0}
                      */
    64              BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
    65              if(!StringUtils.isEmpty(getBean().getId())) {
    66                  setBookmark(bmgr.getBookmark(getBean().getId()));
    67              }
    68          } catch (WebloggerException ex) {
    69              log.error("Error looking up bookmark - "+getBean().getId(), ex);
    70          }
    71      }
    72      
    73      
    74      @SkipValidation
    75      public String execute() {
    76          
                 /* 
    P/P           *  Method: String execute()
                  * 
                  *  Preconditions:
                  *    init'ed(this.bookmark)
                  *    (soft) this.bean != null
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"input",&"error"}
                  *    possibly_updated(this.bean.description)
                  *    possibly_updated(this.bean.feedUrl)
                  *    possibly_updated(this.bean.id)
                  *    possibly_updated(this.bean.image)
                  *    possibly_updated(this.bean.name)
                  *    possibly_updated(this.bean.priority)
                  *    possibly_updated(this.bean.url)
                  *    possibly_updated(this.bean.weight)
                  * 
                  *  Test Vectors:
                  *    this.bookmark: Inverse{null}, Addr_Set{null}
                  */
    77          if(getBookmark() == null) {
    78              // TODO: i18n
    79              addError("Cannot edit null bookmark");
    80              return ERROR;
    81          }
    82          
    83          // make sure bean is properly loaded with pojo data
    84          getBean().copyFrom(getBookmark());
    85          
    86          return INPUT;
    87      }
    88  
    89      
    90      public String save() {
    91          
                 /* 
    P/P           *  Method: String save()
                  * 
                  *  Preconditions:
                  *    init'ed(this.bookmark)
                  *    (soft) log != null
                  *    (soft) this.bean != null
                  *    (soft) init'ed(this.bean.description)
                  *    (soft) init'ed(this.bean.feedUrl)
                  *    (soft) init'ed(this.bean.image)
                  *    (soft) init'ed(this.bean.name)
                  *    (soft) init'ed(this.bean.priority)
                  *    (soft) init'ed(this.bean.url)
                  *    (soft) init'ed(this.bean.weight)
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@105 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@105 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@107 != null
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"input",&"error"}
                  * 
                  *  Test Vectors:
                  *    this.bookmark: Inverse{null}, Addr_Set{null}
                  *    org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit:hasActionErrors(...)@101: {1}, {0}
                  */
    92          if(getBookmark() == null) {
    93              // TODO: i18n
    94              addError("Cannot edit null bookmark");
    95              return ERROR;
    96          }
    97          
    98          // validation
    99          myValidate();
   100          
   101          if(!hasActionErrors()) try {
   102              
   103              getBean().copyTo(getBookmark());
   104              
   105              BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
   106              bmgr.saveBookmark(getBookmark());
   107              WebloggerFactory.getWeblogger().flush();
   108              
   109              CacheManager.invalidate(getBookmark());
   110              
   111              // TODO: i18n
   112              addMessage("bookmark updated");
   113              
   114          } catch(Exception ex) {
   115              log.error("Error saving bookmark", ex);
   116              // TODO: i18n
   117              addError("Error saving bookmark");
   118          }
   119          
   120          return INPUT;
   121      }
   122  
   123      
   124      public void myValidate() {
                 /* 
    P/P           *  Method: void myValidate()
                  * 
                  *  Preconditions:
                  *    this.bean != null
                  *    init'ed(this.bean.feedUrl)
                  *    init'ed(this.bean.image)
                  *    init'ed(this.bean.url)
                  * 
                  *  Test Vectors:
                  *    org.apache.commons.lang.StringUtils:isNotEmpty(...)@125: {0}, {1}
                  *    org.apache.commons.lang.StringUtils:isNotEmpty(...)@128: {0}, {1}
                  *    org.apache.commons.lang.StringUtils:isNotEmpty(...)@131: {0}, {1}
                  */
   125          if (StringUtils.isNotEmpty(getBean().getUrl()) && !validURL(getBean().getUrl())) {
   126              addError("bookmarkgetBean().error.invalidURL", getBean().getUrl());
   127          }
   128          if (StringUtils.isNotEmpty(getBean().getFeedUrl()) && !validURL(getBean().getFeedUrl())) {
   129              addError("bookmarkgetBean().error.invalidURL", getBean().getFeedUrl());
   130          }
   131          if (StringUtils.isNotEmpty(getBean().getImage()) && !validURL(getBean().getImage())) {
   132              addError("bookmarkgetBean().error.invalidURL", getBean().getImage());
   133          }
   134      }
   135      
   136      public boolean validURL(String url) {
                 /* 
    P/P           *  Method: bool validURL(String)
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  */
   137          boolean valid = false;
   138          try {
+  139              URL test = new URL(url);
   140              valid = true;
   141          } catch (MalformedURLException intentionallyIgnored) {}
   142          return valid;
   143      }
   144      
   145      
   146      public WeblogBookmark getBookmark() {
                 /* 
    P/P           *  Method: WeblogBookmark getBookmark()
                  * 
                  *  Preconditions:
                  *    init'ed(this.bookmark)
                  * 
                  *  Postconditions:
                  *    return_value == this.bookmark
                  *    init'ed(return_value)
                  */
   147          return bookmark;
   148      }
   149  
   150      public void setBookmark(WeblogBookmark bookmark) {
                 /* 
    P/P           *  Method: void setBookmark(WeblogBookmark)
                  * 
                  *  Postconditions:
                  *    this.bookmark == bookmark
                  *    init'ed(this.bookmark)
                  */
   151          this.bookmark = bookmark;
   152      }
   153  
   154      public BookmarkBean getBean() {
                 /* 
    P/P           *  Method: BookmarkBean getBean()
                  * 
                  *  Preconditions:
                  *    init'ed(this.bean)
                  * 
                  *  Postconditions:
                  *    return_value == this.bean
                  *    init'ed(return_value)
                  */
   155          return bean;
   156      }
   157  
   158      public void setBean(BookmarkBean bean) {
                 /* 
    P/P           *  Method: void setBean(BookmarkBean)
                  * 
                  *  Postconditions:
                  *    this.bean == bean
                  *    init'ed(this.bean)
                  */
   159          this.bean = bean;
   160      }
   161      
   162  }








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