From fe6545499558bb95484defd311ed83eced6aedf4 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 19 Jul 2007 14:54:30 +0000
Subject: [PATCH] Fix issues 1943 (unable to create je-index), 1996 (exception when creating components with empty names), and 1998 (exception when creating components with blank names).
---
opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java | 36 +++++++++++++++++++++++++++++-------
1 files changed, 29 insertions(+), 7 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java b/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
index 5aa15c2..47123bc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/tools/dsconfig/CreateSubCommandHandler.java
@@ -62,6 +62,7 @@
import org.opends.server.admin.client.AuthorizationException;
import org.opends.server.admin.client.CommunicationException;
import org.opends.server.admin.client.ConcurrentModificationException;
+import org.opends.server.admin.client.IllegalManagedObjectNameException;
import org.opends.server.admin.client.ManagedObject;
import org.opends.server.admin.client.ManagedObjectDecodingException;
import org.opends.server.admin.client.ManagementContext;
@@ -105,13 +106,16 @@
*
* @param d
* The managed object definition.
+ * @param namingPropertyDefinition
+ * The naming property definition if there is one.
* @param args
* The property value arguments.
* @throws ArgumentException
* If the property value arguments could not be parsed.
*/
public MyPropertyProvider(ManagedObjectDefinition<?, ?> d,
- List<String> args) throws ArgumentException {
+ PropertyDefinition<?> namingPropertyDefinition, List<String> args)
+ throws ArgumentException {
for (String s : args) {
// Parse the property "property:value".
int sep = s.indexOf(':');
@@ -138,6 +142,12 @@
throw ArgumentExceptionFactory.unknownProperty(d, propertyName);
}
+ // Make sure that the user is not attempting to set the naming
+ // property.
+ if (pd.equals(namingPropertyDefinition)) {
+ throw ArgumentExceptionFactory.unableToSetNamingProperty(d, pd);
+ }
+
// Add the value.
addPropertyValue(d, pd, value);
}
@@ -247,7 +257,8 @@
public static <C extends ConfigurationClient> CreateSubCommandHandler create(
SubCommandArgumentParser parser, ManagedObjectPath<?, ?> p,
InstantiableRelationDefinition<C, ?> r) throws ArgumentException {
- return new CreateSubCommandHandler<C>(parser, p, r, p.child(r, "DUMMY"));
+ return new CreateSubCommandHandler<C>(parser, p, r, r
+ .getNamingPropertyDefinition(), p.child(r, "DUMMY"));
}
@@ -270,12 +281,15 @@
public static <C extends ConfigurationClient> CreateSubCommandHandler create(
SubCommandArgumentParser parser, ManagedObjectPath<?, ?> p,
OptionalRelationDefinition<C, ?> r) throws ArgumentException {
- return new CreateSubCommandHandler<C>(parser, p, r, p.child(r));
+ return new CreateSubCommandHandler<C>(parser, p, r, null, p.child(r));
}
// The sub-commands naming arguments.
private final List<StringArgument> namingArgs;
+ // The optional naming property definition.
+ private final PropertyDefinition<?> namingPropertyDefinition;
+
// The path of the parent managed object.
private final ManagedObjectPath<?, ?> path;
@@ -306,9 +320,11 @@
// Common constructor.
private CreateSubCommandHandler(SubCommandArgumentParser parser,
ManagedObjectPath<?, ?> p, RelationDefinition<C, ?> r,
- ManagedObjectPath<?, ?> c) throws ArgumentException {
+ PropertyDefinition<?> pd, ManagedObjectPath<?, ?> c)
+ throws ArgumentException {
this.path = p;
this.relation = r;
+ this.namingPropertyDefinition = pd;
// Create the sub-command.
String name = "create-" + r.getName();
@@ -321,7 +337,7 @@
this.types = getSubTypes(r.getChildDefinition());
// Create the naming arguments.
- this.namingArgs = createNamingArgs(subCommand, c);
+ this.namingArgs = createNamingArgs(subCommand, c, true);
// Create the --property argument which is used to specify
// property values.
@@ -392,7 +408,8 @@
// Encode the provided properties.
List<String> propertyArgs = propertySetArgument.getValues();
- MyPropertyProvider provider = new MyPropertyProvider(d, propertyArgs);
+ MyPropertyProvider provider = new MyPropertyProvider(d,
+ namingPropertyDefinition, propertyArgs);
// Add the child managed object.
ManagementContext context = app.getManagementContext();
@@ -439,7 +456,12 @@
InstantiableRelationDefinition<C, ?> irelation =
(InstantiableRelationDefinition<C, ?>) relation;
String name = names.get(names.size() - 1);
- child = parent.createChild(irelation, d, name, exceptions);
+ try {
+ child = parent.createChild(irelation, d, name, exceptions);
+ } catch (IllegalManagedObjectNameException e) {
+ throw ArgumentExceptionFactory
+ .adaptIllegalManagedObjectNameException(e, d);
+ }
} else {
OptionalRelationDefinition<C, ?> orelation =
(OptionalRelationDefinition<C, ?>) relation;
--
Gitblit v1.10.0