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    }