/*
* $Id: JarLoader.java,v 1.3 2002/09/16 08:05:06 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.server;
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.jar.JarFile;
import java.util.jar.JarEntry;
/**
* class JarLoader
*
* @author: Jani Lehtim�ki
*/
public class JarLoader implements Loader
{
private JarFile _jar;
public JarLoader(File path) throws IOException
{
_jar = new JarFile(path);
}
public ClassData load(String name)
{
String filename = name + ".class";
JarEntry entry = _jar.getJarEntry(filename);
if (entry != null) {
InputStream input = null;
try {
input = _jar.getInputStream(entry);
int length = (int)entry.getSize();
int offset = 0;
byte[] data = new byte[length];
while(offset < length) {
int read = input.read(data, offset, length - offset);
if (read == -1) {
return null;
}
offset += read;
}
input.close();
return new ClassData(name, data);
} catch (IOException e) {
return null;
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
}
}
}
}
return null;
}
}