View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package org.apache.commons.configuration.reloading;
    19
    20  import org.apache.commons.configuration.FileConfiguration;
    21  import org.apache.commons.logging.Log;
    22  import org.apache.commons.logging.LogFactory;
    23
    24  /***
    25   * A strategy to reload configuration based on management requests. Designed for
    26   * JMX management.
    27   *
    28   * @author Nicolas De loof
    29   */
    30  public class ManagedReloadingStrategy implements ReloadingStrategy,
    31          ManagedReloadingStrategyMBean
    32  {
    33      /*** The logger. */
    34      private Log log = LogFactory.getLog(ManagedReloadingStrategy.class);
    35
    36      /*** Stores a reference to the associated configuration. */
    37      private FileConfiguration configuration;
    38
    39      /*** A flag whether a reload is required. */
    40      private boolean reloadingRequired;
    41
    42      /***
    43       * @see org.apache.commons.configuration.reloading.ReloadingStrategy#init()
    44       */
    45      public void init()
    46      {
    47      }
    48
    49      /***
    50       * @see org.apache.commons.configuration.reloading.ReloadingStrategy#reloadingPerformed()
    51       */
    52      public void reloadingPerformed()
    53      {
    54          reloadingRequired = false;
    55      }
    56
    57      /***
    58       * Checks whether reloading is required. This implementation checks whether
    59       * the <code>refresh()</code> method has been invokded.
    60       *
    61       * @return a flag whether reloading is required
    62       * @see org.apache.commons.configuration.reloading.ReloadingStrategy#reloadingRequired()
    63       */
    64      public boolean reloadingRequired()
    65      {
    66          return reloadingRequired;
    67      }
    68
    69      /***
    70       * Sets the associated configuration.
    71       *
    72       * @param configuration the associated configuration
    73       */
    74      public void setConfiguration(FileConfiguration configuration)
    75      {
    76          this.configuration = configuration;
    77      }
    78
    79      /***
    80       * Tells this strategy that the monitored configuration file should be
    81       * refreshed. This method will typically be called from outside (through an
    82       * exposed MBean) on behalf of an administrator.
    83       *
    84       * @see org.apache.commons.configuration.reloading.ManagedReloadingStrategyMBean#refresh()
    85       */
    86      public void refresh()
    87      {
    88          log.info("Reloading configuration.");
    89          this.reloadingRequired = true;
    90          // force reloading
    91          configuration.isEmpty();
    92      }
    93  }