diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-23 21:31:04 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-23 21:31:04 +0000 |
commit | 947b8814056ea2fba6bbcfab86591f74bffc0311 (patch) | |
tree | 3ca4b2e68dc14c3128b9c781d23f1d0b1f2bee49 /libjava/classpath/java/text | |
parent | 49792907376493f0939563eb0219b96a48f1ae3b (diff) | |
download | gcc-947b8814056ea2fba6bbcfab86591f74bffc0311.tar.gz |
Imported Classpath 0.18.
* sources.am, Makefile.in: Updated.
* Makefile.am (nat_source_files): Removed natProxy.cc.
* java/lang/reflect/natProxy.cc: Removed.
* gnu/classpath/jdwp/VMFrame.java,
gnu/classpath/jdwp/VMIdManager.java,
gnu/classpath/jdwp/VMVirtualMachine.java,
java/lang/reflect/VMProxy.java: New files.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* scripts/makemake.tcl (verbose): Add gnu/java/awt/peer/qt to BC
list.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/net/DefaultContentHandlerFactory.java (getContent):
Remove ClasspathToolkit references.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/awt/xlib/XCanvasPeer.java: Add new peer methods.
* gnu/awt/xlib/XFramePeer.java: Likewise.
* gnu/awt/xlib/XGraphicsConfiguration.java: Likewise.
2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com>
* Makefile.am (libgcjawt_la_SOURCES): Remove jawt.c. Add
classpath/native/jawt/jawt.c.
* Makefile.in: Regenerate.
* jawt.c: Remove file.
* include/Makefile.am (tool_include__HEADERS): Remove jawt.h and
jawt_md.h. Add ../classpath/include/jawt.h and
../classpath/include/jawt_md.h.
* include/Makefile.in: Regenerate.
* include/jawt.h: Regenerate.
* include/jawt_md.h: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104586 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/java/text')
17 files changed, 824 insertions, 841 deletions
diff --git a/libjava/classpath/java/text/AttributedCharacterIterator.java b/libjava/classpath/java/text/AttributedCharacterIterator.java index e5686ba346d..8413c203130 100644 --- a/libjava/classpath/java/text/AttributedCharacterIterator.java +++ b/libjava/classpath/java/text/AttributedCharacterIterator.java @@ -58,7 +58,7 @@ import java.util.Set; public interface AttributedCharacterIterator extends CharacterIterator { /** - * This class defines attribute keys that are used as text attributes. + * Defines attribute keys that are used as text attributes. */ public static class Attribute implements Serializable { @@ -74,7 +74,8 @@ public interface AttributedCharacterIterator extends CharacterIterator * This is the attribute for the reading form of text. This is used * for storing pronunciation along with the written text for languages * which need it. The value of attributes of this key type are - * instances of <code>Annotation</code> which wrappers a <code>String</code>. + * instances of <code>Annotation</code> which wrappers a + * <code>String</code>. */ public static final Attribute READING = new Attribute ("READING"); @@ -87,14 +88,13 @@ public interface AttributedCharacterIterator extends CharacterIterator new Attribute ("INPUT_METHOD_SEGMENT"); /** - * This is the name of the attribute key + * The name of the attribute key * @serial */ private String name; /** - * This method initializes a new instance of this class with the specified - * name. + * Initializes a new instance of this class with the specified name. * * @param name The name of this attribute key. */ @@ -104,7 +104,7 @@ public interface AttributedCharacterIterator extends CharacterIterator } /** - * This method returns the name of this attribute. + * Returns the name of this attribute. * * @return The attribute name */ @@ -114,14 +114,16 @@ public interface AttributedCharacterIterator extends CharacterIterator } /** - * This method resolves an instance of <code>AttributedCharacterIterator.Attribute</code> + * Resolves an instance of + * <code>AttributedCharacterIterator.Attribute</code> * that is being deserialized to one of the three pre-defined attribute * constants. It does this by comparing the names of the attributes. The * constant that the deserialized object resolves to is returned. * * @return The resolved contant value * - * @exception InvalidObjectException If the object being deserialized cannot be resolved. + * @exception InvalidObjectException If the object being deserialized + * cannot be resolved. */ protected Object readResolve() throws InvalidObjectException { @@ -134,21 +136,25 @@ public interface AttributedCharacterIterator extends CharacterIterator if (this.equals (INPUT_METHOD_SEGMENT)) return INPUT_METHOD_SEGMENT; - throw new InvalidObjectException ("Can't resolve Attribute: " + getName()); + throw new InvalidObjectException ("Can't resolve Attribute: " + + getName()); } /** - * This method tests this object for equality against the specified object. + * Tests this object for equality against the specified object. * The two objects will be considered equal if and only if: * <ul> * <li>The specified object is not <code>null</code>. - * <li>The specified object is an instance of <code>AttributedCharacterIterator.Attribute</code>. + * <li>The specified object is an instance of + * <code>AttributedCharacterIterator.Attribute</code>. * <li>The specified object has the same attribute name as this object. * </ul> * - * @param The <code>Object</code> to test for equality against this object. + * @param obj the <code>Object</code> to test for equality against this + * object. * - * @return <code>true</code> if the specified object is equal to this one, <code>false</code> otherwise. + * @return <code>true</code> if the specified object is equal to this one, + * <code>false</code> otherwise. */ public final boolean equals (Object obj) { @@ -159,7 +165,7 @@ public interface AttributedCharacterIterator extends CharacterIterator } /** - * This method returns a hash value for this object. + * Returns a hash value for this object. * * @return A hash value for this object. */ @@ -169,7 +175,7 @@ public interface AttributedCharacterIterator extends CharacterIterator } /** - * This method returns a <code>String</code> representation of this object. + * Returns a <code>String</code> representation of this object. * * @return A <code>String</code> representation of this object. */ @@ -181,7 +187,7 @@ public interface AttributedCharacterIterator extends CharacterIterator } // Inner class Attribute /** - * This method returns a list of all keys that are defined for the + * Returns a list of all keys that are defined for the * text range. This can be an empty list if no attributes are defined. * * @return A list of keys @@ -189,15 +195,15 @@ public interface AttributedCharacterIterator extends CharacterIterator Set getAllAttributeKeys(); /** - * This method returns a <code>Map</code> of the attributed defined for - * the current character. + * Returns a <code>Map</code> of the attributes defined for the current + * character. * * @return A <code>Map</code> of the attributes for the current character. */ Map getAttributes(); /** - * This method returns the value of the specified attribute for the + * Returns the value of the specified attribute for the * current character. If the attribute is not defined for the current * character, <code>null</code> is returned. * @@ -208,7 +214,7 @@ public interface AttributedCharacterIterator extends CharacterIterator Object getAttribute (AttributedCharacterIterator.Attribute attrib); /** - * This method returns the index of the first character in the run that + * Returns the index of the first character in the run that * contains all attributes defined for the current character. * * @return The start index of the run @@ -216,7 +222,7 @@ public interface AttributedCharacterIterator extends CharacterIterator int getRunStart(); /** - * This method returns the index of the first character in the run that + * Returns the index of the first character in the run that * contains all attributes in the specified <code>Set</code> defined for * the current character. * @@ -227,7 +233,7 @@ public interface AttributedCharacterIterator extends CharacterIterator int getRunStart (Set attribs); /** - * This method returns the index of the first character in the run that + * Returns the index of the first character in the run that * contains the specified attribute defined for the current character. * * @param attrib The attribute. @@ -237,15 +243,15 @@ public interface AttributedCharacterIterator extends CharacterIterator int getRunStart (AttributedCharacterIterator.Attribute attrib); /** - * This method returns the index of the character after the end of the run - * that contains all attributed defined for the current character. + * Returns the index of the character after the end of the run + * that contains all attributes defined for the current character. * * @return The end index of the run. */ int getRunLimit(); /** - * This method returns the index of the character after the end of the run + * Returns the index of the character after the end of the run * that contains all attributes in the specified <code>Set</code> defined * for the current character. * @@ -256,7 +262,7 @@ public interface AttributedCharacterIterator extends CharacterIterator int getRunLimit (Set attribs); /** - * This methods returns the index of the character after the end of the run + * Returns the index of the character after the end of the run * that contains the specified attribute defined for the current character. * * @param attrib The attribute. diff --git a/libjava/classpath/java/text/AttributedString.java b/libjava/classpath/java/text/AttributedString.java index b9ced8f5ac2..9f0d5af1c49 100644 --- a/libjava/classpath/java/text/AttributedString.java +++ b/libjava/classpath/java/text/AttributedString.java @@ -1,5 +1,5 @@ /* AttributedString.java -- Models text with attributes - Copyright (C) 1998, 1999, 2004 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -47,379 +47,326 @@ import java.util.Map; import java.util.Set; /** - * This class models a <code>String</code> with attributes over various - * subranges of the string. It allows applications to access this - * information via the <code>AttributedCharcterIterator</code> interface. - * - * @version 0.0 - * - * @author Aaron M. Renn (arenn@urbanophile.com) - */ -public class AttributedString -{ - -/*************************************************************************/ - -/* - * Inner Classes - */ - -/** - * This class contains the attributes and ranges of text over which - * that attributes apply. - */ -final class AttributeRange -{ - -/* - * Instance Variables - */ - -/** - * A Map of the attributes - */ -Map attribs; - -/** - * The beginning index of the attributes - */ -int begin_index; - -/** - * The ending index of the attributes - */ -int end_index; - -/*************************************************************************/ - -/* - * Constructors - */ - -AttributeRange(Map attribs, int begin_index, int end_index) -{ - this.attribs = attribs; - this.begin_index = begin_index; - this.end_index = end_index; -} - -} // Inner class AttributeRange - -/*************************************************************************/ - -/* - * Instance Variables + * This class models a <code>String</code> with attributes over various + * subranges of the string. It allows applications to access this + * information via the <code>AttributedCharcterIterator</code> interface. + * + * @author Aaron M. Renn (arenn@urbanophile.com) */ - -/** - * This object holds the string we are representing. - */ -private StringCharacterIterator sci; - -/** - * This is the attribute information - */ -private AttributeRange[] attribs; - -/*************************************************************************/ - -/* - * Constructors - */ - -/** - * This method initializes a new instance of <code>AttributedString</code> - * that represents the specified <code>String</code> with no attributes. - * - * @param str The <code>String</code> to be attributed. - */ -public -AttributedString(String str) -{ - sci = new StringCharacterIterator(str); - attribs = new AttributeRange[0]; -} - -/*************************************************************************/ - -/** - * This method initializes a new instance of <code>AttributedString</code> - * that represents that specified <code>String</code> with the specified - * attributes over the entire length of the <code>String</code>. - * - * @param str The <code>String</code> to be attributed. - * @param attributes The attribute list. - */ -public -AttributedString(String str, Map attributes) -{ - this(str); - - attribs = new AttributeRange[1]; - attribs[0] = new AttributeRange(attributes, 0, str.length()); -} - -/*************************************************************************/ - -/** - * This method initializes a new instance of <code>AttributedString</code> - * that will use the text and attribute information from the specified - * <code>AttributedCharacterIterator</code>. - * - * @param aci The <code>AttributedCharacterIterator</code> containing the text and attribute information. - */ -public -AttributedString(AttributedCharacterIterator aci) -{ - this(aci, aci.getBeginIndex(), aci.getEndIndex(), null); -} - -/*************************************************************************/ - -/** - * This method initializes a new instance of <code>AttributedString</code> - * that will use the text and attribute information from the specified - * subrange of the specified <code>AttributedCharacterIterator</code>. - * - * @param aci The <code>AttributedCharacterIterator</code> containing the text and attribute information. - * @param begin_index The beginning index of the text subrange. - * @param end_index The ending index of the text subrange. - */ -public -AttributedString(AttributedCharacterIterator aci, int begin_index, - int end_index) +public class AttributedString { - this(aci, begin_index, end_index, null); -} - -/*************************************************************************/ -/** - * This method initializes a new instance of <code>AttributedString</code> - * that will use the text and attribute information from the specified - * subrange of the specified <code>AttributedCharacterIterator</code>. - * Only attributes from the source iterator that are present in the - * specified array of attributes will be included in the attribute list - * for this object. - * - * @param aci The <code>AttributedCharacterIterator</code> containing the text and attribute information. - * @param begin_index The beginning index of the text subrange. - * @param end_index The ending index of the text subrange. - * @param attributes A list of attributes to include from the iterator, or <code>null</code> to include all attributes. - */ -public -AttributedString(AttributedCharacterIterator aci, int begin_index, - int end_index, AttributedCharacterIterator.Attribute[] attributes) -{ - // Validate some arguments - if ((begin_index < 0) || (end_index < begin_index)) - throw new IllegalArgumentException("Bad index values"); - - StringBuffer sb = new StringBuffer(""); - - // Get the valid attribute list - Set all_attribs = aci.getAllAttributeKeys(); - if (attributes != null) - all_attribs.retainAll(Arrays.asList(attributes)); - - // Loop through and extract the attributes - char c = aci.setIndex(begin_index); - - ArrayList accum = new ArrayList(); - do - { - sb.append(c); - - Iterator iter = all_attribs.iterator(); - while(iter.hasNext()) - { - Object obj = iter.next(); - - // What should we do if this is not true? - if (!(obj instanceof AttributedCharacterIterator.Attribute)) - continue; - - AttributedCharacterIterator.Attribute attrib = - (AttributedCharacterIterator.Attribute)obj; - - // Make sure the attribute is defined. - int rl = aci.getRunLimit(attrib); - if (rl == -1) - continue; - if (rl > end_index) - rl = end_index; - rl -= begin_index; - - // Check to see if we already processed this one - int rs = aci.getRunStart(attrib); - if ((rs < aci.getIndex()) && (aci.getIndex() != begin_index)) - continue; - - // If the attribute run starts before the beginning index, we - // need to junk it if it is an Annotation. - Object attrib_obj = aci.getAttribute(attrib); - if (rs < begin_index) - { - if (attrib_obj instanceof Annotation) - continue; - - rs = begin_index; - } - else - { - rs -= begin_index; - } - - // Create a map object. Yes this will only contain one attribute - Map new_map = new Hashtable(); - new_map.put(attrib, attrib_obj); - - // Add it to the attribute list. - accum.add(new AttributeRange(new_map, rs, rl)); - } - - c = aci.next(); + /** + * The attributes and ranges of text over which those attributes apply. + */ + final class AttributeRange + { + + /** A Map of the attributes */ + Map attribs; + + /** The beginning index of the attributes */ + int begin_index; + + /** The ending index of the attributes */ + int end_index; + + /** + * Creates a new attribute range. + * + * @param attribs the attributes. + * @param begin_index the start index. + * @param end_index the end index. + */ + AttributeRange(Map attribs, int begin_index, int end_index) + { + this.attribs = attribs; + this.begin_index = begin_index; + this.end_index = end_index; } - while(c != CharacterIterator.DONE); - - attribs = new AttributeRange[accum.size()]; - attribs = (AttributeRange[]) accum.toArray(attribs); - - sci = new StringCharacterIterator(sb.toString()); -} - -/*************************************************************************/ - -/* - * Instance Methods - */ - -/** - * This method adds a new attribute that will cover the entire string. - * - * @param attrib The attribute to add. - * @param value The value of the attribute. - */ -public void -addAttribute(AttributedCharacterIterator.Attribute attrib, Object value) -{ - addAttribute(attrib, value, 0, sci.getEndIndex()); -} - -/*************************************************************************/ - -/** - * This method adds a new attribute that will cover the specified subrange - * of the string. - * - * @param attrib The attribute to add. - * @param value The value of the attribute, which may be null. - * @param begin_index The beginning index of the subrange. - * @param end_index The ending index of the subrange. - * - * @exception IllegalArgumentException If attribute is <code>null</code> or the subrange is not valid. - */ -public void -addAttribute(AttributedCharacterIterator.Attribute attrib, Object value, - int begin_index, int end_index) -{ - if (attrib == null) - throw new IllegalArgumentException("null attribute"); - - HashMap hm = new HashMap(); - hm.put(attrib, value); - addAttributes(hm, begin_index, end_index); -} - -/*************************************************************************/ - -/** - * This method adds all of the attributes in the specified list to the - * specified subrange of the string. - * - * @param attributes The list of attributes. - * @param begin_index The beginning index. - * @param end_index The ending index - * - * @param IllegalArgumentException If the list is <code>null</code> or the subrange is not valid. - */ -public void -addAttributes(Map attributes, int begin_index, int end_index) -{ - if (attributes == null) - throw new IllegalArgumentException("null attribute"); - - if ((begin_index < 0) || (end_index > sci.getEndIndex()) || - (end_index < begin_index)) - throw new IllegalArgumentException("bad range"); - - AttributeRange[] new_list = new AttributeRange[attribs.length + 1]; - System.arraycopy(attribs, 0, new_list, 0, attribs.length); - attribs = new_list; - attribs[attribs.length - 1] = new AttributeRange(attributes, begin_index, - end_index); -} - -/*************************************************************************/ - -/** - * This method returns an <code>AttributedCharacterIterator</code> that - * will iterate over the entire string. - * - * @return An <code>AttributedCharacterIterator</code> for the entire string. - */ -public AttributedCharacterIterator -getIterator() -{ - return(new AttributedStringIterator(sci, attribs, 0, sci.getEndIndex(), null)); -} - -/*************************************************************************/ - -/** - * This method returns an <code>AttributedCharacterIterator</code> that - * will iterate over the entire string. This iterator will return information - * about the list of attributes in the specified array. Attributes not in - * the array may or may not be returned by the iterator. If the specified - * array is <code>null</code>, all attributes will be returned. - * - * @param attributes A list of attributes to include in the returned iterator. - * - * @return An <code>AttributedCharacterIterator</code> for this string. - */ -public AttributedCharacterIterator -getIterator(AttributedCharacterIterator.Attribute[] attributes) -{ - return(getIterator(attributes, 0, sci.getEndIndex())); -} - -/*************************************************************************/ - -/** - * This method returns an <code>AttributedCharacterIterator</code> that - * will iterate over the specified subrange. This iterator will return information - * about the list of attributes in the specified array. Attributes not in - * the array may or may not be returned by the iterator. If the specified - * array is <code>null</code>, all attributes will be returned. - * - * @param attributes A list of attributes to include in the returned iterator. - * @param begin_index The beginning index of the subrange. - * @param end_index The ending index of the subrange. - * - * @return An <code>AttributedCharacterIterator</code> for this string. - */ -public AttributedCharacterIterator -getIterator(AttributedCharacterIterator.Attribute[] attributes, - int begin_index, int end_index) -{ - if ((begin_index < 0) || (end_index > sci.getEndIndex()) || - (end_index < begin_index)) - throw new IllegalArgumentException("bad range"); - - return(new AttributedStringIterator(sci, attribs, begin_index, end_index, - attributes)); -} + } // Inner class AttributeRange + + /** The string we are representing. */ + private StringCharacterIterator sci; + + /** The attribute information */ + private AttributeRange[] attribs; + + /** + * Creates a new instance of <code>AttributedString</code> + * that represents the specified <code>String</code> with no attributes. + * + * @param str The <code>String</code> to be attributed (<code>null</code> not + * permitted). + * + * @throws NullPointerException if <code>str</code> is <code>null</code>. + */ + public AttributedString(String str) + { + sci = new StringCharacterIterator(str); + attribs = new AttributeRange[0]; + } + + /** + * Creates a new instance of <code>AttributedString</code> + * that represents that specified <code>String</code> with the specified + * attributes over the entire length of the <code>String</code>. + * + * @param str The <code>String</code> to be attributed. + * @param attributes The attribute list. + */ + public AttributedString(String str, Map attributes) + { + this(str); + + attribs = new AttributeRange[1]; + attribs[0] = new AttributeRange(attributes, 0, str.length()); + } + + /** + * Initializes a new instance of <code>AttributedString</code> + * that will use the text and attribute information from the specified + * <code>AttributedCharacterIterator</code>. + * + * @param aci The <code>AttributedCharacterIterator</code> containing the + * text and attribute information (<code>null</code> not + * permitted). + * + * @throws NullPointerException if <code>aci</code> is <code>null</code>. + */ + public AttributedString(AttributedCharacterIterator aci) + { + this(aci, aci.getBeginIndex(), aci.getEndIndex(), null); + } + + /** + * Initializes a new instance of <code>AttributedString</code> + * that will use the text and attribute information from the specified + * subrange of the specified <code>AttributedCharacterIterator</code>. + * + * @param aci The <code>AttributedCharacterIterator</code> containing the + * text and attribute information. + * @param begin_index The beginning index of the text subrange. + * @param end_index The ending index of the text subrange. + */ + public AttributedString(AttributedCharacterIterator aci, int begin_index, + int end_index) + { + this(aci, begin_index, end_index, null); + } + + /** + * Initializes a new instance of <code>AttributedString</code> + * that will use the text and attribute information from the specified + * subrange of the specified <code>AttributedCharacterIterator</code>. + * Only attributes from the source iterator that are present in the + * specified array of attributes will be included in the attribute list + * for this object. + * + * @param aci The <code>AttributedCharacterIterator</code> containing the + * text and attribute information. + * @param begin_index The beginning index of the text subrange. + * @param end_index The ending index of the text subrange. + * @param attributes A list of attributes to include from the iterator, or + * <code>null</code> to include all attributes. + */ + public AttributedString(AttributedCharacterIterator aci, int begin_index, + int end_index, AttributedCharacterIterator.Attribute[] attributes) + { + // Validate some arguments + if ((begin_index < 0) || (end_index < begin_index)) + throw new IllegalArgumentException("Bad index values"); + + StringBuffer sb = new StringBuffer(""); + + // Get the valid attribute list + Set all_attribs = aci.getAllAttributeKeys(); + if (attributes != null) + all_attribs.retainAll(Arrays.asList(attributes)); + + // Loop through and extract the attributes + char c = aci.setIndex(begin_index); + + ArrayList accum = new ArrayList(); + do + { + sb.append(c); + + Iterator iter = all_attribs.iterator(); + while(iter.hasNext()) + { + Object obj = iter.next(); + + // What should we do if this is not true? + if (!(obj instanceof AttributedCharacterIterator.Attribute)) + continue; + + AttributedCharacterIterator.Attribute attrib = + (AttributedCharacterIterator.Attribute)obj; + + // Make sure the attribute is defined. + int rl = aci.getRunLimit(attrib); + if (rl == -1) + continue; + if (rl > end_index) + rl = end_index; + rl -= begin_index; + + // Check to see if we already processed this one + int rs = aci.getRunStart(attrib); + if ((rs < aci.getIndex()) && (aci.getIndex() != begin_index)) + continue; + + // If the attribute run starts before the beginning index, we + // need to junk it if it is an Annotation. + Object attrib_obj = aci.getAttribute(attrib); + if (rs < begin_index) + { + if (attrib_obj instanceof Annotation) + continue; + + rs = begin_index; + } + else + { + rs -= begin_index; + } + + // Create a map object. Yes this will only contain one attribute + Map new_map = new Hashtable(); + new_map.put(attrib, attrib_obj); + + // Add it to the attribute list. + accum.add(new AttributeRange(new_map, rs, rl)); + } + + c = aci.next(); + } + while(c != CharacterIterator.DONE); + + attribs = new AttributeRange[accum.size()]; + attribs = (AttributeRange[]) accum.toArray(attribs); + + sci = new StringCharacterIterator(sb.toString()); + } + + /** + * Adds a new attribute that will cover the entire string. + * + * @param attrib The attribute to add. + * @param value The value of the attribute. + */ + public void addAttribute(AttributedCharacterIterator.Attribute attrib, + Object value) + { + addAttribute(attrib, value, 0, sci.getEndIndex()); + } + + /** + * Adds a new attribute that will cover the specified subrange + * of the string. + * + * @param attrib The attribute to add. + * @param value The value of the attribute, which may be <code>null</code>. + * @param begin_index The beginning index of the subrange. + * @param end_index The ending index of the subrange. + * + * @exception IllegalArgumentException If attribute is <code>null</code> or + * the subrange is not valid. + */ + public void addAttribute(AttributedCharacterIterator.Attribute attrib, + Object value, int begin_index, int end_index) + { + if (attrib == null) + throw new IllegalArgumentException("null attribute"); + + HashMap hm = new HashMap(); + hm.put(attrib, value); + + addAttributes(hm, begin_index, end_index); + } + + /** + * Adds all of the attributes in the specified list to the + * specified subrange of the string. + * + * @param attributes The list of attributes. + * @param begin_index The beginning index. + * @param end_index The ending index + * + * @throws IllegalArgumentException If the list is <code>null</code> or the + * subrange is not valid. + */ + public void addAttributes(Map attributes, int begin_index, int end_index) + { + if (attributes == null) + throw new IllegalArgumentException("null attribute"); + + if ((begin_index < 0) || (end_index > sci.getEndIndex()) || + (end_index < begin_index)) + throw new IllegalArgumentException("bad range"); + + AttributeRange[] new_list = new AttributeRange[attribs.length + 1]; + System.arraycopy(attribs, 0, new_list, 0, attribs.length); + attribs = new_list; + attribs[attribs.length - 1] = new AttributeRange(attributes, begin_index, + end_index); + } + + /** + * Returns an <code>AttributedCharacterIterator</code> that + * will iterate over the entire string. + * + * @return An <code>AttributedCharacterIterator</code> for the entire string. + */ + public AttributedCharacterIterator getIterator() + { + return(new AttributedStringIterator(sci, attribs, 0, sci.getEndIndex(), + null)); + } + + /** + * Returns an <code>AttributedCharacterIterator</code> that + * will iterate over the entire string. This iterator will return information + * about the list of attributes in the specified array. Attributes not in + * the array may or may not be returned by the iterator. If the specified + * array is <code>null</code>, all attributes will be returned. + * + * @param attributes A list of attributes to include in the returned iterator. + * + * @return An <code>AttributedCharacterIterator</code> for this string. + */ + public AttributedCharacterIterator getIterator( + AttributedCharacterIterator.Attribute[] attributes) + { + return(getIterator(attributes, 0, sci.getEndIndex())); + } + + /** + * Returns an <code>AttributedCharacterIterator</code> that + * will iterate over the specified subrange. This iterator will return + * information about the list of attributes in the specified array. + * Attributes not in the array may or may not be returned by the iterator. + * If the specified array is <code>null</code>, all attributes will be + * returned. + * + * @param attributes A list of attributes to include in the returned iterator. + * @param begin_index The beginning index of the subrange. + * @param end_index The ending index of the subrange. + * + * @return An <code>AttributedCharacterIterator</code> for this string. + */ + public AttributedCharacterIterator getIterator( + AttributedCharacterIterator.Attribute[] attributes, + int begin_index, int end_index) + { + if ((begin_index < 0) || (end_index > sci.getEndIndex()) || + (end_index < begin_index)) + throw new IllegalArgumentException("bad range"); + + return(new AttributedStringIterator(sci, attribs, begin_index, end_index, + attributes)); + } } // class AttributedString - diff --git a/libjava/classpath/java/text/AttributedStringIterator.java b/libjava/classpath/java/text/AttributedStringIterator.java index 7d7bf270cef..7fba5d63c3a 100644 --- a/libjava/classpath/java/text/AttributedStringIterator.java +++ b/libjava/classpath/java/text/AttributedStringIterator.java @@ -55,129 +55,102 @@ import java.util.Set; class AttributedStringIterator implements AttributedCharacterIterator { -/*************************************************************************/ - -/** - * Instance Variables - */ - -/** - * The character iterator containing the text - */ -private CharacterIterator ci; - -/** - * The list of attributes and ranges - */ -private AttributedString.AttributeRange[] attribs; - -/** - * The list of attributes that the user is interested in. We may, - * at our option, not return any other attributes. - */ -private AttributedCharacterIterator.Attribute[] restricts; - -/*************************************************************************/ - -/* - * Constructors - */ - -AttributedStringIterator(StringCharacterIterator sci, - AttributedString.AttributeRange[] attribs, - int begin_index, int end_index, - AttributedCharacterIterator.Attribute[] restricts) -{ - this.ci = new StringCharacterIterator(sci, begin_index, end_index); - this.attribs = attribs; - this.restricts = restricts; -} - -/*************************************************************************/ - -/* - * Instance Methods - */ - -// First we have a bunch of stupid redirects. If StringCharacterIterator -// weren't final, I just would have extended that for this class. Alas, no. - -public Object -clone() -{ - return(ci.clone()); -} - -public char -current() -{ - return(ci.current()); -} - -public char -next() -{ - return(ci.next()); -} - -public char -previous() -{ - return(ci.previous()); -} - -public char -first() -{ - return(ci.first()); -} - -public char -last() -{ - return(ci.last()); -} - -public int -getIndex() -{ - return(ci.getIndex()); -} - -public char -setIndex(int index) -{ - return(ci.setIndex(index)); -} - -public int -getBeginIndex() -{ - return(ci.getBeginIndex()); -} - -public int -getEndIndex() -{ - return(ci.getEndIndex()); -} - -/* - * Here is where the AttributedCharacterIterator methods start. - */ - -/*************************************************************************/ - -/** - * Returns a list of all the attribute keys that are defined anywhere - * on this string. - */ -public Set -getAllAttributeKeys() -{ - HashSet s = new HashSet(); - if (attribs == null) - return(s); + /*************************************************************************/ + + /** The character iterator containing the text */ + private CharacterIterator ci; + + /** The list of attributes and ranges */ + private AttributedString.AttributeRange[] attribs; + + /** + * The list of attributes that the user is interested in. We may, + * at our option, not return any other attributes. + */ + private AttributedCharacterIterator.Attribute[] restricts; + + /*************************************************************************/ + + AttributedStringIterator(StringCharacterIterator sci, + AttributedString.AttributeRange[] attribs, + int begin_index, int end_index, + AttributedCharacterIterator.Attribute[] restricts) + { + this.ci = new StringCharacterIterator(sci, begin_index, end_index); + this.attribs = attribs; + this.restricts = restricts; + } + + /*************************************************************************/ + + // First we have a bunch of stupid redirects. If StringCharacterIterator + // weren't final, I just would have extended that for this class. Alas, no. + + public Object clone() + { + return(ci.clone()); + } + + public char current() + { + return(ci.current()); + } + + public char next() + { + return(ci.next()); + } + + public char previous() + { + return(ci.previous()); + } + + public char first() + { + return(ci.first()); + } + + public char last() + { + return(ci.last()); + } + + public int getIndex() + { + return(ci.getIndex()); + } + + public char setIndex(int index) + { + return(ci.setIndex(index)); + } + + public int getBeginIndex() + { + return(ci.getBeginIndex()); + } + + public int getEndIndex() + { + return(ci.getEndIndex()); + } + + /* + * Here is where the AttributedCharacterIterator methods start. + */ + + /*************************************************************************/ + + /** + * Returns a list of all the attribute keys that are defined anywhere + * on this string. + */ + public Set getAllAttributeKeys() + { + HashSet s = new HashSet(); + if (attribs == null) + return(s); for (int i = 0; i < attribs.length; i++) { @@ -193,156 +166,146 @@ getAllAttributeKeys() } } - return(s); -} - -/*************************************************************************/ - -/** - * Various methods that determine how far the run extends for various - * attribute combinations. - */ - -public int -getRunLimit() -{ - return(getRunLimit(getAttributes().keySet())); -} - -public int -getRunLimit(AttributedCharacterIterator.Attribute attrib) -{ - HashSet s = new HashSet(); - s.add(attrib); - - return(getRunLimit(s)); -} - -public synchronized int -getRunLimit(Set attribute_set) -{ - boolean hit = false; - int runLimit = ci.getEndIndex (); - int pos = ci.getIndex (); - - for (int i = 0; i < attribs.length; ++i) - { - if (pos >= attribs[i].begin_index && - pos < attribs[i].end_index) - { - Iterator iter = attribute_set.iterator(); - while(iter.hasNext()) - if (attribs[i].attribs.containsKey(iter.next())) - { - hit = true; - runLimit = Math.min(runLimit, attribs[i].end_index); - } - } - } - if (hit) - return runLimit; - else - return ci.getEndIndex(); -} - -/*************************************************************************/ - -/** - * Various methods that determine where the run begins for various - * attribute combinations. - */ - -public int -getRunStart() -{ - return(getRunStart(getAttributes().keySet())); -} - -public int -getRunStart(AttributedCharacterIterator.Attribute attrib) -{ - HashSet s = new HashSet(); - s.add(attrib); - - return(getRunStart(s)); -} - -public int -getRunStart(Set attribute_set) -{ - boolean hit = false; - int runBegin = 0; - int pos = ci.getIndex (); - - for (int i = 0; i < attribs.length; ++i) - { - if (pos >= attribs[i].begin_index && - pos <= attribs[i].end_index) - { - Iterator iter = attribute_set.iterator(); - while(iter.hasNext()) - if (attribs[i].attribs.containsKey(iter.next())) - { - hit = true; - runBegin = Math.max(runBegin, attribs[i].begin_index); - } - } - } - if (hit) - return runBegin; - else - return -1; -} + return(s); + } + + /*************************************************************************/ + + /** + * Various methods that determine how far the run extends for various + * attribute combinations. + */ + + public int getRunLimit() + { + return(getRunLimit(getAttributes().keySet())); + } + + public int getRunLimit(AttributedCharacterIterator.Attribute attrib) + { + HashSet s = new HashSet(); + s.add(attrib); + return(getRunLimit(s)); + } + + public synchronized int getRunLimit(Set attribute_set) + { + boolean hit = false; + int runLimit = ci.getEndIndex (); + int pos = ci.getIndex (); + + for (int i = 0; i < attribs.length; ++i) + { + if (pos >= attribs[i].begin_index && + pos < attribs[i].end_index) + { + Iterator iter = attribute_set.iterator(); + while(iter.hasNext()) + if (attribs[i].attribs.containsKey(iter.next())) + { + hit = true; + runLimit = Math.min(runLimit, attribs[i].end_index); + } + } + } + if (hit) + return runLimit; + else + return ci.getEndIndex(); + } + + /*************************************************************************/ + + /** + * Various methods that determine where the run begins for various + * attribute combinations. + */ + + public int getRunStart() + { + return(getRunStart(getAttributes().keySet())); + } + + public int getRunStart(AttributedCharacterIterator.Attribute attrib) + { + HashSet s = new HashSet(); + s.add(attrib); + + return(getRunStart(s)); + } + + public int getRunStart(Set attribute_set) + { + boolean hit = false; + int runBegin = 0; + int pos = ci.getIndex(); + + for (int i = 0; i < attribs.length; ++i) + { + if (pos >= attribs[i].begin_index && + pos <= attribs[i].end_index) + { + Iterator iter = attribute_set.iterator(); + while(iter.hasNext()) + if (attribs[i].attribs.containsKey(iter.next())) + { + hit = true; + runBegin = Math.max(runBegin, attribs[i].begin_index); + } + } + } + if (hit) + return runBegin; + else + return -1; + } + + /*************************************************************************/ + + public Object getAttribute(AttributedCharacterIterator.Attribute attrib) + { + if (attribs == null) + return(null); -/*************************************************************************/ + for (int i = 0; i < attribs.length; i++) + { + Set key_set = attribs[i].attribs.keySet(); + Iterator iter = key_set.iterator(); + while (iter.hasNext()) + { + Object obj = iter.next(); + + // Check for attribute match and range match + if (obj.equals(attrib)) + if ((ci.getIndex() >= attribs[i].begin_index) && + (ci.getIndex() < attribs[i].end_index)) + return(attribs[i].attribs.get(obj)); + } + } -public Object -getAttribute(AttributedCharacterIterator.Attribute attrib) -{ - if (attribs == null) return(null); - - for (int i = 0; i < attribs.length; i++) - { - Set key_set = attribs[i].attribs.keySet(); - Iterator iter = key_set.iterator(); - while (iter.hasNext()) - { - Object obj = iter.next(); - - // Check for attribute match and range match - if (obj.equals(attrib)) - if ((ci.getIndex() >= attribs[i].begin_index) && - (ci.getIndex() < attribs[i].end_index)) - return(attribs[i].attribs.get(obj)); - } - } - - return(null); -} - -/*************************************************************************/ - -/** - * Return a list of all the attributes and values defined for this - * character - */ -public Map -getAttributes() -{ - HashMap m = new HashMap(); - if (attribs == null) - return(m); + } + + /*************************************************************************/ + + /** + * Return a list of all the attributes and values defined for this + * character + */ + public Map getAttributes() + { + HashMap m = new HashMap(); + if (attribs == null) + return(m); - for (int i = 0; i < attribs.length; i++) - { - if ((ci.getIndex() >= attribs[i].begin_index) && - (ci.getIndex() < attribs[i].end_index)) - m.putAll(attribs[i].attribs); - } + for (int i = 0; i < attribs.length; i++) + { + if ((ci.getIndex() >= attribs[i].begin_index) && + (ci.getIndex() < attribs[i].end_index)) + m.putAll(attribs[i].attribs); + } - return(m); -} + return(m); + } } // class AttributedStringIterator - diff --git a/libjava/classpath/java/text/BreakIterator.java b/libjava/classpath/java/text/BreakIterator.java index d021dceba73..7ba116870de 100644 --- a/libjava/classpath/java/text/BreakIterator.java +++ b/libjava/classpath/java/text/BreakIterator.java @@ -114,9 +114,9 @@ public abstract class BreakIterator implements Cloneable * This methdod returns the offset of the text element boundary following * the specified offset. * - * @param offset The text index from which to find the next text boundary. + * @param pos The text index from which to find the next text boundary. * - * @param The next text boundary following the specified index. + * @return The next text boundary following the specified index. */ public abstract int following (int pos); @@ -186,9 +186,9 @@ public abstract class BreakIterator implements Cloneable * * @return A <code>BreakIterator</code> instance for the default locale. */ - public static BreakIterator getCharacterInstance (Locale loc) + public static BreakIterator getCharacterInstance (Locale locale) { - BreakIterator r = getInstance ("CharacterIterator", loc); + BreakIterator r = getInstance ("CharacterIterator", locale); if (r == null) r = new gnu.java.text.CharacterBreakIterator (); return r; @@ -214,9 +214,9 @@ public abstract class BreakIterator implements Cloneable * * @return A <code>BreakIterator</code> instance for the default locale. */ - public static BreakIterator getLineInstance (Locale loc) + public static BreakIterator getLineInstance (Locale locale) { - BreakIterator r = getInstance ("LineIterator", loc); + BreakIterator r = getInstance ("LineIterator", locale); if (r == null) r = new gnu.java.text.LineBreakIterator (); return r; @@ -242,9 +242,9 @@ public abstract class BreakIterator implements Cloneable * * @return A <code>BreakIterator</code> instance for the default locale. */ - public static BreakIterator getSentenceInstance (Locale loc) + public static BreakIterator getSentenceInstance (Locale locale) { - BreakIterator r = getInstance ("SentenceIterator", loc); + BreakIterator r = getInstance ("SentenceIterator", locale); if (r == null) r = new gnu.java.text.SentenceBreakIterator (); return r; @@ -254,7 +254,7 @@ public abstract class BreakIterator implements Cloneable * This method returns the text this object is iterating over as a * <code>CharacterIterator</code>. * - * @param The text being iterated over. + * @return The text being iterated over. */ public abstract CharacterIterator getText (); @@ -278,9 +278,9 @@ public abstract class BreakIterator implements Cloneable * * @return A <code>BreakIterator</code> instance for the default locale. */ - public static BreakIterator getWordInstance (Locale loc) + public static BreakIterator getWordInstance (Locale locale) { - BreakIterator r = getInstance ("WordIterator", loc); + BreakIterator r = getInstance ("WordIterator", locale); if (r == null) r = new gnu.java.text.WordBreakIterator (); return r; @@ -290,7 +290,7 @@ public abstract class BreakIterator implements Cloneable * This method tests whether or not the specified position is a text * element boundary. * - * @param offset The text position to test. + * @param pos The text position to test. * * @return <code>true</code> if the position is a boundary, * <code>false</code> otherwise. @@ -332,8 +332,7 @@ public abstract class BreakIterator implements Cloneable * This methdod returns the offset of the text element boundary preceding * the specified offset. * - * @param offset The text index from which to find the preceding - * text boundary. + * @param pos The text index from which to find the preceding text boundary. * * @returns The next text boundary preceding the specified index. */ @@ -357,7 +356,7 @@ public abstract class BreakIterator implements Cloneable /** * This method sets the text string to iterate over. * - * @param str The <code>String</code> to iterate over. + * @param newText The <code>String</code> to iterate over. */ public void setText (String newText) { @@ -368,7 +367,7 @@ public abstract class BreakIterator implements Cloneable * This method sets the text to iterate over from the specified * <code>CharacterIterator</code>. * - * @param ci The desired <code>CharacterIterator</code>. + * @param newText The desired <code>CharacterIterator</code>. */ public abstract void setText (CharacterIterator newText); } diff --git a/libjava/classpath/java/text/CharacterIterator.java b/libjava/classpath/java/text/CharacterIterator.java index 6b3f951d1fb..58d6ddc3951 100644 --- a/libjava/classpath/java/text/CharacterIterator.java +++ b/libjava/classpath/java/text/CharacterIterator.java @@ -1,5 +1,5 @@ /* CharacterIterator.java -- Iterate over a character range - Copyright (C) 1998, 2001 Free Software Foundation, Inc. + Copyright (C) 1998, 2001, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -64,8 +64,8 @@ public interface CharacterIterator extends Cloneable /** * This method increments the current index and then returns the character - * at the new index value. If the index is already at <code>getEndIndex() - 1</code>, - * it will not be incremented. + * at the new index value. If the index is already at + * <code>getEndIndex() - 1</code>, it will not be incremented. * * @return The character at the position of the incremented index value, * or <code>DONE</code> if the index has reached getEndIndex() - 1 @@ -78,7 +78,8 @@ public interface CharacterIterator extends Cloneable * index, it will not be decremented. * * @return The character at the position of the decremented index value, - * or <code>DONE</code> if index was already equal to the beginning index value. + * or {@link #DONE} if index was already equal to the beginning index + * value. */ char previous(); @@ -86,7 +87,8 @@ public interface CharacterIterator extends Cloneable * This method sets the index value to the beginning of the range and returns * the character there. * - * @return The character at the beginning of the range, or <code>DONE</code> if the range is empty. + * @return The character at the beginning of the range, or {@link #DONE} if + * the range is empty. */ char first(); @@ -95,7 +97,8 @@ public interface CharacterIterator extends Cloneable * returns the character there. If the range is empty, then the index value * will be set equal to the beginning index. * - * @return The character at the end of the range, or <code>DONE</code> if the range is empty. + * @return The character at the end of the range, or {@link #DONE} if the + * range is empty. */ char last(); @@ -112,7 +115,8 @@ public interface CharacterIterator extends Cloneable * * @param index The new index value. * - * @return The character at the new index value or <code>DONE</code> if the index value is equal to <code>getEndIndex</code>. + * @return The character at the new index value or {@link #DONE} if the index + * value is equal to {@link #getEndIndex()}. */ char setIndex (int index) throws IllegalArgumentException; diff --git a/libjava/classpath/java/text/ChoiceFormat.java b/libjava/classpath/java/text/ChoiceFormat.java index 23c8a8c3af0..94c13a2ca0c 100644 --- a/libjava/classpath/java/text/ChoiceFormat.java +++ b/libjava/classpath/java/text/ChoiceFormat.java @@ -86,7 +86,7 @@ public class ChoiceFormat extends NumberFormat * object based on the specified pattern. This pattern is of the form * "term#string|term#string...". For example "1#Sunday|2#Monday|#Tuesday". * - * @param pattern The pattern of terminators and format strings. + * @param newPattern The pattern of terminators and format strings. * * @exception IllegalArgumentException If the pattern is not valid */ @@ -170,7 +170,7 @@ public class ChoiceFormat extends NumberFormat * This is the same pattern type used by the <code>applyPattern</code> * method. * - * @param pattern The pattern of terminators and format strings. + * @param newPattern The pattern of terminators and format strings. * * @exception IllegalArgumentException If the pattern is not valid */ @@ -229,10 +229,11 @@ public class ChoiceFormat extends NumberFormat * <code>StringBuffer</code> based on the supplied <code>long</code> * argument. * - * @param number The number used for determine (based on the range + * @param num The number used for determine (based on the range * terminators) which format string to append. - * @param sb The <code>StringBuffer</code> to append the format string to. - * @param status Unused. + * @param appendBuf The <code>StringBuffer</code> to append the format string + * to. + * @param pos Unused. * * @return The <code>StringBuffer</code> with the format string appended. */ @@ -247,10 +248,10 @@ public class ChoiceFormat extends NumberFormat * <code>StringBuffer</code> based on the supplied <code>double</code> * argument. * - * @param number The number used for determine (based on the range + * @param num The number used for determine (based on the range * terminators) which format string to append. - * @param sb The <code>StringBuffer</code> to append the format string to. - * @param status Unused. + * @param appendBuf The <code>StringBuffer</code> to append the format string to. + * @param pos Unused. * * @return The <code>StringBuffer</code> with the format string appended. */ @@ -333,7 +334,7 @@ public class ChoiceFormat extends NumberFormat * double less than the specified double will be returned. * * @param d The specified double - * @param positive <code>true</code> to return the next highest + * @param next <code>true</code> to return the next highest * double, <code>false</code> otherwise. * * @return The next highest or lowest double value. diff --git a/libjava/classpath/java/text/CollationElementIterator.java b/libjava/classpath/java/text/CollationElementIterator.java index 60b148ef7c1..45c79142cc7 100644 --- a/libjava/classpath/java/text/CollationElementIterator.java +++ b/libjava/classpath/java/text/CollationElementIterator.java @@ -177,9 +177,11 @@ public final class CollationElementIterator * This method returns the primary order value for the given collation * value. * - * @param value The collation value returned from <code>next()</code> or <code>previous()</code>. + * @param order The collation value returned from <code>next()</code> or + * <code>previous()</code>. * - * @return The primary order value of the specified collation value. This is the high 16 bits. + * @return The primary order value of the specified collation value. This is + * the high 16 bits. */ public static int primaryOrder(int order) { @@ -201,9 +203,11 @@ public final class CollationElementIterator * This method returns the secondary order value for the given collation * value. * - * @param value The collation value returned from <code>next()</code> or <code>previous()</code>. + * @param order The collation value returned from <code>next()</code> or + * <code>previous()</code>. * - * @return The secondary order value of the specified collation value. This is the bits 8-15. + * @return The secondary order value of the specified collation value. This + * is the bits 8-15. */ public static short secondaryOrder(int order) { @@ -215,9 +219,11 @@ public final class CollationElementIterator * This method returns the tertiary order value for the given collation * value. * - * @param value The collation value returned from <code>next()</code> or <code>previous()</code>. + * @param order The collation value returned from <code>next()</code> or + * <code>previous()</code>. * - * @return The tertiary order value of the specified collation value. This is the low eight bits. + * @return The tertiary order value of the specified collation value. This + * is the low eight bits. */ public static short tertiaryOrder(int order) { @@ -458,7 +464,7 @@ public final class CollationElementIterator * * @param value The collation order value * - * @param The maximum length of an expansion sequence. + * @return The maximum length of an expansion sequence. */ public int getMaxExpansion(int value) { diff --git a/libjava/classpath/java/text/CollationKey.java b/libjava/classpath/java/text/CollationKey.java index f7e3a2476de..a467869b881 100644 --- a/libjava/classpath/java/text/CollationKey.java +++ b/libjava/classpath/java/text/CollationKey.java @@ -38,6 +38,8 @@ exception statement from your version. */ package java.text; +import java.util.Arrays; + /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 from http://www.javasoft.com. * Status: Believed complete and correct. @@ -154,7 +156,7 @@ public final class CollationKey implements Comparable if (!ck.getSourceString ().equals (getSourceString ())) return false; - if (!ck.toByteArray ().equals (toByteArray ())) + if (! Arrays.equals (ck.toByteArray (), toByteArray ())) return false; return true; @@ -190,7 +192,7 @@ public final class CollationKey implements Comparable /** * This method returns the collation bit sequence as a byte array. * - * @param A byte array containing the collation bit sequence. + * @return A byte array containing the collation bit sequence. */ public byte[] toByteArray() { diff --git a/libjava/classpath/java/text/Collator.java b/libjava/classpath/java/text/Collator.java index 633bc672527..7dea83f0a5a 100644 --- a/libjava/classpath/java/text/Collator.java +++ b/libjava/classpath/java/text/Collator.java @@ -150,8 +150,8 @@ public abstract class Collator implements Comparator, Cloneable * <code>Collator</code> and the strength and decomposition rules in * effect. * - * @param str1 The first object to compare - * @param str2 The second object to compare + * @param source The first object to compare + * @param target The second object to compare * * @return A negative integer if str1 < str2, 0 if str1 == str2, or * a positive integer if str1 > str2. @@ -164,8 +164,8 @@ public abstract class Collator implements Comparator, Cloneable * equal to, or greater than the second argument. These two objects * must be <code>String</code>'s or an exception will be thrown. * - * @param obj1 The first object to compare - * @param obj2 The second object to compare + * @param o1 The first object to compare + * @param o2 The second object to compare * * @return A negative integer if obj1 < obj2, 0 if obj1 == obj2, or * a positive integer if obj1 > obj2. @@ -208,8 +208,8 @@ public abstract class Collator implements Comparator, Cloneable * according to the collation rules for the locale of this object and * the current strength and decomposition settings. * - * @param str1 The first <code>String</code> to compare - * @param str2 The second <code>String</code> to compare + * @param source The first <code>String</code> to compare + * @param target The second <code>String</code> to compare * * @return <code>true</code> if the two strings are equal, * <code>false</code> otherwise. @@ -256,7 +256,7 @@ public abstract class Collator implements Comparator, Cloneable * comparisons against a string might be performed multiple times, such * as during a sort operation. * - * @param str The <code>String</code> to convert. + * @param source The <code>String</code> to convert. * * @return A <code>CollationKey</code> for the specified <code>String</code>. */ @@ -292,7 +292,7 @@ public abstract class Collator implements Comparator, Cloneable * specified locale. If no <code>Collator</code> exists for the desired * locale, a <code>Collator</code> for the default locale will be returned. * - * @param locale The desired localed to load a <code>Collator</code> for. + * @param loc The desired localed to load a <code>Collator</code> for. * * @return A <code>Collator</code> for the requested locale */ @@ -347,7 +347,7 @@ public abstract class Collator implements Comparator, Cloneable * exception will be thrown. See the documentation for those * contants for an explanation of this setting. * - * @param decmp The new decomposition setting. + * @param mode The new decomposition setting. * * @exception IllegalArgumentException If the requested * decomposition setting is not valid. diff --git a/libjava/classpath/java/text/DateFormat.java b/libjava/classpath/java/text/DateFormat.java index f6dfceb14e8..5d412aada52 100644 --- a/libjava/classpath/java/text/DateFormat.java +++ b/libjava/classpath/java/text/DateFormat.java @@ -405,8 +405,18 @@ public abstract class DateFormat extends Format implements Cloneable * <ul> * <li>Is not <code>null</code>.</li> * <li>Is an instance of <code>DateFormat</code>.</li> - * <li>Has the same numberFormat field value as this object.</li> + * <li>Has equal numberFormat field as this object.</li> + * <li>Has equal (Calendar) TimeZone rules as this object.</li> + * <li>Has equal (Calendar) isLenient results.</li> + * <li>Has equal Calendar first day of week and minimal days in week + * values.</li> * </ul> + * Note that not all properties of the Calendar are relevant for a + * DateFormat. For formatting only the fact whether or not the + * TimeZone has the same rules and whether the calendar is lenient + * and has the same week rules is compared for this implementation + * of equals. Other properties of the Calendar (such as the time) + * are not taken into account. * * @param obj The object to test for equality against. * @@ -419,8 +429,24 @@ public abstract class DateFormat extends Format implements Cloneable return false; DateFormat d = (DateFormat) obj; - - return numberFormat.equals(d.numberFormat); + TimeZone tz = getTimeZone(); + TimeZone tzd = d.getTimeZone(); + if (tz.hasSameRules(tzd)) + if (isLenient() == d.isLenient()) + { + Calendar c = getCalendar(); + Calendar cd = d.getCalendar(); + if ((c == null && cd == null) + || + (c.getFirstDayOfWeek() == cd.getFirstDayOfWeek() + && + c.getMinimalDaysInFirstWeek() + == cd.getMinimalDaysInFirstWeek())) + return ((numberFormat == null && d.numberFormat == null) + || numberFormat.equals(d.numberFormat)); + } + + return false; } /** @@ -442,9 +468,9 @@ public abstract class DateFormat extends Format implements Cloneable * thrown. * * @param obj The <code>Object</code> to format. - * @param toAppendTo The <code>StringBuffer</code> to append the resultant + * @param buf The <code>StringBuffer</code> to append the resultant * <code>String</code> to. - * @param fieldPosition Is updated to the start and end index of the + * @param pos Is updated to the start and end index of the * specified field. * * @return The <code>StringBuffer</code> supplied on input, with the @@ -479,9 +505,9 @@ public abstract class DateFormat extends Format implements Cloneable * to the specified <code>StringBuffer</code>. * * @param date The <code>Date</code> value to format. - * @param toAppendTo The <code>StringBuffer</code> to append the resultant + * @param buf The <code>StringBuffer</code> to append the resultant * <code>String</code> to. - * @param fieldPosition Is updated to the start and end index of the + * @param pos Is updated to the start and end index of the * specified field. * * @return The <code>StringBuffer</code> supplied on input, with the @@ -643,7 +669,7 @@ public abstract class DateFormat extends Format implements Cloneable * localed will be used in place of the default. * * @param style The type of formatting to perform. - * @param aLocale The desired locale. + * @param loc The desired locale. * * @return A new <code>DateFormat</code> instance. */ @@ -744,7 +770,7 @@ public abstract class DateFormat extends Format implements Cloneable * localed will be used in place of the default. * * @param style The type of formatting to perform. - * @param aLocale The desired locale. + * @param loc The desired locale. * * @return A new <code>DateFormat</code> instance. */ @@ -818,7 +844,7 @@ public abstract class DateFormat extends Format implements Cloneable * starting parse position on method entry and the ending parse * position on method exit. * - * @param text The string to parse. + * @param source The string to parse. * @param pos The starting parse position in entry, the ending parse * position on exit. * @@ -848,7 +874,7 @@ public abstract class DateFormat extends Format implements Cloneable * This method specified the <code>Calendar</code> that should be used * by this object to parse/format datetimes. * - * @param The new <code>Calendar</code> for this object. + * @param calendar The new <code>Calendar</code> for this object. * * @see java.util.Calendar */ @@ -873,7 +899,7 @@ public abstract class DateFormat extends Format implements Cloneable * This method specifies the <code>NumberFormat</code> object that should * be used by this object to parse/format times. * - * @param The <code>NumberFormat</code> in use by this object. + * @param numberFormat The <code>NumberFormat</code> in use by this object. */ public void setNumberFormat (NumberFormat numberFormat) { @@ -883,7 +909,7 @@ public abstract class DateFormat extends Format implements Cloneable /** * This method sets the time zone that should be used by this object. * - * @param The new time zone. + * @param timeZone The new time zone. */ public void setTimeZone (TimeZone timeZone) { diff --git a/libjava/classpath/java/text/DateFormatSymbols.java b/libjava/classpath/java/text/DateFormatSymbols.java index 543a5c13a78..6a20b4c2a36 100644 --- a/libjava/classpath/java/text/DateFormatSymbols.java +++ b/libjava/classpath/java/text/DateFormatSymbols.java @@ -41,7 +41,6 @@ package java.text; import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; -import java.util.StringTokenizer; /** * This class acts as container for locale specific date/time formatting @@ -289,7 +288,7 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * This is a two element <code>String</code> array indexed by * <code>Calendar.AM</code> and <code>Calendar.PM</code> * - * @param ampms The new list of AM/PM display strings. + * @param value The new list of AM/PM display strings. */ public void setAmPmStrings (String[] value) { @@ -302,11 +301,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * This is a two element <code>String</code> * array indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>. * - * @param eras The new list of era disply strings. + * @param labels The new list of era display strings. */ - public void setEras (String[] value) + public void setEras (String[] labels) { - eras = value; + eras = labels; } /** @@ -340,11 +339,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * <li>17 - time zone (z)</li> * </ul> * - * @param localPatternChars The new format patter characters + * @param chars The new format pattern characters */ - public void setLocalPatternChars (String value) + public void setLocalPatternChars (String chars) { - localPatternChars = value; + localPatternChars = chars; } /** @@ -354,11 +353,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * <code>Calendar.UNDECEMBER</code>. Note that there are thirteen * elements because some calendars have thriteen months. * - * @param months The list of month display strings. + * @param labels The list of month display strings. */ - public void setMonths (String[] value) + public void setMonths (String[] labels) { - months = value; + months = labels; } /** @@ -369,11 +368,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * through <code>Calendar.UNDECEMBER</code>. Note that there are thirteen * elements because some calendars have thirteen months. * - * @param shortMonths The new list of abbreviated month display strings. + * @param labels The new list of abbreviated month display strings. */ - public void setShortMonths (String[] value) + public void setShortMonths (String[] labels) { - shortMonths = value; + shortMonths = labels; } /** @@ -384,11 +383,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * through <code>Calendar.SATURDAY</code>. Note that the first element * of this array is ignored. * - * @param shortWeekdays This list of abbreviated weekday display strings. + * @param labels This list of abbreviated weekday display strings. */ - public void setShortWeekdays (String[] value) + public void setShortWeekdays (String[] labels) { - shortWeekdays = value; + shortWeekdays = labels; } /** @@ -398,11 +397,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * through <code>Calendar.SATURDAY</code>. Note that the first element * of this array is ignored. * - * @param weekdays This list of weekday display strings. + * @param labels This list of weekday display strings. */ - public void setWeekdays (String[] value) + public void setWeekdays (String[] labels) { - weekdays = value; + weekdays = labels; } /** @@ -418,11 +417,11 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable * <li>4 - the short name of the time zone (daylight savings time).</li> * </ul> * - * @return The list of time zone display strings. + * @params zones The list of time zone display strings. */ - public void setZoneStrings (String[][] value) + public void setZoneStrings (String[][] zones) { - zoneStrings = value; + zoneStrings = zones; } /* Does a "deep" equality test - recurses into arrays. */ @@ -492,7 +491,7 @@ public class DateFormatSymbols implements java.io.Serializable, Cloneable /** * Returns a new copy of this object. * - * @param A copy of this object + * @return A copy of this object */ public Object clone () { diff --git a/libjava/classpath/java/text/DecimalFormatSymbols.java b/libjava/classpath/java/text/DecimalFormatSymbols.java index 81ea0017822..a8735d36171 100644 --- a/libjava/classpath/java/text/DecimalFormatSymbols.java +++ b/libjava/classpath/java/text/DecimalFormatSymbols.java @@ -139,7 +139,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable * locales (those with no specified country), such as * <code>Locale.ENGLISH</code>. * - * @param locale The local to load symbols for. + * @param loc The local to load symbols for. * @throws NullPointerException if the locale is null. */ public DecimalFormatSymbols (Locale loc) @@ -422,7 +422,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable /** * This method sets the currency symbol to the specified value. * - * @param currencySymbol The new currency symbol + * @param currency The new currency symbol */ public void setCurrencySymbol (String currency) { @@ -432,7 +432,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable /** * This method sets the decimal point character to the specified value. * - * @param decimalSeparator The new decimal point character + * @param decimalSep The new decimal point character */ public void setDecimalSeparator (char decimalSep) { @@ -464,7 +464,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable /** * This method sets the character used to separate groups of digits. * - * @param groupingSeparator The character used to separate groups of digits. + * @param groupSep The character used to separate groups of digits. */ public void setGroupingSeparator (char groupSep) { @@ -523,8 +523,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable * This method sets the character used for the decimal point in currency * values. * - * @param monetarySeparator The decimal point character used in - * currency values. + * @param decimalSep The decimal point character used in currency values. */ public void setMonetaryDecimalSeparator (char decimalSep) { @@ -535,7 +534,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable * This method sets the string used to represent the NaN (not a * number) value. * - * @param NaN The string used to represent NaN + * @param nan The string used to represent NaN */ public void setNaN (String nan) { @@ -546,7 +545,7 @@ public final class DecimalFormatSymbols implements Cloneable, Serializable * This method sets the character used to separate positive and negative * subpatterns in a format pattern. * - * @param patternSeparator The character used to separate positive and + * @param patternSep The character used to separate positive and * negative subpatterns in a format pattern. */ public void setPatternSeparator (char patternSep) diff --git a/libjava/classpath/java/text/MessageFormat.java b/libjava/classpath/java/text/MessageFormat.java index f7a9f1687a6..f59cfd5ca3e 100644 --- a/libjava/classpath/java/text/MessageFormat.java +++ b/libjava/classpath/java/text/MessageFormat.java @@ -334,7 +334,7 @@ public class MessageFormat extends Format /** * Applies the specified pattern to this MessageFormat. * - * @param aPattern The Pattern + * @param newPattern The Pattern */ public void applyPattern (String newPattern) { @@ -378,7 +378,6 @@ public class MessageFormat extends Format /** * A convinience method to format patterns. * - * @param aPattern The pattern used when formatting. * @param arguments The array containing the objects to be formatted. */ public AttributedCharacterIterator formatToCharacterIterator (Object arguments) @@ -394,7 +393,7 @@ public class MessageFormat extends Format /** * A convinience method to format patterns. * - * @param aPattern The pattern used when formatting. + * @param pattern The pattern used when formatting. * @param arguments The array containing the objects to be formatted. */ public static String format (String pattern, Object arguments[]) @@ -408,8 +407,8 @@ public class MessageFormat extends Format /** * Returns the pattern with the formatted objects. * - * @param source The array containing the objects to be formatted. - * @param result The StringBuffer where the text is appened. + * @param arguments The array containing the objects to be formatted. + * @param appendBuf The StringBuffer where the text is appened. * @param fp A FieldPosition object (it is ignored). */ public final StringBuffer format (Object arguments[], StringBuffer appendBuf, @@ -709,8 +708,8 @@ public class MessageFormat extends Format * Sets the format for the argument at an specified * index. * - * @param index The index. - * @format The Format object. + * @param variableNum The index. + * @param newFormat The Format object. */ public void setFormat (int variableNum, Format newFormat) { @@ -720,7 +719,7 @@ public class MessageFormat extends Format /** * Sets the formats for the arguments. * - * @param formats An array of Format objects. + * @param newFormats An array of Format objects. */ public void setFormats (Format[] newFormats) { @@ -735,7 +734,7 @@ public class MessageFormat extends Format /** * Sets the locale. * - * @param locale A Locale + * @param loc A Locale */ public void setLocale (Locale loc) { diff --git a/libjava/classpath/java/text/NumberFormat.java b/libjava/classpath/java/text/NumberFormat.java index a2c3997cc52..5fede9ee37a 100644 --- a/libjava/classpath/java/text/NumberFormat.java +++ b/libjava/classpath/java/text/NumberFormat.java @@ -237,7 +237,8 @@ public abstract class NumberFormat extends Format implements Cloneable * a <code>StringBuffer</code>. * * @param number The <code>double</code> to format. - * @param sb The <code>StringBuffer</code> to append the formatted number to. + * @param sbuf The <code>StringBuffer</code> to append the formatted number + * to. * @param pos The desired <code>FieldPosition</code>. * * @return The <code>StringBuffer</code> with the appended number. @@ -250,7 +251,8 @@ public abstract class NumberFormat extends Format implements Cloneable * a <code>StringBuffer</code>. * * @param number The <code>long</code> to format. - * @param sb The <code>StringBuffer</code> to append the formatted number to. + * @param sbuf The <code>StringBuffer</code> to append the formatted number + * to. * @param pos The desired <code>FieldPosition</code>. * * @return The <code>StringBuffer</code> with the appended number. @@ -371,7 +373,7 @@ public abstract class NumberFormat extends Format implements Cloneable * will be a concrete subclass of <code>NumberFormat</code>, but the * actual class returned is dependent on the locale. * - * @param locale The desired locale. + * @param loc The desired locale. * * @return An instance of the default <code>NumberFormat</code> class. */ @@ -434,8 +436,6 @@ public abstract class NumberFormat extends Format implements Cloneable * will be a concrete subclass of <code>NumberFormat</code>, but the * actual class returned is dependent on the locale. * - * @param locale The desired locale. - * * @return An instance of the default <code>NumberFormat</code> class. */ public static final NumberFormat getNumberInstance () @@ -502,7 +502,7 @@ public abstract class NumberFormat extends Format implements Cloneable * This method returns an instance of <code>NumberFormat</code> suitable * for formatting and parsing percentage values in the specified locale. * - * @param locale The desired locale. + * @param loc The desired locale. * * @return An instance of <code>NumberFormat</code> for handling percentages. */ @@ -571,8 +571,8 @@ public abstract class NumberFormat extends Format implements Cloneable * <code>Double</code>. If no number can be parsed, no exception is * thrown. Instead, the parse position remains at its initial index. * - * @param str The string to parse. - * @param pp The desired <code>ParsePosition</code>. + * @param sourceStr The string to parse. + * @param pos The desired <code>ParsePosition</code>. * * @return The parsed <code>Number</code> */ @@ -584,7 +584,7 @@ public abstract class NumberFormat extends Format implements Cloneable * <code>Double</code>. If no number can be parsed, an exception will be * thrown. * - * @param str The string to parse. + * @param sourceStr The string to parse. * * @return The parsed <code>Number</code> * @@ -610,8 +610,8 @@ public abstract class NumberFormat extends Format implements Cloneable * <code>Double</code>. If no number can be parsed, no exception is * thrown. Instead, the parse position remains at its initial index. * - * @param str The string to parse. - * @param pp The desired <code>ParsePosition</code>. + * @param sourceStr The string to parse. + * @param pos The desired <code>ParsePosition</code>. * * @return The parsed <code>Object</code> */ @@ -629,7 +629,7 @@ public abstract class NumberFormat extends Format implements Cloneable * might appear as "1,000,000". (Both of these assume the US English * locale). * - * @param groupingUsed <code>true</code> to enable grouping, + * @param newValue <code>true</code> to enable grouping, * <code>false</code> to disable it. */ public void setGroupingUsed (boolean newValue) @@ -643,11 +643,11 @@ public abstract class NumberFormat extends Format implements Cloneable * current minimum allowed digits, the minimum allowed digits value will * be lowered to be equal to the new maximum allowed digits value. * - * @param maximumFractionDigits The new maximum fraction digits value. + * @param digits The new maximum fraction digits value. */ - public void setMaximumFractionDigits (int newValue) + public void setMaximumFractionDigits (int digits) { - maximumFractionDigits = newValue; + maximumFractionDigits = digits; if (getMinimumFractionDigits () > maximumFractionDigits) setMinimumFractionDigits (maximumFractionDigits); } @@ -658,11 +658,11 @@ public abstract class NumberFormat extends Format implements Cloneable * current minimum allowed digits, the minimum allowed digits value will * be lowered to be equal to the new maximum allowed digits value. * - * @param maximumIntegerDigits The new maximum integer digits value. + * @param digits The new maximum integer digits value. */ - public void setMaximumIntegerDigits (int newValue) + public void setMaximumIntegerDigits (int digits) { - maximumIntegerDigits = newValue; + maximumIntegerDigits = digits; if (getMinimumIntegerDigits () > maximumIntegerDigits) setMinimumIntegerDigits (maximumIntegerDigits); } @@ -673,11 +673,11 @@ public abstract class NumberFormat extends Format implements Cloneable * current maximum allowed digits, the maximum allowed digits value will * be raised to be equal to the new minimum allowed digits value. * - * @param minimumFractionDigits The new minimum fraction digits value. + * @param digits The new minimum fraction digits value. */ - public void setMinimumFractionDigits (int newValue) + public void setMinimumFractionDigits (int digits) { - minimumFractionDigits = newValue; + minimumFractionDigits = digits; if (getMaximumFractionDigits () < minimumFractionDigits) setMaximumFractionDigits (minimumFractionDigits); } @@ -688,11 +688,11 @@ public abstract class NumberFormat extends Format implements Cloneable * current maximum allowed digits, the maximum allowed digits value will * be raised to be equal to the new minimum allowed digits value. * - * @param minimumIntegerDigits The new minimum integer digits value. + * @param digits The new minimum integer digits value. */ - public void setMinimumIntegerDigits (int newValue) + public void setMinimumIntegerDigits (int digits) { - minimumIntegerDigits = newValue; + minimumIntegerDigits = digits; if (getMaximumIntegerDigits () < minimumIntegerDigits) setMaximumIntegerDigits (minimumIntegerDigits); } @@ -701,7 +701,7 @@ public abstract class NumberFormat extends Format implements Cloneable * This method sets the parsing behavior of this object to parse only * integers or not. * - * @param parseIntegerOnly <code>true</code> to parse only integers, + * @param value <code>true</code> to parse only integers, * <code>false</code> otherwise. */ public void setParseIntegerOnly (boolean value) diff --git a/libjava/classpath/java/text/ParseException.java b/libjava/classpath/java/text/ParseException.java index 6d014effd2a..4c7ad81e7de 100644 --- a/libjava/classpath/java/text/ParseException.java +++ b/libjava/classpath/java/text/ParseException.java @@ -65,7 +65,7 @@ public class ParseException extends Exception * This method initializes a new instance of <code>ParseException</code> * with a detailed error message and a error position. * - * @param msg the descriptive message describing the error + * @param s the descriptive message describing the error * @param offset the position where the error was encountered */ public ParseException(String s, int offset) diff --git a/libjava/classpath/java/text/SimpleDateFormat.java b/libjava/classpath/java/text/SimpleDateFormat.java index 789cb83d86d..c0c4cf68cea 100644 --- a/libjava/classpath/java/text/SimpleDateFormat.java +++ b/libjava/classpath/java/text/SimpleDateFormat.java @@ -180,8 +180,8 @@ public class SimpleDateFormat extends DateFormat * years to be interpreted as representing * the years between 2004 and 2104. * - * @see get2DigitYearStart() - * @see set2DigitYearStart(java.util.Date) + * @see #get2DigitYearStart() + * @see #set2DigitYearStart(java.util.Date) * @see Date * @serial The start date of the century for parsing two digit years. * May not be null. @@ -192,8 +192,8 @@ public class SimpleDateFormat extends DateFormat * The year at which interpretation of two * digit years starts. * - * @see get2DigitYearStart() - * @see set2DigitYearStart(java.util.Date) + * @see #get2DigitYearStart() + * @see #set2DigitYearStart(java.util.Date) * @serial Ignored. */ private transient int defaultCentury; @@ -204,10 +204,10 @@ public class SimpleDateFormat extends DateFormat * stored in standardChars. Localized patterns * are translated to this form. * - * @see applyPattern(String) - * @see applyLocalizedPattern(String) - * @see toPattern() - * @see toLocalizedPattern() + * @see #applyPattern(String) + * @see #applyLocalizedPattern(String) + * @see #toPattern() + * @see #toLocalizedPattern() * @serial The non-localized pattern string. May not be null. */ private String pattern; @@ -294,44 +294,73 @@ public class SimpleDateFormat extends DateFormat int field; CompiledField current = null; - for (int i=0; i<pattern.length(); i++) { - thisChar = pattern.charAt(i); - field = standardChars.indexOf(thisChar); - if (field == -1) { - current = null; - if ((thisChar >= 'A' && thisChar <= 'Z') - || (thisChar >= 'a' && thisChar <= 'z')) { - // Not a valid letter - throw new IllegalArgumentException("Invalid letter " + thisChar + - "encountered at character " + i - + "."); - } else if (thisChar == '\'') { - // Quoted text section; skip to next single quote - pos = pattern.indexOf('\'',i+1); - if (pos == -1) { - throw new IllegalArgumentException("Quotes starting at character " - + i + " not closed."); + for (int i = 0; i < pattern.length(); i++) + { + thisChar = pattern.charAt(i); + field = standardChars.indexOf(thisChar); + if (field == -1) + { + current = null; + if ((thisChar >= 'A' && thisChar <= 'Z') + || (thisChar >= 'a' && thisChar <= 'z')) + { + // Not a valid letter + throw new IllegalArgumentException("Invalid letter " + + thisChar + + "encountered at character " + + i + "."); + } + else if (thisChar == '\'') + { + // Quoted text section; skip to next single quote + pos = pattern.indexOf('\'', i + 1); + // First look for '' -- meaning a single quote. + if (pos == i + 1) + tokens.add("'"); + else + { + // Look for the terminating quote. However, if we + // see a '', that represents a literal quote and + // we must iterate. + StringBuffer buf = new StringBuffer(); + int oldPos = i + 1; + do + { + if (pos == -1) + throw new IllegalArgumentException("Quotes starting at character " + + i + + " not closed."); + buf.append(pattern.substring(oldPos, pos)); + if (pos + 1 >= pattern.length() + || pattern.charAt(pos + 1) != '\'') + break; + buf.append('\''); + oldPos = pos + 2; + pos = pattern.indexOf('\'', pos + 2); + } + while (true); + tokens.add(buf.toString()); + } + i = pos; + } + else + { + // A special character + tokens.add(new Character(thisChar)); + } } - if ((pos+1 < pattern.length()) && (pattern.charAt(pos+1) == '\'')) { - tokens.add(pattern.substring(i+1,pos+1)); - } else { - tokens.add(pattern.substring(i+1,pos)); + else + { + // A valid field + if ((current != null) && (field == current.field)) + current.size++; + else + { + current = new CompiledField(field, 1, thisChar); + tokens.add(current); + } } - i = pos; - } else { - // A special character - tokens.add(new Character(thisChar)); - } - } else { - // A valid field - if ((current != null) && (field == current.field)) { - current.size++; - } else { - current = new CompiledField(field,1,thisChar); - tokens.add(current); - } } - } } /** @@ -611,7 +640,7 @@ public class SimpleDateFormat extends DateFormat * <li>Is using the same century for two digit years.</li> * </ul> * - * @param obj The object to compare for equality against. + * @param o The object to compare for equality against. * * @return <code>true</code> if the specified object is equal to this object, * <code>false</code> otherwise. diff --git a/libjava/classpath/java/text/StringCharacterIterator.java b/libjava/classpath/java/text/StringCharacterIterator.java index e3adc857e51..e2674881333 100644 --- a/libjava/classpath/java/text/StringCharacterIterator.java +++ b/libjava/classpath/java/text/StringCharacterIterator.java @@ -76,7 +76,10 @@ public final class StringCharacterIterator implements CharacterIterator * text of the specified <code>String</code>. The initial index * value will be set to the first character in the string. * - * @param text The <code>String</code> to iterate through. + * @param text The <code>String</code> to iterate through (<code>null</code> + * not permitted). + * + * @throws NullPointerException if <code>text</code> is <code>null</code>. */ public StringCharacterIterator (String text) { @@ -113,7 +116,7 @@ public final class StringCharacterIterator implements CharacterIterator * @param end The ending position in the character range. * @param index The initial index position. * - * @param IllegalArgumentException If any of the range values are + * @throws IllegalArgumentException If any of the range values are * invalid. */ public StringCharacterIterator (String text, int begin, int end, int index) |