--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.config.api.jmx.notifications;
+
+import javax.management.Notification;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.ObjectName;
+import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
+
+public abstract class ConfigJMXNotification extends Notification {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6754474563863772845L;
+
+ private static long sequenceNumber = 1;
+
+ public static String TYPE_NAME = "configfNotificationProvider";
+ public static ObjectName OBJECT_NAME = ObjectNameUtil.createONWithDomainAndType(TYPE_NAME);
+
+ private final NotificationType type;
+
+ protected ConfigJMXNotification(NotificationType type,
+ NotificationBroadcasterSupport source, String message) {
+ super(type.toString(), source, sequenceNumber++, System.nanoTime(), message);
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "TransactionProviderJMXNotification [type=" + type + "]";
+ }
+
+ /**
+ * Sends this notification using source that created it
+ */
+ public void send() {
+ ((NotificationBroadcasterSupport) getSource()).sendNotification(this);
+ }
+
+ /**
+ * Creates notification about successful commit execution.
+ *
+ * Intended for config-persister.
+ *
+ * @param transactionName
+ * @param cfgSnapshot
+ */
+ public static CommitJMXNotification afterCommit(NotificationBroadcasterSupport source, String messages) {
+ return new CommitJMXNotification(source, messages);
+ }
+
+ enum NotificationType {
+ COMMIT;
+ }
+
+}