Skip to content

Commit

Permalink
CAMEL-4687: Wrap streams in buffer when appropiate. Added @OverRide. …
Browse files Browse the repository at this point in the history
…Thanks to Babak for the patch. Fixed CS.

git-svn-id: https://svn.apache.org/repos/asf/camel/trunk@1212504 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
davsclaus committed Dec 9, 2011
1 parent 779004f commit 2b91341
Show file tree
Hide file tree
Showing 36 changed files with 256 additions and 165 deletions.
Expand Up @@ -16,7 +16,6 @@
*/
package org.apache.camel.component.file;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
Expand All @@ -28,6 +27,7 @@
import org.apache.camel.FallbackConverter;
import org.apache.camel.TypeConverter;
import org.apache.camel.spi.TypeConverterRegistry;
import org.apache.camel.util.IOHelper;

/**
* A set of converter methods for working with generic file types
Expand Down Expand Up @@ -68,7 +68,7 @@ public static InputStream genericFileToInputStream(GenericFile<?> file, Exchange
if (exchange != null) {
// use a file input stream if its a java.io.File
if (file.getFile() instanceof java.io.File) {
return new BufferedInputStream(new FileInputStream((File) file.getFile()));
return IOHelper.buffered(new FileInputStream((File) file.getFile()));
}
// otherwise ensure the body is loaded as we want the input stream of the body
file.getBinding().loadContent(exchange, file);
Expand Down
Expand Up @@ -123,10 +123,9 @@ public static <K, V> HashMap<K, V> toHashMap(Map<? extends K, ? extends V> map)
* Converts an {@link Iterable} into a {@link List}
*/
@Converter
@SuppressWarnings("unchecked")
public static <T> List<T> toList(Iterable<T> iterable) {
if (iterable instanceof List) {
return (List) iterable;
return (List<T>) iterable;
}
List<T> result = new LinkedList<T>();
for (T value : iterable) {
Expand Down
Expand Up @@ -16,8 +16,6 @@
*/
package org.apache.camel.converter;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
Expand Down Expand Up @@ -66,12 +64,12 @@ private IOConverter() {

@Converter
public static InputStream toInputStream(URL url) throws IOException {
return url.openStream();
return IOHelper.buffered(url.openStream());
}

@Converter
public static InputStream toInputStream(File file) throws IOException {
return new BufferedInputStream(new FileInputStream(file));
return IOHelper.buffered(new FileInputStream(file));
}

/**
Expand All @@ -84,7 +82,7 @@ public static BufferedReader toReader(File file) throws IOException {

@Converter
public static BufferedReader toReader(File file, Exchange exchange) throws IOException {
return new BufferedReader(new EncodingFileReader(file, IOHelper.getCharsetName(exchange)));
return IOHelper.buffered(new EncodingFileReader(file, IOHelper.getCharsetName(exchange)));
}

@Converter
Expand All @@ -94,7 +92,7 @@ public static File toFile(String name) throws FileNotFoundException {

@Converter
public static OutputStream toOutputStream(File file) throws FileNotFoundException {
return new BufferedOutputStream(new FileOutputStream(file));
return IOHelper.buffered(new FileOutputStream(file));
}

/**
Expand All @@ -107,7 +105,7 @@ public static BufferedWriter toWriter(File file) throws IOException {

@Converter
public static BufferedWriter toWriter(File file, Exchange exchange) throws IOException {
return new BufferedWriter(new EncodingFileWriter(file, IOHelper.getCharsetName(exchange)));
return IOHelper.buffered(new EncodingFileWriter(file, IOHelper.getCharsetName(exchange)));
}

/**
Expand All @@ -120,7 +118,7 @@ public static Reader toReader(InputStream in) throws IOException {

@Converter
public static Reader toReader(InputStream in, Exchange exchange) throws IOException {
return new InputStreamReader(in, IOHelper.getCharsetName(exchange));
return IOHelper.buffered(new InputStreamReader(in, IOHelper.getCharsetName(exchange)));
}

/**
Expand All @@ -133,11 +131,13 @@ public static Writer toWriter(OutputStream out) throws IOException {

@Converter
public static Writer toWriter(OutputStream out, Exchange exchange) throws IOException {
return new OutputStreamWriter(out, IOHelper.getCharsetName(exchange));
return IOHelper.buffered(new OutputStreamWriter(out, IOHelper.getCharsetName(exchange)));
}

@Converter
public static StringReader toReader(String text) {
// no buffering required as the complete string input is already passed
// over as a whole
return new StringReader(text);
}

Expand Down Expand Up @@ -213,11 +213,7 @@ public static byte[] toByteArray(Reader reader) throws IOException {

@Converter
public static byte[] toByteArray(Reader reader, Exchange exchange) throws IOException {
if (reader instanceof BufferedReader) {
return toByteArray((BufferedReader)reader, exchange);
} else {
return toByteArray(new BufferedReader(reader), exchange);
}
return toByteArray(IOHelper.buffered(reader), exchange);
}

/**
Expand All @@ -240,11 +236,7 @@ public static String toString(URL url, Exchange exchange) throws IOException {

@Converter
public static String toString(Reader reader) throws IOException {
if (reader instanceof BufferedReader) {
return toString((BufferedReader)reader);
} else {
return toString(new BufferedReader(reader));
}
return toString(IOHelper.buffered(reader));
}

@Converter
Expand All @@ -256,13 +248,10 @@ public static String toString(BufferedReader reader) throws IOException {
StringBuilder sb = new StringBuilder(1024);
char[] buf = new char[1024];
try {
int len = 0;
int len;
// read until we reach then end which is the -1 marker
while (len != -1) {
len = reader.read(buf);
if (len != -1) {
sb.append(buf, 0, len);
}
while ((len = reader.read(buf)) != -1) {
sb.append(buf, 0, len);
}
} finally {
IOHelper.close(reader, "reader", LOG);
Expand Down Expand Up @@ -312,6 +301,8 @@ public static String toString(InputStream in, Exchange exchange) throws IOExcept

@Converter
public static InputStream toInputStream(byte[] data) {
// no buffering required as the complete byte input is already passed
// over as a whole
return new ByteArrayInputStream(data);
}

Expand All @@ -320,7 +311,7 @@ public static ObjectOutput toObjectOutput(OutputStream stream) throws IOExceptio
if (stream instanceof ObjectOutput) {
return (ObjectOutput) stream;
} else {
return new ObjectOutputStream(stream);
return new ObjectOutputStream(IOHelper.buffered(stream));
}
}

Expand All @@ -329,19 +320,18 @@ public static ObjectInput toObjectInput(InputStream stream) throws IOException {
if (stream instanceof ObjectInput) {
return (ObjectInput) stream;
} else {
return new ObjectInputStream(stream);
return new ObjectInputStream(IOHelper.buffered(stream));
}
}

@Converter
public static byte[] toBytes(InputStream stream) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
IOHelper.copy(stream, bos);
return bos.toByteArray();
} finally {
IOHelper.close(bos, "stream", LOG);
}
IOHelper.copy(IOHelper.buffered(stream), bos);

// no need to close the ByteArrayOutputStream as it's close()
// implementation is noop
return bos.toByteArray();
}

@Converter
Expand All @@ -364,6 +354,8 @@ public static String toString(ByteArrayOutputStream os, Exchange exchange) throw

@Converter
public static InputStream toInputStream(ByteArrayOutputStream os) {
// no buffering required as the complete byte array input is already
// passed over as a whole
return new ByteArrayInputStream(os.toByteArray());
}

Expand Down
Expand Up @@ -16,7 +16,6 @@
*/
package org.apache.camel.converter;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
Expand Down Expand Up @@ -66,7 +65,7 @@ public static ByteBuffer toByteBuffer(File file) throws IOException {
InputStream in = null;
try {
byte[] buf = new byte[(int)file.length()];
in = new BufferedInputStream(new FileInputStream(file));
in = IOHelper.buffered(new FileInputStream(file));
int sizeLeft = (int)file.length();
int offset = 0;
while (sizeLeft > 0) {
Expand Down
Expand Up @@ -66,9 +66,8 @@ public static Boolean toBoolean(Object value) {
/**
* Creates an iterator over the value
*/
@SuppressWarnings("rawtypes")
@Converter
public static Iterator iterator(Object value) {
public static Iterator<?> iterator(Object value) {
return ObjectHelper.createIterator(value);
}

Expand Down Expand Up @@ -112,11 +111,10 @@ public static String fromCharArray(char[] value) {
/**
* Returns the converted value, or null if the value is null
*/
@SuppressWarnings("rawtypes")
@Converter
public static Class toClass(Object value, Exchange exchange) {
public static Class<?> toClass(Object value, Exchange exchange) {
if (value instanceof Class) {
return (Class) value;
return (Class<?>) value;
} else if (value instanceof String) {
// prefer to use class resolver API
if (exchange != null) {
Expand Down
Expand Up @@ -104,11 +104,10 @@ public Long toLong(NodeList nodeList) {
return Long.valueOf(s);
}

@SuppressWarnings("unchecked")
@Converter
public static List toList(NodeList nodeList) {
List answer = new ArrayList();
Iterator it = ObjectHelper.createIterator(nodeList);
public static List<?> toList(NodeList nodeList) {
List<Object> answer = new ArrayList<Object>();
Iterator<Object> it = ObjectHelper.createIterator(nodeList);
while (it.hasNext()) {
answer.add(it.next());
}
Expand Down
Expand Up @@ -16,7 +16,6 @@
*/
package org.apache.camel.converter.jaxp;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
Expand Down Expand Up @@ -51,12 +50,12 @@ public class StaxConverter {

@Converter
public XMLEventWriter createXMLEventWriter(OutputStream out, Exchange exchange) throws XMLStreamException {
return getOutputFactory().createXMLEventWriter(out, IOHelper.getCharsetName(exchange));
return getOutputFactory().createXMLEventWriter(IOHelper.buffered(out), IOHelper.getCharsetName(exchange));
}

@Converter
public XMLEventWriter createXMLEventWriter(Writer writer) throws XMLStreamException {
return getOutputFactory().createXMLEventWriter(writer);
return getOutputFactory().createXMLEventWriter(IOHelper.buffered(writer));
}

@Converter
Expand All @@ -66,12 +65,12 @@ public XMLEventWriter createXMLEventWriter(Result result) throws XMLStreamExcept

@Converter
public XMLStreamWriter createXMLStreamWriter(OutputStream outputStream, Exchange exchange) throws XMLStreamException {
return getOutputFactory().createXMLStreamWriter(outputStream, IOHelper.getCharsetName(exchange));
return getOutputFactory().createXMLStreamWriter(IOHelper.buffered(outputStream), IOHelper.getCharsetName(exchange));
}

@Converter
public XMLStreamWriter createXMLStreamWriter(Writer writer) throws XMLStreamException {
return getOutputFactory().createXMLStreamWriter(writer);
return getOutputFactory().createXMLStreamWriter(IOHelper.buffered(writer));
}

@Converter
Expand All @@ -84,23 +83,22 @@ public XMLStreamWriter createXMLStreamWriter(Result result) throws XMLStreamExce
*/
@Deprecated
public XMLStreamReader createXMLStreamReader(InputStream in) throws XMLStreamException {
return getInputFactory().createXMLStreamReader(in);
return getInputFactory().createXMLStreamReader(IOHelper.buffered(in));
}

@Converter
public XMLStreamReader createXMLStreamReader(InputStream in, Exchange exchange) throws XMLStreamException {
return getInputFactory().createXMLStreamReader(in, IOHelper.getCharsetName(exchange));
return getInputFactory().createXMLStreamReader(IOHelper.buffered(in), IOHelper.getCharsetName(exchange));
}

@Converter
public XMLStreamReader createXMLStreamReader(File file, Exchange exchange) throws XMLStreamException, FileNotFoundException {
InputStream is = new BufferedInputStream(new FileInputStream(file));
return getInputFactory().createXMLStreamReader(is, IOHelper.getCharsetName(exchange));
return getInputFactory().createXMLStreamReader(IOHelper.buffered(new FileInputStream(file)), IOHelper.getCharsetName(exchange));
}

@Converter
public XMLStreamReader createXMLStreamReader(Reader in) throws XMLStreamException {
return getInputFactory().createXMLStreamReader(in);
public XMLStreamReader createXMLStreamReader(Reader reader) throws XMLStreamException {
return getInputFactory().createXMLStreamReader(IOHelper.buffered(reader));
}

@Converter
Expand All @@ -113,28 +111,27 @@ public XMLStreamReader createXMLStreamReader(Source in) throws XMLStreamExceptio
*/
@Deprecated
public XMLEventReader createXMLEventReader(InputStream in) throws XMLStreamException {
return getInputFactory().createXMLEventReader(in);
return getInputFactory().createXMLEventReader(IOHelper.buffered(in));
}

@Converter
public XMLEventReader createXMLEventReader(InputStream in, Exchange exchange) throws XMLStreamException {
return getInputFactory().createXMLEventReader(in, IOHelper.getCharsetName(exchange));
return getInputFactory().createXMLEventReader(IOHelper.buffered(in), IOHelper.getCharsetName(exchange));
}

@Converter
public XMLEventReader createXMLEventReader(File file, Exchange exchange) throws XMLStreamException, FileNotFoundException {
InputStream is = new BufferedInputStream(new FileInputStream(file));
return getInputFactory().createXMLEventReader(is, IOHelper.getCharsetName(exchange));
return getInputFactory().createXMLEventReader(IOHelper.buffered(new FileInputStream(file)), IOHelper.getCharsetName(exchange));
}

@Converter
public XMLEventReader createXMLEventReader(Reader in) throws XMLStreamException {
return getInputFactory().createXMLEventReader(in);
public XMLEventReader createXMLEventReader(Reader reader) throws XMLStreamException {
return getInputFactory().createXMLEventReader(IOHelper.buffered(reader));
}

@Converter
public XMLEventReader createXMLEventReader(XMLStreamReader in) throws XMLStreamException {
return getInputFactory().createXMLEventReader(in);
public XMLEventReader createXMLEventReader(XMLStreamReader reader) throws XMLStreamException {
return getInputFactory().createXMLEventReader(reader);
}

@Converter
Expand Down

0 comments on commit 2b91341

Please sign in to comment.