YANG Model update for A1 Adapter
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / config / util / ConfigFileObserver.java
1 /*******************************************************************************
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  ******************************************************************************/
18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.config.util;
19
20 import java.util.ArrayList;
21 import java.util.List;
22 import javax.annotation.Nonnull;
23 import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.FileWatchdog;
24 import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.IniConfigurationFile;
25 import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.IniConfigurationFile.ConfigurationException;
26 import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.IConfigChangedListener;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 public class ConfigFileObserver extends FileWatchdog {
31
32     private static final Logger LOG = LoggerFactory.getLogger(ConfigFileObserver.class);
33
34     private final List<IConfigChangedListener> mConfigChangedHandlers = new ArrayList<>();
35     private final IniConfigurationFile mConfig;
36
37     public ConfigFileObserver(String filename, long pollIntervallMs, IniConfigurationFile mConfig) {
38         super(filename);
39         this.setDelay(pollIntervallMs);
40         this.mConfig = mConfig;
41     }
42
43     @Override
44     protected void doOnChange() {
45
46         LOG.debug("property file has changed");
47         try {
48             mConfig.reLoad();
49             // push event to all listeners
50             for (IConfigChangedListener listener : this.mConfigChangedHandlers) {
51                 listener.onConfigChanged();
52             }
53         } catch (ConfigurationException e) {
54             LOG.warn("error reloading config: " + e.getMessage());
55         }
56     }
57
58     public void registerConfigChangedListener(@Nonnull IConfigChangedListener l) {
59         if (!this.mConfigChangedHandlers.contains(l)) {
60             this.mConfigChangedHandlers.add(l);
61         }
62     }
63
64     public void unregisterConfigChangedListener(IConfigChangedListener l) {
65         this.mConfigChangedHandlers.remove(l);
66     }
67 }