| package org.apache.maven.shared.utils; |
| |
| /* |
| * 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. |
| */ |
| |
| import java.io.File; |
| import java.io.FileInputStream; |
| import java.io.FileNotFoundException; |
| import java.io.FileReader; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.InputStreamReader; |
| import java.io.Reader; |
| import java.io.UnsupportedEncodingException; |
| import java.net.URL; |
| import org.apache.commons.io.input.XmlStreamReader; |
| |
| import javax.annotation.Nonnull; |
| |
| |
| /** |
| * Utility to create Readers from streams, with explicit encoding choice: platform default, |
| * XML, or specified. |
| * |
| * @author <a href="mailto:hboutemy@apache.org">Hervé Boutemy</a> |
| * @see java.nio.charset.Charset |
| * @see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html">Supported encodings</a> |
| */ |
| public class ReaderFactory |
| { |
| /** |
| * ISO Latin Alphabet #1, also known as ISO-LATIN-1. |
| * Every implementation of the Java platform is required to support this character encoding. |
| * |
| * @see java.nio.charset.Charset |
| */ |
| public static final String ISO_8859_1 = "ISO-8859-1"; |
| |
| /** |
| * Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. |
| * Every implementation of the Java platform is required to support this character encoding. |
| * |
| * @see java.nio.charset.Charset |
| */ |
| public static final String US_ASCII = "US-ASCII"; |
| |
| /** |
| * Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either |
| * order accepted on input, big-endian used on output). |
| * Every implementation of the Java platform is required to support this character encoding. |
| * |
| * @see java.nio.charset.Charset |
| */ |
| public static final String UTF_16 = "UTF-16"; |
| |
| /** |
| * Sixteen-bit Unicode Transformation Format, big-endian byte order. |
| * Every implementation of the Java platform is required to support this character encoding. |
| * |
| * @see java.nio.charset.Charset |
| */ |
| public static final String UTF_16BE = "UTF-16BE"; |
| |
| /** |
| * Sixteen-bit Unicode Transformation Format, little-endian byte order. |
| * Every implementation of the Java platform is required to support this character encoding. |
| * |
| * @see java.nio.charset.Charset |
| */ |
| public static final String UTF_16LE = "UTF-16LE"; |
| |
| /** |
| * Eight-bit Unicode Transformation Format. |
| * Every implementation of the Java platform is required to support this character encoding. |
| * |
| * @see java.nio.charset.Charset |
| */ |
| public static final String UTF_8 = "UTF-8"; |
| |
| /** |
| * The <code>file.encoding</code> System Property. |
| */ |
| public static final String FILE_ENCODING = System.getProperty( "file.encoding" ); |
| |
| /** |
| * Create a new Reader with XML encoding detection rules. |
| * |
| * @param in not null input stream. |
| * @return an XML reader instance for the input stream. |
| * @throws IOException if any. |
| * @see XmlStreamReader |
| */ |
| public static Reader newXmlReader( @Nonnull InputStream in ) |
| throws IOException |
| { |
| return new XmlStreamReader( in ); |
| } |
| |
| /** |
| * Create a new Reader with XML encoding detection rules. |
| * |
| * @param file not null file. |
| * @return an XML reader instance for the input file. |
| * @throws IOException if any. |
| * @see XmlStreamReader |
| */ |
| public static Reader newXmlReader( @Nonnull File file ) |
| throws IOException |
| { |
| return new XmlStreamReader( file ); |
| } |
| |
| /** |
| * Create a new Reader with XML encoding detection rules. |
| * |
| * @param url not null url. |
| * @return an XML reader instance for the input url. |
| * @throws IOException if any. |
| * @see XmlStreamReader |
| */ |
| public static Reader newXmlReader( @Nonnull URL url ) |
| throws IOException |
| { |
| return new XmlStreamReader( url ); |
| } |
| |
| /** |
| * Create a new Reader with default plaform encoding. |
| * |
| * @param file not null file. |
| * @return a reader instance for the input file using the default platform charset. |
| * @throws FileNotFoundException if any. |
| * @see java.nio.charset.Charset#defaultCharset() |
| */ |
| public static Reader newPlatformReader( @Nonnull File file ) |
| throws FileNotFoundException |
| { |
| return new FileReader( file ); |
| } |
| |
| /** |
| * Create a new Reader with specified encoding. |
| * |
| * @param in not null input stream. |
| * @param encoding not null supported encoding. |
| * @return a reader instance for the input stream using the given encoding. |
| * @throws UnsupportedEncodingException if any. |
| * @see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html">Supported encodings</a> |
| */ |
| public static Reader newReader( @Nonnull InputStream in, @Nonnull String encoding ) |
| throws UnsupportedEncodingException |
| { |
| return new InputStreamReader( in, encoding ); |
| } |
| |
| /** |
| * Create a new Reader with specified encoding. |
| * |
| * @param file not null file. |
| * @param encoding not null supported encoding. |
| * @return a reader instance for the input file using the given encoding. |
| * @throws FileNotFoundException if any. |
| * @throws UnsupportedEncodingException if any. |
| * @see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html">Supported encodings</a> |
| */ |
| public static Reader newReader( @Nonnull File file, @Nonnull String encoding ) |
| throws FileNotFoundException, UnsupportedEncodingException |
| { |
| return new InputStreamReader( new FileInputStream( file ), encoding ); |
| } |
| |
| /** |
| * Create a new Reader with specified encoding. |
| * |
| * @param url not null url. |
| * @param encoding not null supported encoding. |
| * @return a reader instance for the input url using the given encoding. |
| * @throws IOException if any. |
| * @see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html">Supported encodings</a> |
| */ |
| public static Reader newReader( @Nonnull URL url, @Nonnull String encoding ) |
| throws IOException |
| { |
| return new InputStreamReader( url.openStream(), encoding ); |
| } |
| } |