--- /dev/null
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.devicemanager.dcaeconnector.impl;
+
+import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
+import org.onap.ccsdk.features.sdnr.wt.common.configuration.filechange.IConfigChangedListener;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.dcaeconnector.impl.config.DcaeConfig;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.DeviceManagerImpl;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.ProviderClient;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.xml.ProblemNotificationXml;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DcaeProviderClient implements AutoCloseable, ProviderClient {
+
+ private static final Logger LOG = LoggerFactory.getLogger(DcaeProviderClient.class);
+
+ private final ConfigurationFileRepresentation htConfig;
+ private final IConfigChangedListener configChangedListener;
+
+ private final Object lock = new Object();
+ private DcaeProviderWorker worker;
+ private DcaeConfig config;
+
+ public DcaeProviderClient(ConfigurationFileRepresentation cfg, String entityName, DeviceManagerImpl deviceManager) {
+ LOG.info("Create");
+ this.htConfig=cfg;
+ this.config = new DcaeConfig(cfg);
+ worker = new DcaeProviderWorker(config, entityName, deviceManager);
+ this.configChangedListener = () -> {
+ LOG.info("Configuration change. Worker exchanged");
+ synchronized(lock) {
+ worker.close();
+ worker = new DcaeProviderWorker(this.config, entityName, deviceManager);
+ }
+ };
+ this.htConfig.registerConfigChangedListener(configChangedListener );
+
+ }
+
+ @Override
+ public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification) {
+ synchronized(lock) {
+ worker.sendProblemNotification(mountPointName, notification);
+ }
+ }
+
+ @Override
+ public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification, boolean neDeviceAlarm) {
+ sendProblemNotification(mountPointName, notification);
+ }
+
+ @Override
+ public void close() {
+ this.htConfig.unregisterConfigChangedListener(configChangedListener);
+ synchronized(lock) {
+ worker.close();
+ }
+ }
+
+ /* ---------------------------------------------------------
+ * Private
+ */
+
+}
+
+
+