package me.tomassetti.turin.resolvers.compiled;
import javassist.ClassPool;
import javassist.CtClass;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
class JarClasspathElement implements ClasspathElement {
private JarTypeResolver jarTypeResolver;
private JarFile jarFile;
private JarEntry entry;
private String path;
public JarClasspathElement(JarTypeResolver jarTypeResolver, JarFile jarFile, JarEntry entry, String path) {
this.jarTypeResolver = jarTypeResolver;
this.jarFile = jarFile;
this.entry = entry;
this.path = path;
}
@Override
public InputStream toInputStream() throws IOException {
return jarFile.getInputStream(entry);
}
@Override
public CtClass toCtClass() throws IOException {
InputStream is = toInputStream();
ClassPool classPool = ClassPoolFactory.INSTANCE.getClassPool();
CtClass ctClass = classPool.makeClass(is);
return ctClass;
}
@Override
public URL toURL() {
String urlContent = "jar:file:"+ jarTypeResolver.file.getAbsolutePath()+"!/"+entry.getName();
try {
return new URL(urlContent);
} catch (MalformedURLException e) {
throw new RuntimeException("URL was: " + urlContent, e);
}
}
}