01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * 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: /** The logger. */
33: private Log log = LogFactory.getLog(ManagedReloadingStrategy.class);
34:
35: /** Stores a reference to the associated configuration. */
36: private FileConfiguration configuration;
37:
38: /** A flag whether a reload is required. */
39: private boolean reloadingRequired;
40:
41: /**
42: * @see org.apache.commons.configuration.reloading.ReloadingStrategy#init()
43: */
44: public void init() {
45: return;
46: }
47:
48: /**
49: * @see org.apache.commons.configuration.reloading.ReloadingStrategy#reloadingPerformed()
50: */
51: public void reloadingPerformed() {
52: reloadingRequired = false;
53: }
54:
55: /**
56: * Checks whether reloading is required. This implementation checks whether
57: * the <code>refresh()</code> method has been invokded.
58: *
59: * @return a flag whether reloading is required
60: * @see org.apache.commons.configuration.reloading.ReloadingStrategy#reloadingRequired()
61: */
62: public boolean reloadingRequired() {
63: return reloadingRequired;
64: }
65:
66: /**
67: * Sets the associated configuration.
68: *
69: * @param configuration the associated configuration
70: */
71: public void setConfiguration(FileConfiguration configuration) {
72: this .configuration = configuration;
73: }
74:
75: /**
76: * Tells this strategy that the monitored configuration file should be
77: * refreshed. This method will typically be called from outside (through an
78: * exposed MBean) on behalf of an administrator.
79: *
80: * @see org.apache.commons.configuration.reloading.ManagedReloadingStrategyMBean#refresh()
81: */
82: public void refresh() {
83: log.info("Reloading configuration.");
84: this .reloadingRequired = true;
85: // force reloading
86: configuration.isEmpty();
87: }
88: }
|