1 package org.codehaus.plexus.util; 2 3 /* ==================================================================== 4 * The Apache Software License, Version 1.1 5 * 6 * Copyright (c) 2001 The Apache Software Foundation. All rights 7 * reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in 18 * the documentation and/or other materials provided with the 19 * distribution. 20 * 21 * 3. The end-user documentation included with the redistribution, 22 * if any, must include the following acknowledgment: 23 * "This product includes software developed by the 24 * Apache Software Foundation (http://www.codehaus.org/)." 25 * Alternately, this acknowledgment may appear in the software itself, 26 * if and wherever such third-party acknowledgments normally appear. 27 * 28 * 4. The names "Apache" and "Apache Software Foundation" and 29 * "Apache MavenSession" must not be used to endorse or promote products 30 * derived from this software without prior written permission. For 31 * written permission, please contact codehaus@codehaus.org. 32 * 33 * 5. Products derived from this software may not be called "Apache", 34 * "Apache MavenSession", nor may "Apache" appear in their name, without 35 * prior written permission of the Apache Software Foundation. 36 * 37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 48 * SUCH DAMAGE. 49 * ==================================================================== 50 * 51 * This software consists of voluntary contributions made by many 52 * individuals on behalf of the Apache Software Foundation. For more 53 * information on the Apache Software Foundation, please see 54 * <http://www.codehaus.org/>. 55 * 56 * ==================================================================== 57 */ 58 59 import java.io.IOException; 60 import java.io.InputStream; 61 import java.io.StringReader; 62 63 /** 64 * Wraps a String as an InputStream. Note that data will be lost for characters not in ISO Latin 1, as a simple 65 * char->byte mapping is assumed. 66 * 67 * @author <a href="mailto:umagesh@codehaus.org">Magesh Umasankar</a> 68 * @deprecated As of version 1.5.2 this class should no longer be used because it does not properly handle character 69 * encoding. Instead, wrap the output from {@link String#getBytes(String)} into a 70 * {@link java.io.ByteArrayInputStream}. 71 */ 72 @Deprecated 73 public class StringInputStream extends InputStream { 74 /** Source string, stored as a StringReader */ 75 private StringReader in; 76 77 /** 78 * Composes a stream from a String 79 * 80 * @param source The string to read from. Must not be <code>null</code>. 81 */ 82 public StringInputStream(String source) { 83 in = new StringReader(source); 84 } 85 86 /** 87 * Reads from the Stringreader, returning the same value. Note that data will be lost for characters not in ISO 88 * Latin 1. Clients assuming a return value in the range -1 to 255 may even fail on such input. 89 * 90 * @return the value of the next character in the StringReader 91 * @exception IOException if the original StringReader fails to be read 92 */ 93 @Override 94 public int read() throws IOException { 95 return in.read(); 96 } 97 98 /** 99 * Closes the Stringreader. 100 * 101 * @exception IOException if the original StringReader fails to be closed 102 */ 103 @Override 104 public void close() throws IOException { 105 in.close(); 106 } 107 108 /** 109 * Marks the read limit of the StringReader. 110 * 111 * @param limit the maximum limit of bytes that can be read before the mark position becomes invalid 112 */ 113 @Override 114 public synchronized void mark(final int limit) { 115 try { 116 in.mark(limit); 117 } catch (IOException ioe) { 118 throw new RuntimeException(ioe.getMessage()); 119 } 120 } 121 122 /** 123 * Resets the StringReader. 124 * 125 * @exception IOException if the StringReader fails to be reset 126 */ 127 @Override 128 public synchronized void reset() throws IOException { 129 in.reset(); 130 } 131 132 /** 133 * @see InputStream#markSupported 134 */ 135 @Override 136 public boolean markSupported() { 137 return in.markSupported(); 138 } 139 }