コード例 #1
0
  public DiskQuotaConfig loadConfig() throws IOException, ConfigurationException {
    DiskQuotaConfig quotaConfig;
    final File configFile = getConfigResource();
    if (!configFile.exists()) {
      log.info("DiskQuota configuration not found: " + configFile.getAbsolutePath());
      quotaConfig = new DiskQuotaConfig();
    } else {
      log.info("Quota config is: " + configFile.getAbsolutePath());
      InputStream configIn = new FileInputStream(configFile);
      try {
        quotaConfig = loadConfiguration(configIn);
        if (null == quotaConfig) {
          throw new ConfigurationException(
              "Couldn't parse configuration file " + configFile.getAbsolutePath());
        }
      } catch (RuntimeException e) {
        log.error(
            "Error loading DiskQuota configuration from "
                + configFile.getAbsolutePath()
                + ": "
                + e.getMessage()
                + ". Deferring to a default (disabled) configuration",
            e);
        quotaConfig = new DiskQuotaConfig();
      } finally {
        configIn.close();
      }
    }
    // set default values
    quotaConfig.setDefaults();

    validateConfig(quotaConfig);

    return quotaConfig;
  }
コード例 #2
0
  private void validateLayerQuota(DiskQuotaConfig quotaConfig, LayerQuota lq)
      throws ConfigurationException {
    String layer = lq.getLayer();
    try {
      tileLayerDispatcher.getTileLayer(layer);
    } catch (GeoWebCacheException e) {
      log.error(
          "LayerQuota configuration error: layer "
              + layer
              + " does not exist. Removing quota from runtime configuration.",
          e);
      quotaConfig.remove(lq);
    }

    final ExpirationPolicy expirationPolicyName = lq.getExpirationPolicyName();
    if (expirationPolicyName == null) {
      // if expiration policy is not defined, then there should be no quota defined either,
      // as it means the layer is managed by the global expiration policy, if any
      if (lq.getQuota() != null) {
        throw new ConfigurationException(
            "Layer "
                + lq.getLayer()
                + " has no expiration policy, but does have a quota defined. "
                + "Either both or neither should be present");
      }
      return;
    }

    Quota quota = lq.getQuota();
    try {
      validateQuota(quota);
    } catch (ConfigurationException e) {
      log.error(
          "LayerQuota configuration error for layer "
              + layer
              + ". Error message is: "
              + e.getMessage()
              + ". Quota removed from runtime configuration.");
      quotaConfig.remove(lq);
    }
  }
コード例 #3
0
  private void validateConfig(DiskQuotaConfig quotaConfig) throws ConfigurationException {
    int cacheCleanUpFrequency = quotaConfig.getCacheCleanUpFrequency();
    if (cacheCleanUpFrequency <= 0) {
      throw new ConfigurationException("cacheCleanUpFrequency shall be a positive integer");
    }
    TimeUnit cacheCleanUpUnits = quotaConfig.getCacheCleanUpUnits();
    if (cacheCleanUpUnits == null) {
      throw new ConfigurationException(
          "cacheCleanUpUnits shall be specified. Expected one of SECONDS, MINUTES, HOURS, DAYS. Got null");
    }
    int diskBlockSize = quotaConfig.getDiskBlockSize();
    if (diskBlockSize <= 0) {
      throw new ConfigurationException(
          "Disk block size shall be specified and be a positive integer");
    }

    int maxConcurrentCleanUps = quotaConfig.getMaxConcurrentCleanUps();
    if (maxConcurrentCleanUps <= 0) {
      throw new ConfigurationException(
          "maxConcurrentCleanUps shall be specified as a positive integer");
    }

    if (null != quotaConfig.getLayerQuotas()) {
      for (LayerQuota lq : new ArrayList<LayerQuota>(quotaConfig.getLayerQuotas())) {
        if (null == lq.getQuota()) {
          log.info(
              "Configured quota for layer "
                  + lq.getLayer()
                  + " is null. Discarding it to be attached to the global quota");
          quotaConfig.remove(lq);
          continue;
        }

        validateLayerQuota(quotaConfig, lq);
      }
    }
  }