/**
  * Retrieves a String that contains a list of proxy servers we trust to correctly set the
  * X-Forwarded-For flag. Internal format of this string is the responsibility of {@link
  * com.atlassian.crowd.manager.proxy.TrustedProxyManagerImpl}.
  *
  * @return list of proxy servers we trust
  * @throws PropertyManagerException If the list of proxy servers could not be found.
  */
 public String getTrustedProxyServers() throws PropertyManagerException {
   try {
     return getPropertyObject(TRUSTED_PROXY_SERVERS).getValue();
   } catch (ObjectNotFoundException e) {
     throw new PropertyManagerException(e.getMessage(), e);
   }
 }
 public Integer getBuildNumber() throws PropertyManagerException {
   try {
     return Integer.valueOf(getPropertyObject(BUILD_NUMBER).getValue());
   } catch (ObjectNotFoundException e) {
     throw new PropertyManagerException(e.getMessage(), e);
   }
 }
 public String getNotificationEmail() throws PropertyManagerException {
   try {
     return getPropertyObject(NOTIFICATION_EMAIL).getValue();
   } catch (ObjectNotFoundException e) {
     throw new PropertyManagerException(e.getMessage(), e);
   }
 }
  public Key getDesEncryptionKey() throws PropertyManagerException {
    try {
      // get the key string
      String keyStr = getPropertyObject(DES_ENCRYPTION_KEY).getValue();

      // create a DES key spec
      DESKeySpec ks = new DESKeySpec(new sun.misc.BASE64Decoder().decodeBuffer(keyStr));

      // generate the key from the DES key spec
      return SecretKeyFactory.getInstance(DESPasswordEncoder.PASSWORD_ENCRYPTION_ALGORITHM)
          .generateSecret(ks);

    } catch (NoSuchAlgorithmException e) {
      throw new PropertyManagerException(e.getMessage(), e);

    } catch (IOException e) {
      throw new PropertyManagerException(e.getMessage(), e);

    } catch (ObjectNotFoundException e) {
      throw new PropertyManagerException(e.getMessage(), e);

    } catch (InvalidKeyException e) {
      throw new PropertyManagerException(e.getMessage(), e);

    } catch (InvalidKeySpecException e) {
      throw new PropertyManagerException(e.getMessage(), e);
    }
  }
  public boolean isGzipEnabled() throws PropertyManagerException {
    try {
      Property property = getPropertyObject(GZIP_ENABLED);

      return Boolean.parseBoolean(property.getValue());

    } catch (ObjectNotFoundException e) {
      throw new PropertyManagerException(e.getMessage(), e);
    }
  }