From f59c6ebf626b30f5bf7726700528d3da1cc111a9 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Sat, 20 Jun 2009 00:29:09 +0000
Subject: [PATCH] Fix for issue 4063 (dsreplication disable throws java.lang.NumberFormatException) Handle the case where the ADS entry did not have a reference to the administration port (this occurs when OpenDS 1.0 have been upgraded).
---
opends/src/ads/org/opends/admin/ads/ServerDescriptor.java | 76 ++++++++++++++++++++++++++++++--------
1 files changed, 60 insertions(+), 16 deletions(-)
diff --git a/opends/src/ads/org/opends/admin/ads/ServerDescriptor.java b/opends/src/ads/org/opends/admin/ads/ServerDescriptor.java
index d8d1a53..8fa88a1 100644
--- a/opends/src/ads/org/opends/admin/ads/ServerDescriptor.java
+++ b/opends/src/ads/org/opends/admin/ads/ServerDescriptor.java
@@ -33,6 +33,8 @@
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.naming.NameNotFoundException;
import javax.naming.NamingEnumeration;
@@ -57,6 +59,10 @@
private Map<ServerProperty, Object> serverProperties =
new HashMap<ServerProperty, Object>();
private TopologyCacheException lastException;
+
+ private static final Logger LOG =
+ Logger.getLogger(ServerDescriptor.class.getName());
+
/**
* Enumeration containing the different server properties that we can keep in
* the ServerProperty object.
@@ -472,26 +478,64 @@
}
else
{
- boolean secure;
+ ArrayList<ADSContext.ServerProperty> enabledAttrs =
+ new ArrayList<ADSContext.ServerProperty>();
- Object v = adsProperties.get(ADSContext.ServerProperty.ADMIN_ENABLED);
- secure = securePreferred && "true".equalsIgnoreCase(String.valueOf(v));
- try
+ if (securePreferred)
{
- if (secure)
- {
- port = Integer.parseInt((String)adsProperties.get(
- ADSContext.ServerProperty.ADMIN_PORT));
- }
- else
- {
- port = Integer.parseInt((String)adsProperties.get(
- ADSContext.ServerProperty.LDAP_PORT));
- }
+ enabledAttrs.add(ADSContext.ServerProperty.ADMIN_ENABLED);
+ enabledAttrs.add(ADSContext.ServerProperty.LDAPS_ENABLED);
+ enabledAttrs.add(ADSContext.ServerProperty.LDAP_ENABLED);
}
- catch (Throwable t)
+ else
{
- /* ignore */
+ enabledAttrs.add(ADSContext.ServerProperty.LDAP_ENABLED);
+ enabledAttrs.add(ADSContext.ServerProperty.ADMIN_ENABLED);
+ enabledAttrs.add(ADSContext.ServerProperty.LDAPS_ENABLED);
+ }
+
+ for (ADSContext.ServerProperty prop : enabledAttrs)
+ {
+ Object v = adsProperties.get(prop);
+ if ((v != null) && "true".equalsIgnoreCase(String.valueOf(v)))
+ {
+ ADSContext.ServerProperty portProp;
+ if (prop == ADSContext.ServerProperty.ADMIN_ENABLED)
+ {
+ portProp = ADSContext.ServerProperty.ADMIN_PORT;
+ }
+ else if (prop == ADSContext.ServerProperty.LDAPS_ENABLED)
+ {
+ portProp = ADSContext.ServerProperty.LDAPS_PORT;
+ }
+ else if (prop == ADSContext.ServerProperty.LDAP_ENABLED)
+ {
+ portProp = ADSContext.ServerProperty.LDAP_PORT;
+ }
+ else
+ {
+ throw new IllegalStateException("Unexpected prop: "+prop);
+ }
+ Object p = adsProperties.get(portProp);
+ if (p != null)
+ {
+ try
+ {
+ port = Integer.parseInt(String.valueOf(p));
+ }
+ catch (Throwable t)
+ {
+ LOG.log(Level.WARNING, "Error calculating host port: "+t+" in "+
+ adsProperties, t);
+ }
+ break;
+ }
+ else
+ {
+ LOG.log(Level.WARNING, "Value for "+portProp+" is null in "+
+ adsProperties);
+ }
+ }
}
}
return host + ":" + port;
--
Gitblit v1.10.0