configuration.java

### File Source: configuration.java

         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;
        33
        34  import net.sourceforge.pebble.dao.DAOFactory;
        35  import net.sourceforge.pebble.dao.file.FileDAOFactory;
        36  import net.sourceforge.pebble.security.SecurityRealm;
        37  import org.apache.commons.logging.Log;
        38  import org.apache.commons.logging.LogFactory;
        39
        40  /**
        41   * A bean representing configurable properties for Pebble.
        42   *
        43   * @author    Simon Brown
        44   */
        45  public class Configuration {
        46
        47    /** the log used by this class */
               /*
        P/P     *  Method: net.sourceforge.pebble.Configuration__static_init
                *
                *  Postconditions:
                *    init'ed(log)
                */
        48    private static Log log = LogFactory.getLog(Configuration.class);
        49
        50    private String dataDirectory = "${user.home}/pebble";
        51    private String url;
        52    private String secureUrl;
        53    private boolean multiBlog = false;
        54    private boolean virtualHostingEnabled = false;
        55    private boolean userThemesEnabled = true;
        56    private String smtpHost = "java:comp/env/mail/Session";
        57    private long fileUploadSize = 2048;
        58    private long fileUploadQuota = -1;
        59    private DAOFactory daoFactory = new FileDAOFactory();
        60    private SecurityRealm securityRealm;
        61
               /*
        P/P     *  Method: void net.sourceforge.pebble.Configuration()
                *
                *  Postconditions:
                *    this.daoFactory == &new FileDAOFactory(Configuration#1)
                *    this.dataDirectory == &"${user.home}.pebble"
                *    this.fileUploadQuota == -1
                *    this.fileUploadSize == 2_048
                *    this.multiBlog == 0
                *    this.virtualHostingEnabled == 0
                *    this.smtpHost == &"java:comp.env.mail.Session"
                *    this.userThemesEnabled == 1
                *    new FileDAOFactory(Configuration#1) num objects == 1
                *    new FileBlogEntryDAO(FileDAOFactory#1) num objects == 1
                *    ...
                */
        62    public Configuration() {
        63    }
        64
        65    public String getUrl() {
                 /*
        P/P       *  Method: String getUrl()
                  *
                  *  Preconditions:
                  *    init'ed(this.url)
                  *
                  *  Postconditions:
                  *    return_value == this.url
                  *    init'ed(return_value)
                  */
        66      return url;
        67    }
        68
        69    public void setUrl(String s) {
                 /*
        P/P       *  Method: void setUrl(String)
                  *
                  *  Postconditions:
                  *    init'ed(this.url)
                  *
                  *  Test Vectors:
                  *    s: Addr_Set{null}, Inverse{null}
                  *    java.lang.String:endsWith(...)@72: {1}, {0}
                  *    java.lang.String:length(...)@72: {0}, {1..232-1}
                  */
        70      this.url = s;
        71
        72      if (url != null && !(url.length() == 0) && !url.endsWith("/")) {
        73        url += "/";
        74      }
        75    }
        76
        77    public String getDomainName() {
        78      // and set the domain name
                 /*
        P/P       *  Method: String getDomainName()
                  *
                  *  Presumptions:
                  *    java.lang.String:indexOf(...)@80 <= 232-4
                  *
                  *  Postconditions:
                  *    return_value != null
                  *
                  *  Test Vectors:
                  *    java.lang.String:indexOf(...)@85: {-231..-1}, {0..232-1}
                  *
                  *  Presumptions:
                  *    net.sourceforge.pebble.PebbleContext:getConfiguration(...).url@79 != null
                  *    net.sourceforge.pebble.PebbleContext:getConfiguration(...)@79 != null
                  *    net.sourceforge.pebble.PebbleContext:getInstance(...)@79 != null
                  */
        79      String url = PebbleContext.getInstance().getConfiguration().getUrl();
        80      int index = url.indexOf("://");
        81      String domainName = url.substring(index+3);
        82      index = domainName.indexOf("/");
        83      domainName = domainName.substring(0, index);
        84
        85      if (domainName.indexOf(":") > -1) {
        86        // the domain name still has a port number so remove it
        87        domainName = domainName.substring(0, domainName.indexOf(":"));
        88      }
        89
        90      return domainName;
        91    }
        92
        93    public String getSecureUrl() {
                 /*
        P/P       *  Method: String getSecureUrl()
                  *
                  *  Preconditions:
                  *    init'ed(this.secureUrl)
                  *    (soft) init'ed(this.url)
                  *
                  *  Postconditions:
                  *    return_value == One-of{this.secureUrl, this.url}
                  *    (soft) init'ed(return_value)
                  *
                  *  Test Vectors:
                  *    this.secureUrl: Addr_Set{null}, Inverse{null}
                  *    java.lang.String:length(...)@94: {0}, {1..232-1}
                  */
        94      if (secureUrl != null && secureUrl.length() > 0) {
        95        return secureUrl;
        96      } else {
        97        return url;
        98      }
        99    }
       100
       101    public void setSecureUrl(String s) {
                 /*
        P/P       *  Method: void setSecureUrl(String)
                  *
                  *  Postconditions:
                  *    init'ed(this.secureUrl)
                  *
                  *  Test Vectors:
                  *    s: Addr_Set{null}, Inverse{null}
                  *    java.lang.String:endsWith(...)@104: {1}, {0}
                  *    java.lang.String:length(...)@104: {0}, {1..232-1}
                  */
       102      this.secureUrl = s;
       103
       104      if (secureUrl != null && !(secureUrl.length() == 0) && !secureUrl.endsWith("/")) {
       105        secureUrl += "/";
       106      }
       107    }
       108
       109    public String getSmtpHost() {
                 /*
        P/P       *  Method: String getSmtpHost()
                  *
                  *  Preconditions:
                  *    init'ed(this.smtpHost)
                  *
                  *  Postconditions:
                  *    return_value == this.smtpHost
                  *    init'ed(return_value)
                  */
       110      return smtpHost;
       111    }
       112
       113    public void setSmtpHost(String smtpHost) {
                 /*
        P/P       *  Method: void setSmtpHost(String)
                  *
                  *  Postconditions:
                  *    this.smtpHost == smtpHost
                  *    init'ed(this.smtpHost)
                  */
       114      this.smtpHost = smtpHost;
       115    }
       116
       117    public long getFileUploadSize() {
                 /*
        P/P       *  Method: long getFileUploadSize()
                  *
                  *  Preconditions:
                  *    init'ed(this.fileUploadSize)
                  *
                  *  Postconditions:
                  *    return_value == this.fileUploadSize
                  *    init'ed(return_value)
                  */
       118      return fileUploadSize;
       119    }
       120
       121    public void setFileUploadSize(long fileUploadSize) {
                 /*
        P/P       *  Method: void setFileUploadSize(long)
                  *
                  *  Postconditions:
                  *    this.fileUploadSize == fileUploadSize
                  *    init'ed(this.fileUploadSize)
                  */
       122      this.fileUploadSize = fileUploadSize;
       123    }
       124
       125    public long getFileUploadQuota() {
                 /*
        P/P       *  Method: long getFileUploadQuota()
                  *
                  *  Preconditions:
                  *    init'ed(this.fileUploadQuota)
                  *
                  *  Postconditions:
                  *    return_value == this.fileUploadQuota
                  *    init'ed(return_value)
                  */
       126      return fileUploadQuota;
       127    }
       128
       129    public void setFileUploadQuota(long fileUploadQuota) {
                 /*
        P/P       *  Method: void setFileUploadQuota(long)
                  *
                  *  Postconditions:
                  *    this.fileUploadQuota == fileUploadQuota
                  *    init'ed(this.fileUploadQuota)
                  */
       130      this.fileUploadQuota = fileUploadQuota;
       131    }
       132
       133    public DAOFactory getDaoFactory() {
                 /*
        P/P       *  Method: DAOFactory getDaoFactory()
                  *
                  *  Preconditions:
                  *    init'ed(this.daoFactory)
                  *
                  *  Postconditions:
                  *    return_value == this.daoFactory
                  *    init'ed(return_value)
                  */
       134      return daoFactory;
       135    }
       136
       137    public void setDaoFactory(DAOFactory daoFactory) {
                 /*
        P/P       *  Method: void setDaoFactory(DAOFactory)
                  *
                  *  Postconditions:
                  *    this.daoFactory == daoFactory
                  *    init'ed(this.daoFactory)
                  */
       138      this.daoFactory = daoFactory;
       139    }
       140
       141    public String getDataDirectory() {
                 /*
        P/P       *  Method: String getDataDirectory()
                  *
                  *  Preconditions:
                  *    init'ed(this.dataDirectory)
                  *
                  *  Postconditions:
                  *    return_value == this.dataDirectory
                  *    init'ed(return_value)
                  */
       142      return dataDirectory;
       143    }
       144
       145    public void setDataDirectory(String dataDirectory) {
                 /*
        P/P       *  Method: void setDataDirectory(String)
                  *
                  *  Preconditions:
                  *    dataDirectory != null
                  *    log != null
                  *
                  *  Postconditions:
                  *    this.dataDirectory != null
                  */
       146      this.dataDirectory = evaluateDirectory(dataDirectory);
       147    }
       148
       149    public boolean isMultiBlog() {
                 /*
        P/P       *  Method: bool isMultiBlog()
                  *
                  *  Preconditions:
                  *    init'ed(this.multiBlog)
                  *
                  *  Postconditions:
                  *    return_value == this.multiBlog
                  *    init'ed(return_value)
                  */
       150      return multiBlog;
       151    }
       152
       153    public void setMultiBlog(boolean multiBlog) {
                 /*
        P/P       *  Method: void setMultiBlog(bool)
                  *
                  *  Postconditions:
                  *    this.multiBlog == multiBlog
                  *    init'ed(this.multiBlog)
                  */
       154      this.multiBlog = multiBlog;
       155    }
       156
       157
       158    public boolean isVirtualHostingEnabled() {
                 /*
        P/P       *  Method: bool isVirtualHostingEnabled()
                  *
                  *  Preconditions:
                  *    init'ed(this.virtualHostingEnabled)
                  *
                  *  Postconditions:
                  *    return_value == this.virtualHostingEnabled
                  *    init'ed(return_value)
                  */
       159      return virtualHostingEnabled;
       160    }
       161
       162    public void setVirtualHostingEnabled(boolean virtualHostingEnabled) {
                 /*
        P/P       *  Method: void setVirtualHostingEnabled(bool)
                  *
                  *  Postconditions:
                  *    this.virtualHostingEnabled == virtualHostingEnabled
                  *    init'ed(this.virtualHostingEnabled)
                  */
       163      this.virtualHostingEnabled = virtualHostingEnabled;
       164    }
       165
       166    public SecurityRealm getSecurityRealm() {
                 /*
        P/P       *  Method: SecurityRealm getSecurityRealm()
                  *
                  *  Preconditions:
                  *    init'ed(this.securityRealm)
                  *
                  *  Postconditions:
                  *    return_value == this.securityRealm
                  *    init'ed(return_value)
                  */
       167      return securityRealm;
       168    }
       169
       170    public void setSecurityRealm(SecurityRealm securityRealm) {
                 /*
        P/P       *  Method: void setSecurityRealm(SecurityRealm)
                  *
                  *  Postconditions:
                  *    this.securityRealm == securityRealm
                  *    init'ed(this.securityRealm)
                  */
       171      this.securityRealm = securityRealm;
       172    }
       173
       174    /**
       175     * Replaces ${some.property} at the start of the string with the value
       176     * from System.getProperty(some.property).
       177     *
       178     * @param s   the String to transform
       179     * @return  a new String, or the same String if it doesn't start with a
       180     *          property name delimited by ${...}
       181     */
       182    private String evaluateDirectory(String s) {
                 /*
        P/P       *  Method: String evaluateDirectory(String)
                  *
                  *  Preconditions:
                  *    log != null
                  *    s != null
                  *
                  *  Presumptions:
                  *    java.lang.String:indexOf(...)@185 <= 232-2
                  *
                  *  Postconditions:
                  *    return_value != null
                  *
                  *  Test Vectors:
                  *    java.lang.String:startsWith(...)@184: {0}, {1}
                  */
       183      log.debug("Raw string is " + s);
       184      if (s.startsWith("${")) {
       185        int index = s.indexOf("}");
       186        String propertyName = s.substring(2, index);
       187        String propertyValue = System.getProperty(propertyName);
       188        log.debug(propertyName + " = " + propertyValue);
       189        return propertyValue + s.substring(index+1);
       190      } else {
       191        return s;
       192      }
       193    }
       194
       195    /**
       196     * Determines whether user themes are enabled.
       197     *
       198     * @return    true if user themes are enabled, false otherwise
       199     */
       200    public boolean isUserThemesEnabled() {
                 /*
        P/P       *  Method: bool isUserThemesEnabled()
                  *
                  *  Preconditions:
                  *    init'ed(this.userThemesEnabled)
                  *
                  *  Postconditions:
                  *    return_value == this.userThemesEnabled
                  *    init'ed(return_value)
                  */
       201      return userThemesEnabled;
       202    }
       203
       204    /**
       205     * Sets whether user themes are enabled.
       206     *
       207     * @param userThemesEnabled   true if user themes are enabled,
       208     *                            false otherwise
       209     */
       210    public void setUserThemesEnabled(boolean userThemesEnabled) {
                 /*
        P/P       *  Method: void setUserThemesEnabled(bool)
                  *
                  *  Postconditions:
                  *    this.userThemesEnabled == userThemesEnabled
                  *    init'ed(this.userThemesEnabled)
                  */
       211      this.userThemesEnabled = userThemesEnabled;
       212    }
       213  }

SofCheck Inspector Build Version : 2.22510

configuration.java | 2010-Jun-25 19:40:34
configuration.class | 2010-Jul-19 20:23:40