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 74 extends InputStream 75 { 76 /** Source string, stored as a StringReader */ 77 private StringReader in; 78 79 /** 80 * Composes a stream from a String 81 * 82 * @param source The string to read from. Must not be <code>null</code>. 83 */ 84 public StringInputStream( String source ) 85 { 86 in = new StringReader( source ); 87 } 88 89 /** 90 * Reads from the Stringreader, returning the same value. Note that data will be lost for characters not in ISO 91 * Latin 1. Clients assuming a return value in the range -1 to 255 may even fail on such input. 92 * 93 * @return the value of the next character in the StringReader 94 * @exception IOException if the original StringReader fails to be read 95 */ 96 @Override 97 public int read() 98 throws IOException 99 { 100 return in.read(); 101 } 102 103 /** 104 * Closes the Stringreader. 105 * 106 * @exception IOException if the original StringReader fails to be closed 107 */ 108 @Override 109 public void close() 110 throws IOException 111 { 112 in.close(); 113 } 114 115 /** 116 * Marks the read limit of the StringReader. 117 * 118 * @param limit the maximum limit of bytes that can be read before the mark position becomes invalid 119 */ 120 @Override 121 public synchronized void mark( final int limit ) 122 { 123 try 124 { 125 in.mark( limit ); 126 } 127 catch ( IOException ioe ) 128 { 129 throw new RuntimeException( ioe.getMessage() ); 130 } 131 } 132 133 /** 134 * Resets the StringReader. 135 * 136 * @exception IOException if the StringReader fails to be reset 137 */ 138 @Override 139 public synchronized void reset() 140 throws IOException 141 { 142 in.reset(); 143 } 144 145 /** 146 * @see InputStream#markSupported 147 */ 148 @Override 149 public boolean markSupported() 150 { 151 return in.markSupported(); 152 } 153 }