/*
* Created on Dec 21, 2009
* (c) 2009 Trumpet, Inc.
*
*/
package com.itextpdf.testutils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.itextpdf.text.pdf.PdfReader;
/**
* @author kevin
*/
public final class TestResourceUtils {
private static final String TESTPREFIX = "itexttest_";
private TestResourceUtils() {
}
public static String getFullyQualifiedResourceName(Class context, String resourceName){
return context.getName().replace('.', '/') + "/" + resourceName;
}
public static InputStream getResourceAsStream(Object context, String resourceName){
Class contextClass;
if (context instanceof Class){
contextClass = (Class)context;
}else{
contextClass = context.getClass();
}
return contextClass.getClassLoader().getResourceAsStream(getFullyQualifiedResourceName(contextClass, resourceName));
}
public static void purgeTempFiles(){
File tempFolder = new File(System.getProperty("java.io.tmpdir"));
File[] itextTempFiles = tempFolder.listFiles(new FileFilter(){
public boolean accept(File pathname) {
return pathname.getName().startsWith(TESTPREFIX);
}
});
for (File file : itextTempFiles) {
if (!file.delete()){
System.err.println("Unable to delete iText temporary test file " + file);
}
}
}
public static File getResourceAsTempFile(Object context, String resourceName) throws IOException{
File f = File.createTempFile(TESTPREFIX, ".pdf");
f.deleteOnExit();
InputStream is = getResourceAsStream(context, resourceName);
final OutputStream os = new BufferedOutputStream(new FileOutputStream(f));
try{
writeInputToOutput(is, os);
} finally {
is.close();
os.close();
}
return f;
}
public static PdfReader getResourceAsPdfReader(Object context, String resourceName) throws IOException{
return new PdfReader(new BufferedInputStream(getResourceAsStream(context, resourceName)));
}
public static byte[] getResourceAsByteArray(Object context, String resourceName) throws IOException{
InputStream inputStream = getResourceAsStream(context, resourceName);
final ByteArrayOutputStream fileBytes = new ByteArrayOutputStream();
try{
writeInputToOutput(inputStream, fileBytes);
} finally {
inputStream.close();
}
return fileBytes.toByteArray();
}
private static void writeInputToOutput(InputStream is, OutputStream os) throws IOException{
final byte[] buffer = new byte[8192];
while (true)
{
final int bytesRead = is.read(buffer);
if (bytesRead == -1)
{
break;
}
os.write(buffer, 0, bytesRead);
}
}
}