Author: ningjiang Date: Thu Mar 12 03:24:59 2009 New Revision: 752756 URL: http://svn.apache.org/viewvc?rev=752756&view=rev Log: Merged revisions 749936 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk
........ r749936 | ningjiang | 2009-03-04 15:34:17 +0800 (Wed, 04 Mar 2009) | 1 line CAMEL-1413 Cached the big message into the file instead of using memory directly ........ Added: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java - copied, changed from r749936, camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java - copied, changed from r749936, camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java - copied, changed from r749936, camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java (with props) camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java - copied, changed from r749936, camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java Modified: camel/branches/camel-1.x/ (props changed) camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/IOHelper.java camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java Propchange: camel/branches/camel-1.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Mar 12 03:24:59 2009 @@ -1 +1 @@ -/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749956,750017,750334,750761,750796,752068,752117 +/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750761,750796,752068,752117 Propchange: camel/branches/camel-1.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Copied: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java (from r749936, camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java) URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java?p2=camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java&r1=749936&r2=752756&rev=752756&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java (original) +++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java Thu Mar 12 03:24:59 2009 @@ -29,7 +29,6 @@ import java.util.ArrayList; import java.util.List; -import org.apache.camel.StreamCache; import org.apache.camel.converter.IOConverter; import org.apache.camel.util.FileUtil; import org.apache.camel.util.IOHelper; Copied: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java (from r749936, camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java) URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java?p2=camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java&r1=749936&r2=752756&rev=752756&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java (original) +++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/FileInputStreamCache.java Thu Mar 12 03:24:59 2009 @@ -23,7 +23,6 @@ import java.io.InputStream; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.StreamCache; public class FileInputStreamCache extends InputStream implements StreamCache { private FileInputStream inputStream; Copied: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java (from r749936, camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java) URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java?p2=camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java&p1=camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java&r1=749936&r2=752756&rev=752756&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java (original) +++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/InputStreamCache.java Thu Mar 12 03:24:59 2009 @@ -19,9 +19,6 @@ import java.io.ByteArrayInputStream; -import org.apache.camel.StreamCache; - - public class InputStreamCache extends ByteArrayInputStream implements StreamCache { public InputStreamCache(byte[] data) { Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java?rev=752756&r1=752755&r2=752756&view=diff ============================================================================== --- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java (original) +++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java Thu Mar 12 03:24:59 2009 @@ -16,7 +16,6 @@ */ package org.apache.camel.converter.stream; -import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Reader; @@ -27,10 +26,12 @@ import javax.xml.transform.stream.StreamSource; import org.apache.camel.Converter; +import org.apache.camel.Exchange; import org.apache.camel.converter.IOConverter; import org.apache.camel.converter.jaxp.BytesSource; import org.apache.camel.converter.jaxp.StringSource; import org.apache.camel.converter.jaxp.XmlConverter; +import org.apache.camel.util.IOHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -67,8 +68,10 @@ } @Converter - public StreamCache convertToStreamCache(InputStream stream) throws IOException { - return new InputStreamCache(IOConverter.toBytes(stream)); + public StreamCache convertToStreamCache(InputStream stream, Exchange exchange) throws IOException { + CachedOutputStream cos = new CachedOutputStream(); + IOHelper.copyAndCloseInput(stream, cos); + return cos.getStreamCache(); } @Converter @@ -100,13 +103,15 @@ * {...@link StreamCache} implementation for Cache the StreamSource {...@link StreamSource}s */ private class StreamSourceCache extends StreamSource implements StreamCache { - InputStreamCache inputStreamCache; + StreamCache streamCache; ReaderCache readCache; public StreamSourceCache(StreamSource source) throws IOException { if (source.getInputStream() != null) { - inputStreamCache = new InputStreamCache(IOConverter.toBytes(source.getInputStream())); - setInputStream(inputStreamCache); + CachedOutputStream cos = new CachedOutputStream(); + IOHelper.copyAndCloseInput(source.getInputStream(), cos); + streamCache = cos.getStreamCache(); + setInputStream((InputStream)streamCache); setSystemId(source.getSystemId()); } if (source.getReader() != null) { @@ -115,8 +120,8 @@ } } public void reset() { - if (inputStreamCache != null) { - inputStreamCache.reset(); + if (streamCache != null) { + streamCache.reset(); } if (readCache != null) { readCache.reset(); @@ -124,15 +129,7 @@ } } - - private class InputStreamCache extends ByteArrayInputStream implements StreamCache { - - public InputStreamCache(byte[] data) { - super(data); - } - - } - + private class ReaderCache extends StringReader implements StreamCache { public ReaderCache(String s) { @@ -152,6 +149,8 @@ } } + + } Added: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java?rev=752756&view=auto ============================================================================== --- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java (added) +++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java Thu Mar 12 03:24:59 2009 @@ -0,0 +1,388 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.util; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Stack; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * File utilities + */ +public final class FileUtil { + + private static final int RETRY_SLEEP_MILLIS = 10; + private static File defaultTempDir; + + private FileUtil() { + } + + /** + * Normalizes the path to cater for Windows and other platforms + */ + public static String normalizePath(String path) { + // special handling for Windows where we need to convert / to \\ + if (path != null && System.getProperty("os.name").startsWith("Windows") && path.indexOf("/") >= 0) { + return path.replace('/', '\\'); + } + return path; + } + + private static synchronized File getDefaultTempDir() { + if (defaultTempDir != null + && defaultTempDir.exists()) { + return defaultTempDir; + } + + String s = null; + try { + s = System.getProperty(FileUtil.class.getName() + ".TempDirectory"); + } catch (SecurityException e) { + //Ignorable, we'll use the default + } + if (s == null) { + int x = (int)(Math.random() * 1000000); + s = System.getProperty("java.io.tmpdir"); + File checkExists = new File(s); + if (!checkExists.exists()) { + throw new RuntimeException("The directory " + + checkExists.getAbsolutePath() + + " does not exist, please set java.io.tempdir" + + " to an existing directory"); + } + File f = new File(s, "camel-tmp-" + x); + while (!f.mkdir()) { + x = (int)(Math.random() * 1000000); + f = new File(s, "camel-tmp-" + x); + } + defaultTempDir = f; + Thread hook = new Thread() { + @Override + public void run() { + removeDir(defaultTempDir); + } + }; + Runtime.getRuntime().addShutdownHook(hook); + } else { + //assume someone outside of us will manage the directory + File f = new File(s); + f.mkdirs(); + defaultTempDir = f; + } + return defaultTempDir; + } + + public static void mkDir(File dir) { + if (dir == null) { + throw new RuntimeException("dir attribute is required"); + } + + if (dir.isFile()) { + throw new RuntimeException("Unable to create directory as a file " + + "already exists with that name: " + dir.getAbsolutePath()); + } + + if (!dir.exists()) { + boolean result = doMkDirs(dir); + if (!result) { + String msg = "Directory " + dir.getAbsolutePath() + + " creation was not successful for an unknown reason"; + throw new RuntimeException(msg); + } + } + } + + /** + * Attempt to fix possible race condition when creating directories on + * WinXP, also Windows2000. If the mkdirs does not work, wait a little and + * try again. + */ + private static boolean doMkDirs(File f) { + if (!f.mkdirs()) { + try { + Thread.sleep(RETRY_SLEEP_MILLIS); + return f.mkdirs(); + } catch (InterruptedException ex) { + return f.mkdirs(); + } + } + return true; + } + + public static void removeDir(File d) { + String[] list = d.list(); + if (list == null) { + list = new String[0]; + } + for (int i = 0; i < list.length; i++) { + String s = list[i]; + File f = new File(d, s); + if (f.isDirectory()) { + removeDir(f); + } else { + delete(f); + } + } + delete(d); + } + + public static void delete(File f) { + if (!f.delete()) { + if (isWindows()) { + System.gc(); + } + try { + Thread.sleep(RETRY_SLEEP_MILLIS); + } catch (InterruptedException ex) { + // Ignore Exception + } + if (!f.delete()) { + f.deleteOnExit(); + } + } + } + + private static boolean isWindows() { + String osName = System.getProperty("os.name").toLowerCase(Locale.US); + return osName.indexOf("windows") > -1; + } + + public static File createTempFile(String prefix, String suffix) throws IOException { + return createTempFile(prefix, suffix, null, false); + } + + public static File createTempFile(String prefix, String suffix, File parentDir, + boolean deleteOnExit) throws IOException { + File result = null; + File parent = (parentDir == null) + ? getDefaultTempDir() + : parentDir; + + if (suffix == null) { + suffix = ".tmp"; + } + if (prefix == null) { + prefix = "camel"; + } else if (prefix.length() < 3) { + prefix = prefix + "camel"; + } + result = File.createTempFile(prefix, suffix, parent); + + //if parentDir is null, we're in our default dir + //which will get completely wiped on exit from our exit + //hook. No need to set deleteOnExit() which leaks memory. + if (deleteOnExit && parentDir != null) { + result.deleteOnExit(); + } + return result; + } + + public static String getStringFromFile(File location) { + InputStream is = null; + String result = null; + + try { + is = new FileInputStream(location); + result = normalizeCRLF(is); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (is != null) { + try { + is.close(); + } catch (Exception e) { + //do nothing + } + } + } + + return result; + } + + public static String normalizeCRLF(InputStream instream) { + BufferedReader in = new BufferedReader(new InputStreamReader(instream)); + StringBuffer result = new StringBuffer(); + String line = null; + + try { + line = in.readLine(); + while (line != null) { + String[] tok = line.split("\\s"); + + for (int x = 0; x < tok.length; x++) { + String token = tok[x]; + result.append(" " + token); + } + line = in.readLine(); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + + String rtn = result.toString(); + + rtn = ignoreTokens(rtn, "<!--", "-->"); + rtn = ignoreTokens(rtn, "/*", "*/"); + return rtn; + } + + private static String ignoreTokens(final String contents, + final String startToken, final String endToken) { + String rtn = contents; + int headerIndexStart = rtn.indexOf(startToken); + int headerIndexEnd = rtn.indexOf(endToken); + if (headerIndexStart != -1 && headerIndexEnd != -1 && headerIndexStart < headerIndexEnd) { + rtn = rtn.substring(0, headerIndexStart - 1) + + rtn.substring(headerIndexEnd + endToken.length() + 1); + } + return rtn; + } + + public static List<File> getFiles(File dir, final String pattern) { + return getFiles(dir, pattern, null); + } + public static List<File> getFilesRecurse(File dir, final String pattern) { + return getFilesRecurse(dir, pattern, null); + } + + public static List<File> getFiles(File dir, final String pattern, File exclude) { + return getFilesRecurse(dir, Pattern.compile(pattern), exclude, false, new ArrayList<File>()); + } + public static List<File> getFilesRecurse(File dir, final String pattern, File exclude) { + return getFilesRecurse(dir, Pattern.compile(pattern), exclude, true, new ArrayList<File>()); + } + private static List<File> getFilesRecurse(File dir, + Pattern pattern, + File exclude, boolean rec, + List<File> fileList) { + for (File file : dir.listFiles()) { + if (file.equals(exclude)) { + continue; + } + if (file.isDirectory() && rec) { + getFilesRecurse(file, pattern, exclude, rec, fileList); + } else { + Matcher m = pattern.matcher(file.getName()); + if (m.matches()) { + fileList.add(file); + } + } + } + return fileList; + } + + public static List<String> readLines(File file) throws Exception { + if (!file.exists()) { + return new ArrayList<String>(); + } + BufferedReader reader = new BufferedReader(new FileReader(file)); + List<String> results = new ArrayList<String>(); + String line = reader.readLine(); + while (line != null) { + results.add(line); + line = reader.readLine(); + } + return results; + } + + /** + * Strip any leading separators + */ + public static String stripLeadingSeparator(String name) { + if (name == null) { + return null; + } + while (name.startsWith("/") || name.startsWith(File.separator)) { + name = name.substring(1); + } + return name; + } + + /** + * Strip any trailing separators + */ + public static String stripTrailingSeparator(String name) { + if (name == null) { + return null; + } + while (name.endsWith("/") || name.endsWith(File.separator)) { + name = name.substring(0, name.length() - 1); + } + return name; + } + + /** + * Strips any leading paths + */ + public static String stripPath(String name) { + if (name == null) { + return null; + } + int pos = name.lastIndexOf("/"); + if (pos == -1) { + pos = name.lastIndexOf(File.separator); + } + if (pos != -1) { + return name.substring(pos + 1); + } + return name; + } + + /** + * Compacts a path by stacking it and reducing <tt>..</tt> + */ + public static String compactPath(String path) { + // only normalize path if it contains .. as we want to avoid: path/../sub/../sub2 as this can leads to trouble + if (path.indexOf("..") == -1) { + return path; + } + + Stack<String> stack = new Stack<String>(); + String[] parts = path.split(File.separator); + for (String part : parts) { + if (part.equals("..") && !stack.isEmpty()) { + // only pop if there is a previous path + stack.pop(); + } else { + stack.push(part); + } + } + + // build path based on stack + StringBuilder sb = new StringBuilder(); + for (Iterator it = stack.iterator(); it.hasNext();) { + sb.append(it.next()); + if (it.hasNext()) { + sb.append(File.separator); + } + } + + return sb.toString(); + } + +} Propchange: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/IOHelper.java URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/IOHelper.java?rev=752756&r1=752755&r2=752756&view=diff ============================================================================== --- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/IOHelper.java (original) +++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/util/IOHelper.java Thu Mar 12 03:24:59 2009 @@ -17,6 +17,10 @@ package org.apache.camel.util; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; /** * IO helper class. @@ -24,10 +28,46 @@ * @version $Revision$ */ public final class IOHelper { + + private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; + private static final Charset UTF8_CHARSET = Charset.forName("utf-8"); private IOHelper() { //Utility Class } + + /** + * Use this function instead of new String(byte[]) to avoid surprises from non-standard default encodings. + * @param bytes + * @return + */ + public static String newStringFromBytes(byte[] bytes) { + try { + return new String(bytes, UTF8_CHARSET.name()); + } catch (UnsupportedEncodingException e) { + throw + new RuntimeException("Impossible failure: Charset.forName(\"utf-8\") returns invalid name."); + + } + } + + /** + * Use this function instead of new String(byte[], int, int) + * to avoid surprises from non-standard default encodings. + * @param bytes + * @param start + * @param length + * @return + */ + public static String newStringFromBytes(byte[] bytes, int start, int length) { + try { + return new String(bytes, start, length, UTF8_CHARSET.name()); + } catch (UnsupportedEncodingException e) { + throw + new RuntimeException("Impossible failure: Charset.forName(\"utf-8\") returns invalid name."); + + } + } /** * A factory method which creates an {...@link IOException} from the given @@ -46,4 +86,40 @@ answer.initCause(cause); return answer; } + + public static int copy(InputStream input, OutputStream output) throws IOException { + return copy(input, output, DEFAULT_BUFFER_SIZE); + } + + public static int copy(final InputStream input, final OutputStream output, int bufferSize) + throws IOException { + int avail = input.available(); + if (avail > 262144) { + avail = 262144; + } + if (avail > bufferSize) { + bufferSize = avail; + } + final byte[] buffer = new byte[bufferSize]; + int n = 0; + n = input.read(buffer); + int total = 0; + while (-1 != n) { + output.write(buffer, 0, n); + total += n; + n = input.read(buffer); + } + output.flush(); + return total; + } + + public static void copyAndCloseInput(InputStream input, OutputStream output) throws IOException { + copy(input, output); + input.close(); + } + + public static void copyAndCloseInput(InputStream input, OutputStream output, int bufferSize) throws IOException { + copy(input, output, bufferSize); + } + } Copied: camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java (from r749936, camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java) URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java?p2=camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java&r1=749936&r2=752756&rev=752756&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java (original) +++ camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java Thu Mar 12 03:24:59 2009 @@ -23,7 +23,7 @@ import java.io.InputStreamReader; import junit.framework.TestCase; -import org.apache.camel.StreamCache; + import org.apache.camel.converter.IOConverter; import org.apache.camel.util.CollectionStringBuffer; Modified: camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java?rev=752756&r1=752755&r2=752756&view=diff ============================================================================== --- camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java (original) +++ camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java Thu Mar 12 03:24:59 2009 @@ -24,23 +24,26 @@ import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamSource; -import junit.framework.TestCase; - +import org.apache.camel.ContextTestSupport; +import org.apache.camel.Exchange; import org.apache.camel.converter.IOConverter; import org.apache.camel.converter.jaxp.XmlConverter; +import org.apache.camel.impl.DefaultExchange; /** * Test cases for {...@link StreamCacheConverter} */ -public class StreamCacheConverterTest extends TestCase { +public class StreamCacheConverterTest extends ContextTestSupport { private static final String TEST_FILE = "org/apache/camel/converter/stream/test.xml"; private StreamCacheConverter converter; + private Exchange exchange; @Override protected void setUp() throws Exception { super.setUp(); this.converter = new StreamCacheConverter(); + this.exchange = new DefaultExchange(context); } public void testConvertToStreamCacheStreamSource() throws IOException, FileNotFoundException, TransformerException { @@ -55,7 +58,7 @@ public void testConvertToStreamCacheInputStream() throws IOException { InputStream is = getTestFileStream(); - InputStream cache = (InputStream)converter.convertToStreamCache(is); + InputStream cache = (InputStream)converter.convertToStreamCache(is, exchange); //assert re-readability of the cached InputStream assertNotNull(IOConverter.toString(cache)); assertNotNull(IOConverter.toString(cache));