This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[BC] Patch: FYI: break iterator fix for eclipse


I'm checking this in on the BC branch and the trunk.

This patch lets the Java editor in Eclipse 3 work properly.  The
editor code was relying on an undocumented part of BreakIterator,
namely that the newly-constructed iterators won't cause exceptions if
they are used before setText is called.

I documented this in BreakIterator and I've added a Mauve test.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>

	* gnu/java/text/WordBreakIterator.java (WordBreakIterator): Don't
	initialize `iter'.
	* gnu/java/text/SentenceBreakIterator.java
	(SentenceBreakIterator): Don't initialize `iter'.
	* gnu/java/text/LineBreakIterator.java (LineBreakIterator): Don't
	initialize `iter'.
	* gnu/java/text/CharacterBreakIterator.java
	(CharacterBreakIterator): Don't initialize `iter'.
	* gnu/java/text/BaseBreakIterator.java (BaseBreakIterator): New
	constructor.
	* java/text/BreakIterator.java: Updated documentation.

Index: java/text/BreakIterator.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/text/BreakIterator.java,v
retrieving revision 1.7.24.1
diff -u -r1.7.24.1 BreakIterator.java
--- java/text/BreakIterator.java 12 Oct 2004 14:53:14 -0000 1.7.24.1
+++ java/text/BreakIterator.java 25 Oct 2004 16:44:02 -0000
@@ -1,5 +1,5 @@
 /* BreakIterator.java -- Breaks text into elements
-   Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2001, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -49,6 +49,10 @@
  * type is created by calling one of the static factory methods, not
  * by directly calling a constructor.
  *
+ * The standard iterators created by the factory methods in this
+ * class will be valid upon creation.  That is, their methods will
+ * not cause exceptions if called before you call setText().
+ *
  * @author Tom Tromey <tromey@cygnus.com>
  * @author Aaron M. Renn (arenn@urbanophile.com)
  * @date March 19, 1999
Index: gnu/java/text/BaseBreakIterator.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/text/BaseBreakIterator.java,v
retrieving revision 1.2
diff -u -r1.2 BaseBreakIterator.java
--- gnu/java/text/BaseBreakIterator.java 22 Jan 2002 22:40:02 -0000 1.2
+++ gnu/java/text/BaseBreakIterator.java 25 Oct 2004 16:44:03 -0000
@@ -1,5 +1,5 @@
 /* BaseBreakIterator.java -- Base class for default BreakIterators
-   Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -40,6 +40,7 @@
 
 import java.text.BreakIterator;
 import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
 
 /**
  * @author Tom Tromey <tromey@cygnus.com>
@@ -48,6 +49,14 @@
 
 public abstract class BaseBreakIterator extends BreakIterator
 {
+  public BaseBreakIterator ()
+  {
+    // It isn't documented, but break iterators are created in a
+    // working state; their methods won't throw exceptions before
+    // setText().
+    iter = new StringCharacterIterator("");
+  }
+
   public int current ()
   {
     return iter.getIndex();
Index: gnu/java/text/CharacterBreakIterator.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/text/CharacterBreakIterator.java,v
retrieving revision 1.2.82.1
diff -u -r1.2.82.1 CharacterBreakIterator.java
--- gnu/java/text/CharacterBreakIterator.java 20 May 2004 23:33:53 -0000 1.2.82.1
+++ gnu/java/text/CharacterBreakIterator.java 25 Oct 2004 16:44:03 -0000
@@ -1,5 +1,5 @@
 /* CharacterBreakIterator.java - Default character BreakIterator.
-   Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -69,7 +69,6 @@
 
   public CharacterBreakIterator ()
   {
-    iter = null;		// FIXME?
   }
 
   private CharacterBreakIterator (CharacterBreakIterator other)
Index: gnu/java/text/LineBreakIterator.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/text/LineBreakIterator.java,v
retrieving revision 1.2.82.1
diff -u -r1.2.82.1 LineBreakIterator.java
--- gnu/java/text/LineBreakIterator.java 20 May 2004 23:33:53 -0000 1.2.82.1
+++ gnu/java/text/LineBreakIterator.java 25 Oct 2004 16:44:03 -0000
@@ -1,5 +1,5 @@
 /* LineBreakIterator.java - Default word BreakIterator.
-   Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -55,7 +55,6 @@
 
   public LineBreakIterator ()
   {
-    iter = null;
   }
 
   private LineBreakIterator (LineBreakIterator other)
Index: gnu/java/text/SentenceBreakIterator.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/text/SentenceBreakIterator.java,v
retrieving revision 1.3.66.1
diff -u -r1.3.66.1 SentenceBreakIterator.java
--- gnu/java/text/SentenceBreakIterator.java 20 May 2004 23:33:53 -0000 1.3.66.1
+++ gnu/java/text/SentenceBreakIterator.java 25 Oct 2004 16:44:03 -0000
@@ -1,5 +1,5 @@
 /* SentenceBreakIterator.java - Default sentence BreakIterator.
-   Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2001, 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -55,7 +55,6 @@
 
   public SentenceBreakIterator ()
   {
-    iter = null;
   }
 
   private SentenceBreakIterator (SentenceBreakIterator other)
Index: gnu/java/text/WordBreakIterator.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/text/WordBreakIterator.java,v
retrieving revision 1.2.82.1
diff -u -r1.2.82.1 WordBreakIterator.java
--- gnu/java/text/WordBreakIterator.java 20 May 2004 23:33:53 -0000 1.2.82.1
+++ gnu/java/text/WordBreakIterator.java 25 Oct 2004 16:44:05 -0000
@@ -1,5 +1,5 @@
 /* WordBreakIterator.java - Default word BreakIterator.
-   Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -55,7 +55,6 @@
 
   public WordBreakIterator ()
   {
-    iter = null;
   }
 
   private WordBreakIterator (WordBreakIterator other)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]