Merge "ITM performance improvements in a scale setup"
[genius.git] / itm / itm-impl / src / main / java / org / opendaylight / genius / itm / monitoring / DataPathAlarm.java
1 /*
2  * Copyright (c) 2016 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 package org.opendaylight.genius.itm.monitoring;
9
10 import java.util.ArrayList;
11 import java.util.List;
12 import javax.management.AttributeChangeNotification;
13 import javax.management.NotificationBroadcasterSupport;
14
15 /**
16  * Implementation of the DataPath Alarm MBean. It can basically allow others to
17  * rise and clear alarms occurred on the Data Path.
18  *
19  * @author Ericsson India Global Services Pvt Ltd. and others
20  *
21  */
22 public class DataPathAlarm extends NotificationBroadcasterSupport implements DataPathAlarmMBean {
23     private long sequenceNumber = 1;
24
25     private List<String> raiseAlarmObject = new ArrayList<>();
26     private List<String> clearAlarmObject = new ArrayList<>();
27
28     @Override
29     public void setRaiseAlarmObject(List<String> raiseAlarmObject) {
30         this.raiseAlarmObject = raiseAlarmObject;
31
32         sendNotification(new AttributeChangeNotification(this, sequenceNumber++, System.currentTimeMillis(),
33                 "raise alarm object notified ", "raiseAlarmObject", "ArrayList", "", this.raiseAlarmObject));
34     }
35
36     @Override
37     public List<String> getRaiseAlarmObject() {
38         return raiseAlarmObject;
39     }
40
41     @Override
42     public void setClearAlarmObject(List<String> clearAlarmObject) {
43         this.clearAlarmObject = clearAlarmObject;
44         sendNotification(new AttributeChangeNotification(this, sequenceNumber++, System.currentTimeMillis(),
45                 "clear alarm object notified ", "clearAlarmObject", "ArrayList", "", this.clearAlarmObject));
46     }
47
48     @Override
49     public List<String> getClearAlarmObject() {
50         return clearAlarmObject;
51     }
52
53     @Override
54     public synchronized void raiseAlarm(String alarmName, String additionalText, String source) {
55         raiseAlarmObject.add(alarmName);
56         raiseAlarmObject.add(additionalText);
57         raiseAlarmObject.add(source);
58         setRaiseAlarmObject(raiseAlarmObject);
59         raiseAlarmObject.clear();
60     }
61
62     @Override
63     public synchronized void clearAlarm(String alarmName, String additionalText, String source) {
64         clearAlarmObject.add(alarmName);
65         clearAlarmObject.add(additionalText);
66         clearAlarmObject.add(source);
67         setClearAlarmObject(clearAlarmObject);
68         clearAlarmObject.clear();
69     }
70 }