From 0f682577196526a40a6653bdd6ef8f44b5167dca Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 25 Feb 2011 15:23:20 +0000
Subject: [PATCH] Fix issue OPENDJ-75: Combine RFC 3672 and relative subtree specification syntax https://bugster.forgerock.org/jira/browse/OPENDJ-75
---
opends/src/server/org/opends/server/schema/SubtreeSpecificationSyntax.java | 61 +++++++-----------------------
1 files changed, 14 insertions(+), 47 deletions(-)
diff --git a/opends/src/server/org/opends/server/schema/SubtreeSpecificationSyntax.java b/opends/src/server/org/opends/server/schema/SubtreeSpecificationSyntax.java
index b747ba6..17f5893 100644
--- a/opends/src/server/org/opends/server/schema/SubtreeSpecificationSyntax.java
+++ b/opends/src/server/org/opends/server/schema/SubtreeSpecificationSyntax.java
@@ -23,11 +23,12 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
+ * Portions copyright 2011 ForgeRock AS
*/
package org.opends.server.schema;
-import org.opends.messages.Message;
import static org.opends.server.loggers.debug.DebugLogger.*;
+
import org.opends.server.loggers.debug.DebugTracer;
import static org.opends.server.loggers.ErrorLogger.logError;
import static org.opends.messages.SchemaMessages.*;
@@ -41,11 +42,8 @@
import org.opends.server.api.EqualityMatchingRule;
import org.opends.server.api.OrderingMatchingRule;
import org.opends.server.api.SubstringMatchingRule;
-import org.opends.server.api.SubtreeSpecification;
import org.opends.server.config.ConfigException;
import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.RFC3672SubtreeSpecification;
-import org.opends.server.core.RelativeSubtreeSpecification;
import org.opends.server.types.*;
@@ -107,30 +105,8 @@
*/
public SubtreeSpecification decode(AttributeValue value)
throws DirectoryException {
-
- // Try parsing the value with every subtree spec known.
- SubtreeSpecification subTreeSpec = null;
- String specString = value.toString();
- try {
- subTreeSpec = RFC3672SubtreeSpecification.valueOf(
- rootDN, specString);
- return subTreeSpec;
- } catch (DirectoryException de) {}
- try {
- subTreeSpec = RelativeSubtreeSpecification.valueOf(
- rootDN, specString);
- return subTreeSpec;
- } catch (DirectoryException de) {}
-
- if (subTreeSpec == null) {
- Message message =
- ERR_ATTR_SYNTAX_SUBTREE_SPECIFICATION_INVALID.get(
- specString);
- throw new DirectoryException(
- ResultCode.INVALID_ATTRIBUTE_SYNTAX, message);
- }
-
- return subTreeSpec;
+ return SubtreeSpecification.valueOf(rootDN, value
+ .getValue().toString());
}
}
@@ -275,28 +251,19 @@
MessageBuilder invalidReason) {
// Use the subtree specification code to make this determination.
- // Try parsing the value with every subtree spec known.
- SubtreeSpecification subTreeSpec = null;
- String specString = value.toString();
try {
- subTreeSpec = RFC3672SubtreeSpecification.valueOf(
- DN.nullDN(), specString);
- return true;
- } catch (DirectoryException de) {}
- try {
- subTreeSpec = RelativeSubtreeSpecification.valueOf(
- DN.nullDN(), specString);
- return true;
- } catch (DirectoryException de) {}
+ SubtreeSpecification.valueOf(DN.nullDN(), value.toString());
- if (subTreeSpec == null) {
- Message message =
- ERR_ATTR_SYNTAX_SUBTREE_SPECIFICATION_INVALID.get(
- specString);
- invalidReason.append(message);
+ return true;
+ } catch (DirectoryException e) {
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+
+ invalidReason.append(e.getMessageObject());
+ return false;
}
-
- return false;
}
/**
--
Gitblit v1.10.0