001 package org.extendj.ast; 002 003 import java.util.HashSet; 004 import java.io.File; 005 import java.util.Set; 006 import java.util.Collections; 007 import java.util.Collection; 008 import java.util.ArrayList; 009 import beaver.*; 010 import java.util.*; 011 import java.io.ByteArrayOutputStream; 012 import java.io.PrintStream; 013 import java.lang.reflect.InvocationTargetException; 014 import java.lang.reflect.Method; 015 import org.jastadd.util.*; 016 import java.util.zip.*; 017 import java.io.*; 018 import org.jastadd.util.PrettyPrintable; 019 import org.jastadd.util.PrettyPrinter; 020 import java.io.FileNotFoundException; 021 import java.io.BufferedInputStream; 022 import java.io.DataInputStream; 023 /** 024 * @ast class 025 * @aspect PathPart 026 * @declaredat /home/jesper/git/extendj/java4/frontend/PathPart.jadd:258 027 */ 028 public class JarClassSource extends BytecodeClassSource { 029 030 private final ZipFile jar; 031 032 033 private final ZipEntry entry; 034 035 036 private final String jarPath; 037 038 039 040 public JarClassSource(PathPart sourcePath, ZipFile jar, ZipEntry entry, 041 String jarPath) { 042 super(sourcePath); 043 this.jar = jar; 044 this.entry = entry; 045 this.jarPath = jarPath; 046 } 047 048 049 050 public String jarFilePath() { 051 return entry.getName(); 052 } 053 054 055 056 @Override 057 public long lastModified() { 058 return entry.getTime(); 059 } 060 061 062 063 @Override 064 public InputStream openInputStream() throws IOException { 065 return jar.getInputStream(entry); 066 } 067 068 069 070 @Override 071 public String pathName() { 072 return jarPath; 073 } 074 075 076 077 @Override 078 public String relativeName() { 079 return entry.getName(); 080 } 081 082 083 084 @Override 085 public String sourceName() { 086 return pathName() + ":" + relativeName(); 087 } 088 089 090 }