This adds two new 1.6 methods that allow property files
to not use ISO-8859-1 so Unicode characters can be used literally.
ChangeLog:
2008-07-06 Andrew John Hughes <[EMAIL PROTECTED]>
* java/util/Properties.java:
(load(Reader)): Implemented.
(load(InputStream)): Fixed to use load(Reader).
* java/util/PropertyResourceBundle.java:
(PropertyResourceBundle(Reader)): Implemented.
--
Andrew :)
Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8
Index: java/util/Properties.java
===================================================================
RCS file: /sources/classpath/classpath/java/util/Properties.java,v
retrieving revision 1.38
diff -u -u -r1.38 Properties.java
--- java/util/Properties.java 16 Mar 2008 22:44:41 -0000 1.38
+++ java/util/Properties.java 6 Jul 2008 00:32:14 -0000
@@ -48,6 +48,7 @@
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
+import java.io.Reader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
@@ -157,7 +158,7 @@
}
/**
- * Reads a property list from an input stream. The stream should
+ * Reads a property list from a character stream. The stream should
* have the following format: <br>
*
* An empty line or a line starting with <code>#</code> or
@@ -189,15 +190,14 @@
# The safest way to include a space at the end of a value:
label = Name:\\u0020</pre>
*
- * @param inStream the input stream
+ * @param inReader the input [EMAIL PROTECTED] java.io.Reader}.
* @throws IOException if an error occurred when reading the input
* @throws NullPointerException if in is null
+ * @since 1.6
*/
- public void load(InputStream inStream) throws IOException
+ public void load(Reader inReader) throws IOException
{
- // The spec says that the file must be encoded using ISO-8859-1.
- BufferedReader reader =
- new BufferedReader(new InputStreamReader(inStream, "ISO-8859-1"));
+ BufferedReader reader = new BufferedReader(inReader);
String line;
while ((line = reader.readLine()) != null)
@@ -363,6 +363,24 @@
}
/**
+ * Reads a property list from the supplied input stream.
+ * This method has the same functionality as [EMAIL PROTECTED] #load(Reader)}
+ * but the character encoding is assumed to be ISO-8859-1.
+ * Unicode characters not within the Latin1 set supplied by
+ * ISO-8859-1 should be escaped using '\\uXXXX' where XXXX
+ * is the UTF-16 code unit in hexadecimal.
+ *
+ * @param inStream the byte stream to read the property list from.
+ * @throws IOException if an I/O error occurs.
+ * @see #load(Reader)
+ * @since 1.2
+ */
+ public void load(InputStream inStream) throws IOException
+ {
+ load(new InputStreamReader(inStream, "ISO-8859-1"));
+ }
+
+ /**
* Calls <code>store(OutputStream out, String header)</code> and
* ignores the IOException that may be thrown.
*
Index: java/util/PropertyResourceBundle.java
===================================================================
RCS file: /sources/classpath/classpath/java/util/PropertyResourceBundle.java,v
retrieving revision 1.17
diff -u -u -r1.17 PropertyResourceBundle.java
--- java/util/PropertyResourceBundle.java 10 Dec 2006 20:25:46 -0000
1.17
+++ java/util/PropertyResourceBundle.java 6 Jul 2008 00:32:14 -0000
@@ -40,6 +40,7 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.Reader;
/**
* This class is a concrete <code>ResourceBundle</code> that gets it
@@ -97,7 +98,8 @@
private Properties properties;
/**
- * Creates a new property resource bundle.
+ * Creates a new property resource bundle. The property file must
+ * be encoded using ISO-8859-1.
*
* @param stream an input stream, where the resources are read from
* @throws NullPointerException if stream is null
@@ -110,6 +112,21 @@
}
/**
+ * Creates a new property resource bundle. The encoding of the property
+ * file is determined by the supplied [EMAIL PROTECTED] Reader} object.
+ *
+ * @param reader an input stream, where the resources are read from
+ * @throws NullPointerException if stream is null
+ * @throws IOException if reading the stream fails
+ * @since 1.6
+ */
+ public PropertyResourceBundle(Reader reader) throws IOException
+ {
+ properties = new Properties();
+ properties.load(reader);
+ }
+
+ /**
* Called by <code>getObject</code> when a resource is needed. This
* returns the resource given by the key.
*