From 34ac48d938d5f3411505f7d0f883a585148ec716 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 08 Jan 2010 18:13:58 +0000
Subject: [PATCH] * various minor code fixes * fix unit tests * remove TODOs from Javadoc (issues are now in Issue Tracker)
---
sdk/src/org/opends/sdk/schema/SchemaUtils.java | 320 +++++++++++++++++++++++------------------------------
1 files changed, 140 insertions(+), 180 deletions(-)
diff --git a/sdk/src/org/opends/sdk/schema/SchemaUtils.java b/sdk/src/org/opends/sdk/schema/SchemaUtils.java
index dc1b056..0f4b596 100644
--- a/sdk/src/org/opends/sdk/schema/SchemaUtils.java
+++ b/sdk/src/org/opends/sdk/schema/SchemaUtils.java
@@ -51,7 +51,7 @@
* single quoted string, or an open parenthesis followed by a
* space-delimited set of quoted strings or unquoted words followed by
* a close parenthesis.
- *
+ *
* @param reader
* The string representation of the definition.
* @return The "extra" parameter value that was read.
@@ -108,8 +108,7 @@
values.add(readQuotedString(reader));
reader.skipWhitespaces();
reader.mark();
- }
- while (reader.read() != ')');
+ } while (reader.read() != ')');
}
}
else
@@ -118,8 +117,7 @@
do
{
length++;
- }
- while (reader.read() != ' ');
+ } while (reader.read() != ' ');
reader.reset();
values = Collections.singletonList(reader.read(length));
@@ -129,7 +127,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -181,15 +180,13 @@
values.add(readQuotedDescriptor(reader));
reader.skipWhitespaces();
reader.mark();
- }
- while (reader.read() != ')');
+ } while (reader.read() != ')');
}
}
else
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -197,92 +194,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
- throw DecodeException.error(message);
- }
- }
-
-
-
- /**
- * Reads the next OID from the definition, skipping over any leading
- * spaces.
- *
- * @param reader
- * The string representation of the definition.
- * @return The OID read from the definition.
- * @throws DecodeException
- * If a problem is encountered while reading the token name.
- */
- static String readNumericOID(SubstringReader reader)
- throws DecodeException
- {
- // This must be a numeric OID. In that case, we will accept
- // only digits and periods, but not consecutive periods.
- boolean lastWasPeriod = false;
- int length = 0;
-
- // Skip over any spaces at the beginning of the value.
- reader.skipWhitespaces();
- reader.mark();
-
- try
- {
- char c;
- while ((c = reader.read()) != ' ' && c != '\'')
- {
- if (c == '.')
- {
- if (lastWasPeriod)
- {
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS.get(reader
- .getString(), reader.pos() - 1);
- throw DecodeException.error(message);
- }
- else
- {
- lastWasPeriod = true;
- }
- }
- else if (!isDigit(c))
- {
- // Technically, this must be an illegal character. However, it
- // is possible that someone just got sloppy and did not
- // include a space between the name/OID and a closing
- // parenthesis. In that case, we'll assume it's the end of the
- // value.
- if (c == ')')
- {
- break;
- }
-
- // This must have been an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER.get(reader
- .getString(), reader.pos() - 1);
- throw DecodeException.error(message);
- }
- else
- {
- lastWasPeriod = false;
- }
- length++;
- }
-
- if (length == 0)
- {
- final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE.get();
- throw DecodeException.error(message);
- }
-
- reader.reset();
-
- return reader.read(length);
- }
- catch (final StringIndexOutOfBoundsException e)
- {
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -292,7 +205,7 @@
/**
* Reads the attribute description or numeric OID, skipping over any
* leading or trailing spaces.
- *
+ *
* @param reader
* The string representation of the definition.
* @return The attribute description or numeric OID read from the
@@ -303,31 +216,78 @@
*/
static String readOID(SubstringReader reader) throws DecodeException
{
- int length = 1;
+ int length = 0;
boolean enclosingQuote = false;
- String oid;
// Skip over any spaces at the beginning of the value.
reader.skipWhitespaces();
reader.mark();
- try
+ if (reader.remaining() > 0)
{
// The next character must be either numeric (for an OID) or
// alphabetic (for an attribute description).
- char c = reader.read();
- if (c == '\'')
+ if (reader.read() == '\'')
{
enclosingQuote = true;
reader.mark();
- c = reader.read();
}
- if (isDigit(c))
+ else
{
reader.reset();
- oid = readNumericOID(reader);
}
+ }
+ if (reader.remaining() > 0)
+ {
+ char c = reader.read();
+ length++;
+
+ if (isDigit(c))
+ {
+ // This must be a numeric OID. In that case, we will accept
+ // only digits and periods, but not consecutive periods.
+ boolean lastWasPeriod = false;
+
+ while (reader.remaining() > 0 && (c = reader.read()) != ' '
+ && c != ')' && !(c == '\'' && enclosingQuote))
+ {
+ if (c == '.')
+ {
+ if (lastWasPeriod)
+ {
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS
+ .get(reader.getString(), reader.pos() - 1);
+ throw DecodeException.error(message);
+ }
+ else
+ {
+ lastWasPeriod = true;
+ }
+ }
+ else if (!isDigit(c))
+ {
+ // This must be an illegal character.
+ // This must have been an illegal character.
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER
+ .get(reader.getString(), reader.pos() - 1);
+ throw DecodeException.error(message);
+ }
+ else
+ {
+ lastWasPeriod = false;
+ }
+
+ length++;
+ }
+
+ if (lastWasPeriod)
+ {
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ENDS_WITH_PERIOD
+ .get(reader.getString());
+ throw DecodeException.error(message);
+ }
+ }
else if (isAlpha(c))
{
// This must be an attribute description. In this case, we will
@@ -339,9 +299,8 @@
if (length == 0 && !isAlpha(c))
{
// This is an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -349,40 +308,44 @@
&& c != '_')
{
// This is an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
length++;
}
-
- reader.reset();
-
- // Return the position of the first non-space character after
- // the token.
- oid = reader.read(length);
}
else
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
- if (enclosingQuote)
+ if (enclosingQuote && c != '\'')
{
- reader.read();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS
+ .get(reader.pos() - 1, String.valueOf(c));
+ throw DecodeException.error(message);
}
- return oid;
}
- catch (final StringIndexOutOfBoundsException e)
+
+ if (length == 0)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE
+ .get();
throw DecodeException.error(message);
}
+
+ reader.reset();
+ String oid = reader.read(length);
+ if (enclosingQuote)
+ {
+ reader.read();
+ }
+
+ return oid;
}
@@ -390,7 +353,7 @@
/**
* Reads the next OID from the definition, skipping over any leading
* spaces. The OID may be followed by a integer length in brackets.
- *
+ *
* @param reader
* The string representation of the definition.
* @return The OID read from the definition.
@@ -428,9 +391,8 @@
{
if (lastWasPeriod)
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS.get(reader
- .getString(), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS
+ .get(reader.getString(), reader.pos() - 1);
throw DecodeException.error(message);
}
else
@@ -451,9 +413,8 @@
}
// This must have been an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER.get(reader
- .getString(), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER
+ .get(reader.getString(), reader.pos() - 1);
throw DecodeException.error(message);
}
else
@@ -465,7 +426,8 @@
if (length == 0)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -481,9 +443,8 @@
if (length == 0 && !isAlpha(c))
{
// This is an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -491,9 +452,8 @@
&& c != '_')
{
// This is an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -502,9 +462,8 @@
}
else
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -524,9 +483,8 @@
{
if (!isDigit(c))
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER.get(reader
- .getString(), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER
+ .get(reader.getString(), reader.pos() - 1);
throw DecodeException.error(message);
}
}
@@ -544,7 +502,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -573,8 +532,7 @@
// Skip over any trailing spaces;
reader.skipWhitespaces();
- }
- while (reader.read() != ')');
+ } while (reader.read() != ')');
}
else
{
@@ -586,7 +544,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -596,7 +555,7 @@
/**
* Reads the value of a string enclosed in single quotes, skipping
* over the quotes and any leading spaces.
- *
+ *
* @param reader
* The string representation of the definition.
* @return The string value read from the definition.
@@ -604,7 +563,7 @@
* If a problem is encountered while reading the quoted
* string.
*/
- static String readQuotedDescriptor(SubstringReader reader)
+ private static String readQuotedDescriptor(SubstringReader reader)
throws DecodeException
{
int length = 0;
@@ -618,9 +577,8 @@
char c = reader.read();
if (c != '\'')
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS.get(reader.pos() - 1,
- String.valueOf(c));
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS
+ .get(reader.pos() - 1, String.valueOf(c));
throw DecodeException.error(message);
}
@@ -631,9 +589,8 @@
if (length == 0 && !isAlpha(c))
{
// This is an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -641,9 +598,8 @@
&& c != '.')
{
// This is an illegal character.
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
- .valueOf(c), reader.pos() - 1);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+ .get(String.valueOf(c), reader.pos() - 1);
throw DecodeException.error(message);
}
@@ -658,7 +614,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -668,7 +625,7 @@
/**
* Reads the value of a string enclosed in single quotes, skipping
* over the quotes and any leading spaces.
- *
+ *
* @param reader
* The string representation of the definition.
* @return The string value read from the definition.
@@ -690,9 +647,8 @@
final char c = reader.read();
if (c != '\'')
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS.get(reader.pos() - 1,
- String.valueOf(c));
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS
+ .get(reader.pos() - 1, String.valueOf(c));
throw DecodeException.error(message);
}
@@ -711,7 +667,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -721,7 +678,7 @@
/**
* Reads the next ruleid from the definition, skipping over any
* leading spaces.
- *
+ *
* @param reader
* The string representation of the definition.
* @return The ruleid read from the definition.
@@ -748,7 +705,8 @@
if (length == 0)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_RULE_ID_NO_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_RULE_ID_NO_VALUE
+ .get();
throw DecodeException.error(message);
}
@@ -761,14 +719,15 @@
}
catch (final NumberFormatException e)
{
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_RULE_ID_INVALID.get(ruleID);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_RULE_ID_INVALID
+ .get(ruleID);
throw DecodeException.error(message);
}
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -797,8 +756,7 @@
// Skip over any trailing spaces;
reader.skipWhitespaces();
- }
- while (reader.read() != ')');
+ } while (reader.read() != ')');
}
else
{
@@ -810,7 +768,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
@@ -820,8 +779,8 @@
/**
* Reads the next token name from the definition, skipping over any
* leading or trailing spaces or <code>null</code> if there are no
- * moretokens to read.
- *
+ * more tokens to read.
+ *
* @param reader
* The string representation of the definition.
* @return The token name read from the definition or
@@ -859,8 +818,8 @@
if (token == null && reader.remaining() > 0)
{
reader.reset();
- final LocalizableMessage message =
- ERR_ATTR_SYNTAX_UNEXPECTED_CLOSE_PARENTHESIS.get(length);
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_UNEXPECTED_CLOSE_PARENTHESIS
+ .get(length);
throw DecodeException.error(message);
}
@@ -868,7 +827,8 @@
}
catch (final StringIndexOutOfBoundsException e)
{
- final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+ final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+ .get();
throw DecodeException.error(message);
}
}
--
Gitblit v1.10.0