From 4b31a35ca148d08a0c89ebbcbb51edeb3ba411b9 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Thu, 25 Jan 2007 01:59:52 +0000
Subject: [PATCH] Make a number of updates to schema processing, all of which fall under the umbrella of issue #1163. The individual issues addressed include:
---
opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java | 148 ++++++++++++++++++++-----------------------------
1 files changed, 60 insertions(+), 88 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
index e238546..c28dd53 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/schema/MatchingRuleUseSyntax.java
@@ -45,14 +45,12 @@
import org.opends.server.types.AttributeType;
import org.opends.server.types.ByteString;
import org.opends.server.types.DirectoryException;
-import org.opends.server.types.ErrorLogCategory;
-import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.MatchingRuleUse;
import org.opends.server.types.ResultCode;
import org.opends.server.types.Schema;
import static org.opends.server.loggers.Debug.*;
-import static org.opends.server.loggers.Error.*;
import static org.opends.server.messages.MessageHandler.*;
import static org.opends.server.messages.SchemaMessages.*;
import static org.opends.server.schema.SchemaConstants.*;
@@ -103,17 +101,10 @@
/**
- * Initializes this attribute syntax based on the information in the provided
- * configuration entry.
- *
- * @param configEntry The configuration entry that contains the information
- * to use to initialize this attribute syntax.
- *
- * @throws ConfigException If an unrecoverable problem arises in the
- * process of performing the initialization.
+ * {@inheritDoc}
*/
public void initializeSyntax(ConfigEntry configEntry)
- throws ConfigException
+ throws ConfigException, InitializationException
{
assert debugEnter(CLASS_NAME, "initializeSyntax",
String.valueOf(configEntry));
@@ -122,36 +113,37 @@
DirectoryServer.getEqualityMatchingRule(EMR_CASE_IGNORE_OID);
if (defaultEqualityMatchingRule == null)
{
- logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_ERROR,
- MSGID_ATTR_SYNTAX_UNKNOWN_EQUALITY_MATCHING_RULE,
- EMR_CASE_IGNORE_OID, SYNTAX_MATCHING_RULE_USE_NAME);
+ int msgID = MSGID_ATTR_SYNTAX_UNKNOWN_EQUALITY_MATCHING_RULE;
+ String message = getMessage(msgID, EMR_CASE_IGNORE_OID,
+ SYNTAX_MATCHING_RULE_USE_NAME);
+ throw new InitializationException(msgID, message);
}
defaultOrderingMatchingRule =
DirectoryServer.getOrderingMatchingRule(OMR_CASE_IGNORE_OID);
if (defaultOrderingMatchingRule == null)
{
- logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_ERROR,
- MSGID_ATTR_SYNTAX_UNKNOWN_ORDERING_MATCHING_RULE,
- OMR_CASE_IGNORE_OID, SYNTAX_MATCHING_RULE_USE_NAME);
+ int msgID = MSGID_ATTR_SYNTAX_UNKNOWN_ORDERING_MATCHING_RULE;
+ String message = getMessage(msgID, OMR_CASE_IGNORE_OID,
+ SYNTAX_MATCHING_RULE_USE_NAME);
+ throw new InitializationException(msgID, message);
}
defaultSubstringMatchingRule =
DirectoryServer.getSubstringMatchingRule(SMR_CASE_IGNORE_OID);
if (defaultSubstringMatchingRule == null)
{
- logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_ERROR,
- MSGID_ATTR_SYNTAX_UNKNOWN_SUBSTRING_MATCHING_RULE,
- SMR_CASE_IGNORE_OID, SYNTAX_MATCHING_RULE_USE_NAME);
+ int msgID = MSGID_ATTR_SYNTAX_UNKNOWN_SUBSTRING_MATCHING_RULE;
+ String message = getMessage(msgID, SMR_CASE_IGNORE_OID,
+ SYNTAX_MATCHING_RULE_USE_NAME);
+ throw new InitializationException(msgID, message);
}
}
/**
- * Retrieves the common name for this attribute syntax.
- *
- * @return The common name for this attribute syntax.
+ * {@inheritDoc}
*/
public String getSyntaxName()
{
@@ -163,9 +155,7 @@
/**
- * Retrieves the OID for this attribute syntax.
- *
- * @return The OID for this attribute syntax.
+ * {@inheritDoc}
*/
public String getOID()
{
@@ -177,9 +167,7 @@
/**
- * Retrieves a description for this attribute syntax.
- *
- * @return A description for this attribute syntax.
+ * {@inheritDoc}
*/
public String getDescription()
{
@@ -191,12 +179,7 @@
/**
- * Retrieves the default equality matching rule that will be used for
- * attributes with this syntax.
- *
- * @return The default equality matching rule that will be used for
- * attributes with this syntax, or <CODE>null</CODE> if equality
- * matches will not be allowed for this type by default.
+ * {@inheritDoc}
*/
public EqualityMatchingRule getEqualityMatchingRule()
{
@@ -208,12 +191,7 @@
/**
- * Retrieves the default ordering matching rule that will be used for
- * attributes with this syntax.
- *
- * @return The default ordering matching rule that will be used for
- * attributes with this syntax, or <CODE>null</CODE> if ordering
- * matches will not be allowed for this type by default.
+ * {@inheritDoc}
*/
public OrderingMatchingRule getOrderingMatchingRule()
{
@@ -225,12 +203,7 @@
/**
- * Retrieves the default substring matching rule that will be used for
- * attributes with this syntax.
- *
- * @return The default substring matching rule that will be used for
- * attributes with this syntax, or <CODE>null</CODE> if substring
- * matches will not be allowed for this type by default.
+ * {@inheritDoc}
*/
public SubstringMatchingRule getSubstringMatchingRule()
{
@@ -242,12 +215,7 @@
/**
- * Retrieves the default approximate matching rule that will be used for
- * attributes with this syntax.
- *
- * @return The default approximate matching rule that will be used for
- * attributes with this syntax, or <CODE>null</CODE> if approximate
- * matches will not be allowed for this type by default.
+ * {@inheritDoc}
*/
public ApproximateMatchingRule getApproximateMatchingRule()
{
@@ -260,16 +228,7 @@
/**
- * Indicates whether the provided value is acceptable for use in an attribute
- * with this syntax. If it is not, then the reason may be appended to the
- * provided buffer.
- *
- * @param value The value for which to make the determination.
- * @param invalidReason The buffer to which the invalid reason should be
- * appended.
- *
- * @return <CODE>true</CODE> if the provided value is acceptable for use with
- * this syntax, or <CODE>false</CODE> if not.
+ * {@inheritDoc}
*/
public boolean valueIsAcceptable(ByteString value,
StringBuilder invalidReason)
@@ -282,7 +241,7 @@
// acceptable.
try
{
- decodeMatchingRuleUse(value, DirectoryServer.getSchema());
+ decodeMatchingRuleUse(value, DirectoryServer.getSchema(), true);
return true;
}
catch (DirectoryException de)
@@ -303,10 +262,16 @@
* should not be in order to allow the desired capitalization to be
* preserved).
*
- * @param value The ASN.1 octet string containing the value to decode (it
- * does not need to be normalized).
- * @param schema The schema to use to resolve references to other schema
- * elements.
+ * @param value The ASN.1 octet string containing the value
+ * to decode (it does not need to be
+ * normalized).
+ * @param schema The schema to use to resolve references to
+ * other schema elements.
+ * @param allowUnknownElements Indicates whether to allow values that
+ * reference a name form and/or superior rules
+ * which are not defined in the server schema.
+ * This should only be true when called by
+ * {@code valueIsAcceptable}.
*
* @return The decoded matching rule use definition.
*
@@ -314,7 +279,8 @@
* matching rule use definition.
*/
public static MatchingRuleUse decodeMatchingRuleUse(ByteString value,
- Schema schema)
+ Schema schema,
+ boolean allowUnknownElements)
throws DirectoryException
{
assert debugEnter(CLASS_NAME, "decodeMatchingRuleUse",
@@ -610,15 +576,18 @@
{
// This isn't good because it means that the matching rule use
// specifies an attribute type that we don't know anything about.
- // In this case all we can do is log a message and construct a
- // default type.
- int msgID = MSGID_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR;
- String message = getMessage(msgID, oid, woidBuffer.toString());
- logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_WARNING,
- message, msgID);
-
- attr = DirectoryServer.getDefaultAttributeType(
- woidBuffer.toString());
+ if (allowUnknownElements)
+ {
+ attr = DirectoryServer.getDefaultAttributeType(
+ woidBuffer.toString());
+ }
+ else
+ {
+ int msgID = MSGID_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR;
+ String message = getMessage(msgID, oid, woidBuffer.toString());
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
+ message, msgID);
+ }
}
attrs.add(attr);
@@ -651,15 +620,18 @@
{
// This isn't good because it means that the matching rule use
// specifies an attribute type that we don't know anything about.
- // In this case all we can do is log a message and construct a
- // default type.
- int msgID = MSGID_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR;
- String message = getMessage(msgID, oid, woidBuffer.toString());
- logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_WARNING,
- message, msgID);
-
- attr = DirectoryServer.getDefaultAttributeType(
- woidBuffer.toString());
+ if (allowUnknownElements)
+ {
+ attr = DirectoryServer.getDefaultAttributeType(
+ woidBuffer.toString());
+ }
+ else
+ {
+ int msgID = MSGID_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR;
+ String message = getMessage(msgID, oid, woidBuffer.toString());
+ throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
+ message, msgID);
+ }
}
attrs.add(attr);
--
Gitblit v1.10.0