From 7b618f78599b78c4b9085b938dd84a30fa5dc1a9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Tue, 11 Sep 2007 23:12:40 +0000
Subject: [PATCH] Handle special case where the requested managed object is the root configuration.
---
opends/src/server/org/opends/server/admin/client/spi/Driver.java | 6 ++++--
opends/src/server/org/opends/server/admin/client/ManagementContext.java | 6 ++++++
opends/src/server/org/opends/server/admin/server/ServerManagementContext.java | 6 ++++++
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/opends/src/server/org/opends/server/admin/client/ManagementContext.java b/opends/src/server/org/opends/server/admin/client/ManagementContext.java
index 972ace3..ca4771c 100644
--- a/opends/src/server/org/opends/server/admin/client/ManagementContext.java
+++ b/opends/src/server/org/opends/server/admin/client/ManagementContext.java
@@ -183,11 +183,17 @@
* If the client cannot contact the server due to an
* underlying communication problem.
*/
+ @SuppressWarnings("unchecked")
public final <C extends ConfigurationClient, S extends Configuration>
ManagedObject<? extends C> getManagedObject(
ManagedObjectPath<C, S> path) throws DefinitionDecodingException,
ManagedObjectDecodingException, ManagedObjectNotFoundException,
AuthorizationException, CommunicationException {
+ // Be careful to handle the root configuration.
+ if (path.isEmpty()) {
+ return (ManagedObject<C>) getRootConfigurationManagedObject();
+ }
+
return getDriver().getManagedObject(path);
}
diff --git a/opends/src/server/org/opends/server/admin/client/spi/Driver.java b/opends/src/server/org/opends/server/admin/client/spi/Driver.java
index e7b0a19..bc94558 100644
--- a/opends/src/server/org/opends/server/admin/client/spi/Driver.java
+++ b/opends/src/server/org/opends/server/admin/client/spi/Driver.java
@@ -390,7 +390,9 @@
/**
- * Gets the named managed object.
+ * Gets the named managed object. The path is guaranteed to be
+ * non-empty, so implementations do not need to worry about handling
+ * this special case.
*
* @param <C>
* The type of client managed object configuration that the
@@ -399,7 +401,7 @@
* The type of server managed object configuration that the
* path definition refers to.
* @param path
- * The path of the managed object.
+ * The non-empty path of the managed object.
* @return Returns the named managed object.
* @throws DefinitionDecodingException
* If the managed object was found but its type could not
diff --git a/opends/src/server/org/opends/server/admin/server/ServerManagementContext.java b/opends/src/server/org/opends/server/admin/server/ServerManagementContext.java
index d663430..39d1272 100644
--- a/opends/src/server/org/opends/server/admin/server/ServerManagementContext.java
+++ b/opends/src/server/org/opends/server/admin/server/ServerManagementContext.java
@@ -449,9 +449,15 @@
* If the named managed object could not be found or if it
* could not be decoded.
*/
+ @SuppressWarnings("unchecked")
public <C extends ConfigurationClient, S extends Configuration>
ServerManagedObject<? extends S> getManagedObject(
ManagedObjectPath<C, S> path) throws ConfigException {
+ // Be careful to handle the root configuration.
+ if (path.isEmpty()) {
+ return (ServerManagedObject<S>) getRootConfigurationManagedObject();
+ }
+
// Get the configuration entry.
DN targetDN = DNBuilder.create(path);
ConfigEntry configEntry = getManagedObjectConfigEntry(targetDN);
--
Gitblit v1.10.0