From f2160f4bd1c8ac67e5a86a6710d431e8932877f9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 28 May 2010 11:47:51 +0000
Subject: [PATCH] Synchronize SDK on java.net with internal repository.
---
sdk/src/com/sun/opends/sdk/util/SubstringReader.java | 139 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 108 insertions(+), 31 deletions(-)
diff --git a/sdk/src/com/sun/opends/sdk/util/SubstringReader.java b/sdk/src/com/sun/opends/sdk/util/SubstringReader.java
index 8dec1fd..04d46d6 100644
--- a/sdk/src/com/sun/opends/sdk/util/SubstringReader.java
+++ b/sdk/src/com/sun/opends/sdk/util/SubstringReader.java
@@ -22,82 +22,159 @@
* CDDL HEADER END
*
*
- * Copyright 2009 Sun Microsystems, Inc.
+ * Copyright 2009-2010 Sun Microsystems, Inc.
*/
package com.sun.opends.sdk.util;
+
+
/**
* A sub-string reader.
*/
public class SubstringReader
{
- private String source;
+ // The source string.
+ private final String source;
+ // The current position.
private int pos;
+ // The marked position.
private int mark;
+ // The length of the source.
+ private final int length;
- public SubstringReader(String s) {
+
+
+ /**
+ * Creates an instance of SubstringReader.
+ *
+ * @param s
+ * the source of the reader.
+ */
+ public SubstringReader(final String s)
+ {
Validator.ensureNotNull(s);
source = s;
+ length = s.length();
pos = 0;
mark = 0;
}
+
+
/**
- * Attemps to read a substring of the specified length.
+ * Returns the source string.
*
- * @param length The number of characters to read.
- * @return The substring.
+ * @return source string.
*/
- public String read(int length)
- {
- String substring = source.substring(pos, pos + length);
- pos += length;
- return substring;
- }
-
- public char read()
- {
- return source.charAt(pos++);
- }
-
public String getString()
{
return source;
}
- public int pos()
- {
- return pos;
- }
- public int remaining()
- {
- return source.length() - pos;
- }
/**
- * Marks the present position in the stream. Subsequent calls
- * to reset() will reposition the stream to this point.
+ * Marks the present position in the stream. Subsequent calls to reset() will
+ * reposition the stream to this point.
*/
public void mark()
{
mark = pos;
}
+
+
/**
- * Resets the stream to the most recent mark, or to the beginning
- * of the string if it has never been marked.
+ * Returns the current position of the reader.
+ *
+ * @return current position of the reader.
+ */
+ public int pos()
+ {
+ return pos;
+ }
+
+
+
+ /**
+ * Attemps to read a character from the current position. The caller must
+ * ensure that the source string has the data available from the current
+ * position.
+ *
+ * @return The characted at the current position.
+ * @Exception StringIndexOutOfBoundsException if there is no more data
+ * available to read.
+ */
+ public char read()
+ {
+ if (pos >= length)
+ {
+ throw new StringIndexOutOfBoundsException();
+ }
+ return source.charAt(pos++);
+ }
+
+
+
+ /**
+ * Attemps to read a substring of the specified length from the current
+ * position. The caller must ensure that the requested length is within the
+ * bounds i.e. the requested length from the current position should not
+ * exceed the length of the source string.
+ *
+ * @param length
+ * The number of characters to read.
+ * @return The substring.
+ * @Exception StringIndexOutOfBoundsException if the length exceeds the
+ * allowed length.
+ */
+ public String read(final int length)
+ {
+ if (length > this.length || pos + length > this.length)
+ {
+ throw new StringIndexOutOfBoundsException();
+ }
+ final String substring = source.substring(pos, pos + length);
+ pos += length;
+ return substring;
+ }
+
+
+
+ /**
+ * Returns the remaining length of the available data.
+ *
+ * @return remaining length.
+ */
+ public int remaining()
+ {
+ return length - pos;
+ }
+
+
+
+ /**
+ * Resets the stream to the most recent mark, or to the beginning of the
+ * string if it has never been marked.
*/
public void reset()
{
pos = mark;
}
+
+
+ /**
+ * Skips the whitespace characters and advances the reader to the next non
+ * whitespace character.
+ *
+ * @return number of whitespace characters skipped.
+ */
public int skipWhitespaces()
{
int skipped = 0;
- while(pos < source.length() && source.charAt(pos) == ' ')
+ while (pos < length && source.charAt(pos) == ' ')
{
skipped++;
pos++;
--
Gitblit v1.10.0