From 365b9111189ba7fda737e717e16ef795d184a4eb Mon Sep 17 00:00:00 2001
From: coulbeck <coulbeck@localhost>
Date: Wed, 18 Oct 2006 17:13:46 +0000
Subject: [PATCH] Fix for [Issue 846] DN embedded in a monitor instance name. Reviewed by gbellato.
---
opends/src/server/org/opends/server/core/DirectoryServer.java | 34 ++++++++++++++++++++++++++++------
1 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index dc3e681..abc190e 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -4608,9 +4608,7 @@
// Try to register this monitor provider with an appropriate JMX MBean.
try
{
- DN monitorDN =
- DN.decode("cn=" + monitorProvider.getMonitorInstanceName() +
- ",cn=monitor");
+ DN monitorDN = getMonitorProviderDN(monitorProvider);
JMXMBean mBean = directoryServer.mBeans.get(monitorDN);
if (mBean == null)
{
@@ -4652,9 +4650,7 @@
{
try
{
- DN monitorDN =
- DN.decode("cn=" + provider.getMonitorInstanceName() +
- ",cn=monitor");
+ DN monitorDN = getMonitorProviderDN(provider);
JMXMBean mBean = directoryServer.mBeans.get(monitorDN);
if (mBean != null)
{
@@ -7631,5 +7627,31 @@
System.exit(1);
}
}
+
+ /**
+ * Construct the DN of a monitor provider entry.
+ * @param provider The monitor provider for which a DN is desired.
+ * @return The DN of the monitor provider entry.
+ */
+ public static DN getMonitorProviderDN(MonitorProvider provider)
+ {
+ String monitorName = provider.getMonitorInstanceName();
+ AttributeType cnType = getAttributeType(ATTR_COMMON_NAME);
+ DN monitorRootDN;
+ try
+ {
+ monitorRootDN = DN.decode(DN_MONITOR_ROOT);
+ }
+ catch (DirectoryException e)
+ {
+ // Cannot reach this point.
+ throw new RuntimeException();
+ }
+ RDN[] baseRDNs = monitorRootDN.getRDNComponents();
+ RDN[] rdns = new RDN[baseRDNs.length+1];
+ rdns[0] = new RDN(cnType, new AttributeValue(cnType, monitorName));
+ System.arraycopy(baseRDNs, 0, rdns, 1, baseRDNs.length);
+ return new DN(rdns);
+ }
}
--
Gitblit v1.10.0