From 33f618629c8cfa8b92b913b047575d4166a091f3 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Mon, 02 Jun 2008 08:44:47 +0000
Subject: [PATCH] Fix for issue 3307 (NullPointerException in ADSContext when no certificate defined)

---
 opends/src/ads/org/opends/admin/ads/ADSContext.java |   23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/opends/src/ads/org/opends/admin/ads/ADSContext.java b/opends/src/ads/org/opends/admin/ads/ADSContext.java
index fb5a95b..1621110 100644
--- a/opends/src/ads/org/opends/admin/ads/ADSContext.java
+++ b/opends/src/ads/org/opends/admin/ads/ADSContext.java
@@ -789,16 +789,25 @@
           try
           {
             SearchControls sc1 = new SearchControls();
-
             sc1.setSearchScope(SearchControls.ONELEVEL_SCOPE);
             final String attrIDs[] = { "ds-cfg-public-key-certificate;binary" };
             sc1.setReturningAttributes(attrIDs);
-            SearchResult certEntry =
-              dirContext.search(getInstanceKeysContainerDN(),
-              "(ds-cfg-key-id="+keyId+")", sc).next();
-            Attribute certAttr = certEntry.getAttributes().get(attrIDs[0]);
-            properties.put(ServerProperty.INSTANCE_PUBLIC_KEY_CERTIFICATE,
-                certAttr.get());
+
+            NamingEnumeration<SearchResult> ne2 = dirContext.search(
+                getInstanceKeysContainerDN(),
+                "(ds-cfg-key-id="+keyId+")", sc);
+            if (ne2.hasMore())
+            {
+              SearchResult certEntry = ne2.next();
+              Attribute certAttr = certEntry.getAttributes().get(attrIDs[0]);
+              properties.put(ServerProperty.INSTANCE_PUBLIC_KEY_CERTIFICATE,
+                  certAttr.get());
+            }
+            else
+            {
+              LOG.log(Level.WARNING, "Could not find public key for "+
+                  properties);
+            }
           }
           catch (NameNotFoundException x)
           {

--
Gitblit v1.10.0