package com.ronsoft.books.nio.charset; import java.nio.charset.Charset; import java.nio.charset.spi.CharsetProvider; import java.util.Set; import java.util.HashSet; import java.util.Iterator; /** * A CharsetProvider class which makes available the charsets * provided by Ronsoft. Currently there is only one, namely the X-ROT13 * charset. This is not a registered IANA charset, so it's * name begins with "X-" to avoid name clashes with offical charsets. * * To activate this CharsetProvider, it's necessary to add a file to * the classpath of the JVM runtime at the following location: * META-INF/services/java.nio.charsets.spi.CharsetProvider * * That file must contain a line with the fully qualified name of * this class on a line by itself: * com.ronsoft.books.nio.charset.RonsoftCharsetProvider * * See the javadoc page for java.nio.charsets.spi.CharsetProvider * for full details. * * @author Ron Hitchens (ron@ronsoft.com) * @version $Id: RonsoftCharsetProvider.java,v 1.6 2002/05/20 07:24:31 ron Exp $ * Created: January, 2002 */ public class RonsoftCharsetProvider extends CharsetProvider { // The name of the charset we provide private static final String CHARSET_NAME = "X-ROT13"; // A handle to the Charset object private Charset rot13 = null; /** * Constructor, instantiate a Charset object and save the reference. */ public RonsoftCharsetProvider() { this.rot13 = new Rot13Charset (CHARSET_NAME, new String [0]); } /** * Called by Charset static methods to find a particular named * Charset. If it's the name of this charset (we don't have * any aliases) then return the Rot13 Charset, else return null. */ public Charset charsetForName (String charsetName) { if (charsetName.equalsIgnoreCase (CHARSET_NAME)) { return (rot13); } return (null); } /** * Return an Iterator over the set of Charset objects we provide. * @return An Iterator object containing references to all the * Charset objects provided by this class. */ public Iterator charsets() { HashSet set = new HashSet (1); set.add (rot13); return (set.iterator()); } }