### Eclipse Workspace Patch 1.0
#P lucene_trunk
Index: src/java/org/apache/lucene/analysis/MappingCharFilter.java
===================================================================
--- src/java/org/apache/lucene/analysis/MappingCharFilter.java	(revision 789393)
+++ src/java/org/apache/lucene/analysis/MappingCharFilter.java	(working copy)
@@ -49,7 +49,7 @@
       int firstChar = nextChar();
       if (firstChar == -1) return -1;
       NormalizeCharMap nm = normMap.submap != null ?
-        (NormalizeCharMap)normMap.submap.get(Character.valueOf((char) firstChar)) : null;
+        (NormalizeCharMap)normMap.submap.get(CharacterCache.valueOf((char) firstChar)) : null;
       if (nm == null) return firstChar;
       NormalizeCharMap result = match(nm);
       if (result == null) return firstChar;
@@ -94,7 +94,7 @@
     if (map.submap != null) {
       int chr = nextChar();
       if (chr != -1) {
-        NormalizeCharMap subMap = (NormalizeCharMap) map.submap.get(Character.valueOf((char) chr));
+        NormalizeCharMap subMap = (NormalizeCharMap) map.submap.get(CharacterCache.valueOf((char) chr));
         if (subMap != null) {
           result = match(subMap);
         }
Index: src/test/org/apache/lucene/analysis/TestCharacterCache.java
===================================================================
--- src/test/org/apache/lucene/analysis/TestCharacterCache.java	(revision 0)
+++ src/test/org/apache/lucene/analysis/TestCharacterCache.java	(revision 0)
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.lucene.analysis;
+
+import junit.framework.TestCase;
+/**
+ * Testcase for {@link CharacterCache}
+ */
+public class TestCharacterCache extends TestCase {
+
+  public void testValueOf() {
+    for (int i = 0; i < 256; i++) {
+      Character valueOf = CharacterCache.valueOf((char)i);
+      assertEquals((char)i, valueOf.charValue());
+    }
+
+
+  }
+
+}
Index: src/java/org/apache/lucene/analysis/NormalizeCharMap.java
===================================================================
--- src/java/org/apache/lucene/analysis/NormalizeCharMap.java	(revision 789393)
+++ src/java/org/apache/lucene/analysis/NormalizeCharMap.java	(working copy)
@@ -39,7 +39,7 @@
       if (currMap.submap == null) {
         currMap.submap = new HashMap(1);
       }
-      NormalizeCharMap map = (NormalizeCharMap) currMap.submap.get(Character.valueOf(c));
+      NormalizeCharMap map = (NormalizeCharMap) currMap.submap.get(CharacterCache.valueOf(c));
       if (map == null) {
         map = new NormalizeCharMap();
         currMap.submap.put(new Character(c), map);
Index: src/test/org/apache/lucene/analysis/BaseTokenTestCase.java
===================================================================
--- src/test/org/apache/lucene/analysis/BaseTokenTestCase.java	(revision 789387)
+++ src/test/org/apache/lucene/analysis/BaseTokenTestCase.java	(working copy)
@@ -27,7 +27,7 @@
 
 public abstract class BaseTokenTestCase extends LuceneTestCase {
   public static String tsToString(TokenStream in) throws IOException {
-    StringBuilder out = new StringBuilder();
+    StringBuffer out = new StringBuffer();
     Token t = in.next();
     if (null != t)
       out.append(new String(t.termBuffer(), 0, t.termLength()));
Index: src/java/org/apache/lucene/analysis/CharacterCache.java
===================================================================
--- src/java/org/apache/lucene/analysis/CharacterCache.java	(revision 0)
+++ src/java/org/apache/lucene/analysis/CharacterCache.java	(revision 0)
@@ -0,0 +1,46 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.lucene.analysis;
+
+/**
+ * Replacement for Java 1.5 Character.valueOf()
+ */
+class CharacterCache {
+
+  private static final Character cache[] = new Character[128];
+
+  static {
+    for (int i = 0; i < cache.length; i++) {
+      cache[i] = new Character((char) i);
+    }
+  }
+
+  /**
+   * Returns a Character instance representing the given char value
+   * 
+   * @param c
+   *          a char value
+   * @return a Charater representation of the given char value.
+   */
+  public static Character valueOf(char c) {
+    if (c <= 127) {
+      return cache[(int) c];
+    }
+    return new Character(c);
+  }
+}
