001    /**
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    package org.apache.geronimo.kernel.classloader;
018    
019    import java.io.ByteArrayOutputStream;
020    import java.io.IOException;
021    import java.io.InputStream;
022    import java.io.OutputStream;
023    import java.io.Reader;
024    import java.io.Writer;
025    import java.util.jar.JarFile;
026    
027    /**
028     * @version $Rev: 476457 $ $Date: 2006-11-18 01:49:20 -0500 (Sat, 18 Nov 2006) $
029     */
030    public final class IoUtil {
031        private IoUtil() {
032        }
033    
034        public static byte[] getBytes(InputStream inputStream) throws IOException {
035            try {
036                byte[] buffer = new byte[4096];
037                ByteArrayOutputStream out = new ByteArrayOutputStream();
038                for (int count = inputStream.read(buffer); count >= 0; count = inputStream.read(buffer)) {
039                    out.write(buffer, 0, count);
040                }
041                byte[] bytes = out.toByteArray();
042                return bytes;
043            } finally {
044                close(inputStream);
045            }
046        }
047    
048        public static void flush(OutputStream thing) {
049            if (thing != null) {
050                try {
051                    thing.flush();
052                } catch(Exception ignored) {
053                }
054            }
055        }
056    
057        public static void flush(Writer thing) {
058            if (thing != null) {
059                try {
060                    thing.flush();
061                } catch(Exception ignored) {
062                }
063            }
064        }
065    
066        public static void close(JarFile thing) {
067            if (thing != null) {
068                try {
069                    thing.close();
070                } catch(Exception ignored) {
071                }
072            }
073        }
074    
075        public static void close(InputStream thing) {
076            if (thing != null) {
077                try {
078                    thing.close();
079                } catch(Exception ignored) {
080                }
081            }
082        }
083    
084        public static void close(OutputStream thing) {
085            if (thing != null) {
086                try {
087                    thing.close();
088                } catch(Exception ignored) {
089                }
090            }
091        }
092    
093        public static void close(Reader thing) {
094            if (thing != null) {
095                try {
096                    thing.close();
097                } catch(Exception ignored) {
098                }
099            }
100        }
101    
102        public static void close(Writer thing) {
103            if (thing != null) {
104                try {
105                    thing.close();
106                } catch(Exception ignored) {
107                }
108            }
109        }
110    
111        public static final class EmptyInputStream extends InputStream {
112            public int read() {
113                return -1;
114            }
115    
116            public int read(byte b[])  {
117                return -1;
118            }
119    
120            public int read(byte b[], int off, int len) {
121                return -1;
122            }
123    
124            public long skip(long n) {
125                return 0;
126            }
127    
128            public int available() {
129                return 0;
130            }
131    
132            public void close() {
133            }
134    
135            public synchronized void mark(int readlimit) {
136            }
137    
138            public synchronized void reset() {
139            }
140    
141            public boolean markSupported() {
142                return false;
143            }
144        }
145    }