From 8e546d5b71525921c5ab48fb546276c38bb26829 Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Wed, 19 Sep 2007 12:15:36 +0000
Subject: [PATCH] Fix for 2234 : NullPointerException if multimaster domain created for non defined suffix

---
 opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java |   70 ++++++++++++++++++++++++++++------
 1 files changed, 57 insertions(+), 13 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java b/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
index f4ee8ba..b5459e2 100644
--- a/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
+++ b/opends/src/server/org/opends/server/replication/plugin/ReplicationDomain.java
@@ -1086,7 +1086,10 @@
    */
   public int getNumRcvdUpdates()
   {
-    return numRcvdUpdates.get();
+    if (numRcvdUpdates != null)
+      return numRcvdUpdates.get();
+    else
+      return 0;
   }
 
   /**
@@ -1096,7 +1099,10 @@
    */
   public int getNumSentUpdates()
   {
-    return numSentUpdates.get();
+    if (numSentUpdates != null)
+      return numSentUpdates.get();
+    else
+      return 0;
   }
 
   /**
@@ -1106,7 +1112,10 @@
    */
   public int getPendingUpdatesCount()
   {
-    return pendingChanges.size();
+    if (pendingChanges != null)
+      return pendingChanges.size();
+    else
+      return 0;
   }
 
   /**
@@ -1124,7 +1133,10 @@
    */
   public int getNumProcessedUpdates()
   {
-    return numProcessedUpdates.get();
+    if (numProcessedUpdates != null)
+      return numProcessedUpdates.get();
+    else
+      return 0;
   }
 
   /**
@@ -1254,7 +1266,10 @@
    */
   public String getReplicationServer()
   {
-    return broker.getReplicationServer();
+    if (broker != null)
+      return broker.getReplicationServer();
+    else
+      return "Not connected";
   }
 
   /**
@@ -2060,7 +2075,10 @@
    */
   public int getMaxRcvWindow()
   {
-    return broker.getMaxRcvWindow();
+    if (broker != null)
+      return broker.getMaxRcvWindow();
+    else
+      return 0;
   }
 
   /**
@@ -2070,7 +2088,10 @@
    */
   public int getCurrentRcvWindow()
   {
-    return broker.getCurrentRcvWindow();
+    if (broker != null)
+      return broker.getCurrentRcvWindow();
+    else
+      return 0;
   }
 
   /**
@@ -2080,7 +2101,10 @@
    */
   public int getMaxSendWindow()
   {
-    return broker.getMaxSendWindow();
+    if (broker != null)
+      return broker.getMaxSendWindow();
+    else
+      return 0;
   }
 
   /**
@@ -2090,7 +2114,10 @@
    */
   public int getCurrentSendWindow()
   {
-    return broker.getCurrentSendWindow();
+    if (broker != null)
+      return broker.getCurrentSendWindow();
+    else
+      return 0;
   }
 
   /**
@@ -2099,7 +2126,10 @@
    */
   public int getNumLostConnections()
   {
-    return broker.getNumLostConnections();
+    if (broker != null)
+      return broker.getNumLostConnections();
+    else
+      return 0;
   }
 
   /**
@@ -2731,7 +2761,7 @@
    * @return The backend of that domain.
    * @param baseDN The baseDN to retrieve the backend
    */
-  protected Backend retrievesBackend(DN baseDN)
+  protected static Backend retrievesBackend(DN baseDN)
   {
     // Retrieves the backend related to this domain
     return DirectoryServer.getBackend(baseDN);
@@ -3256,6 +3286,14 @@
       unacceptableReasons.add(message);
       return false;
     }
+
+    // Check that the base DN is configured as a base-dn of the directory server
+    if (retrievesBackend(dn) == null)
+    {
+      Message message = ERR_UNKNOWN_DN.get(dn.toString());
+      unacceptableReasons.add(message);
+      return false;
+    }
     return true;
   }
 
@@ -3329,7 +3367,10 @@
    */
   public boolean isConnected()
   {
-    return broker.isConnected();
+    if (broker != null)
+      return broker.isConnected();
+    else
+      return false;
   }
 
   /**
@@ -3338,6 +3379,9 @@
    */
   public boolean isSessionEncrypted()
   {
-    return broker.isSessionEncrypted();
+    if (broker != null)
+      return broker.isSessionEncrypted();
+    else
+      return false;
   }
 }

--
Gitblit v1.10.0