From dbdd02be3af7e5cb39bcf2eab4090086c86a7753 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 31 May 2010 12:20:31 +0000
Subject: [PATCH] Notify subentry manager listeners on backend initial/final stages when related subentries are added/deleted.

---
 opends/src/server/org/opends/server/core/SubentryManager.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/SubentryManager.java b/opends/src/server/org/opends/server/core/SubentryManager.java
index 348d921..3f07280 100644
--- a/opends/src/server/org/opends/server/core/SubentryManager.java
+++ b/opends/src/server/org/opends/server/core/SubentryManager.java
@@ -380,6 +380,23 @@
           try
           {
             addSubEntry(entry);
+
+            // Notify change listeners.
+            for (SubentryChangeListener changeListener :
+              changeListeners)
+            {
+              try
+              {
+                changeListener.handleSubentryAdd(entry);
+              }
+              catch (Exception e)
+              {
+                if (debugEnabled())
+                {
+                  TRACER.debugCaught(DebugLogLevel.ERROR, e);
+                }
+              }
+            }
           }
           catch (Exception e)
           {
@@ -633,6 +650,24 @@
           if (backend.handlesEntry(subEntry.getDN()))
           {
             listIterator.remove();
+
+            // Notify change listeners.
+            for (SubentryChangeListener changeListener :
+              changeListeners)
+            {
+              try
+              {
+                changeListener.handleSubentryDelete(
+                        subEntry.getEntry());
+              }
+              catch (Exception e)
+              {
+                if (debugEnabled())
+                {
+                  TRACER.debugCaught(DebugLogLevel.ERROR, e);
+                }
+              }
+            }
           }
         }
         if (subList.isEmpty())
@@ -652,6 +687,24 @@
           if (backend.handlesEntry(subEntry.getDN()))
           {
             listIterator.remove();
+
+            // Notify change listeners.
+            for (SubentryChangeListener changeListener :
+              changeListeners)
+            {
+              try
+              {
+                changeListener.handleSubentryDelete(
+                        subEntry.getEntry());
+              }
+              catch (Exception e)
+              {
+                if (debugEnabled())
+                {
+                  TRACER.debugCaught(DebugLogLevel.ERROR, e);
+                }
+              }
+            }
           }
         }
         if (subList.isEmpty())

--
Gitblit v1.10.0