5a7d4b2e78e95c25d057bed2cb68d97c6a74710e
[openflowplugin.git] / applications / southbound-cli / src / main / java / org / opendaylight / openflowplugin / applications / southboundcli / alarm / NodeReconciliationAlarm.java
1 /*
2  * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.openflowplugin.applications.southboundcli.alarm;
10
11 import com.google.common.collect.ImmutableList;
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.concurrent.atomic.AtomicLong;
15 import javax.management.AttributeChangeNotification;
16 import javax.management.NotificationBroadcasterSupport;
17
18 public class NodeReconciliationAlarm extends NotificationBroadcasterSupport implements NodeReconciliationAlarmMBean {
19
20     private AtomicLong sequenceNumber = new AtomicLong(1);
21
22     private volatile java.util.List<String> raiseAlarmObject = new ArrayList<>();
23     private volatile List<String> clearAlarmObject = new ArrayList<>();
24
25     @Override
26     public void setRaiseAlarmObject(final List<String> raiseAlarmObject) {
27         this.raiseAlarmObject = raiseAlarmObject;
28
29         sendRaiseAlarmNotification(this.raiseAlarmObject);
30     }
31
32     private void sendRaiseAlarmNotification(final List<String> alarmObject) {
33         sendNotification(new AttributeChangeNotification(this, sequenceNumber.getAndIncrement(),
34                 System.currentTimeMillis(), "raise alarm object notified ", "raiseAlarmObject", "ArrayList", "",
35                 alarmObject));
36     }
37
38     @Override
39     public List<String> getRaiseAlarmObject() {
40         return raiseAlarmObject;
41     }
42
43     @Override
44     public void setClearAlarmObject(final List<String> clearAlarmObject) {
45         this.clearAlarmObject = clearAlarmObject;
46         sendClearAlarmNotification(this.clearAlarmObject);
47     }
48
49     private void sendClearAlarmNotification(final List<String> alarmObject) {
50         sendNotification(new AttributeChangeNotification(this, sequenceNumber.getAndIncrement(),
51                 System.currentTimeMillis(), "clear alarm object notified ", "clearAlarmObject", "ArrayList", "",
52                 alarmObject));
53     }
54
55     @Override
56     public List<String> getClearAlarmObject() {
57         return clearAlarmObject;
58     }
59
60     @Override
61     public void raiseAlarm(final String alarmName, final String additionalText, final String source) {
62         sendRaiseAlarmNotification(ImmutableList.of(alarmName, additionalText, source));
63     }
64
65     @Override
66     public void clearAlarm(final String alarmName, final String additionalText, final String source) {
67         sendClearAlarmNotification(ImmutableList.of(alarmName, additionalText, source));
68     }
69 }