Changeset 3630 for devel-tools


Ignore:
Timestamp:
Mar 30, 2008, 11:33:41 PM (13 years ago)
Author:
yura
Message:
  • Updated version of compiler: no org.refal.plus.comp package.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpBuilder.java

    r3604 r3630  
    22
    33import java.io.ByteArrayInputStream;
     4import java.io.IOException;
    45import java.io.InputStream;
    56import java.io.InputStreamReader;
     
    2930import org.eclipse.core.resources.ResourcesPlugin;
    3031import org.eclipse.core.runtime.CoreException;
     32import org.eclipse.core.runtime.IPath;
    3133import org.eclipse.core.runtime.IProgressMonitor;
    3234import org.eclipse.core.runtime.OperationCanceledException;
     
    3537import org.eclipse.jdt.core.IClasspathEntry;
    3638import org.eclipse.jdt.core.JavaCore;
     39import org.eclipse.jdt.core.JavaModelException;
    3740import org.refal.plus.Expr;
    3841import org.refal.plus.Reference;
    3942import org.refal.plus.Result;
    40 import org.refal.plus.comp.FormatReader;
     43import org.refal.plus.compiler.FormatReader;
     44import org.refal.plus.compiler.rfpc;
    4145import org.refal.rfpdt.ast.AstImplem;
    4246import org.refal.rfpdt.compiler.Checker;
     
    174178        }
    175179
     180        private static Reader getClassReaderFromLibrary (IClasspathEntry entry, String moduleName) {
     181            if (entry.getEntryKind() != IClasspathEntry.CPE_LIBRARY)
     182                return null;
     183            IPath path = entry.getPath();
     184            if (path.getFileExtension().equals("jar")) {
     185                try {
     186                    JarFile jarFile = new JarFile(entry.getPath().toFile());
     187                    JarEntry jarEntry = jarFile.getJarEntry(moduleName.replace('.', '/') + ".class");
     188                    if (jarEntry == null)
     189                        return null;
     190                    String formats = FormatReader.ReadFormatsFromClass(jarFile.getInputStream(jarEntry));
     191                    if (formats == null)
     192                        return null;
     193                    return new StringReader(formats);
     194                } catch (IOException e) {
     195                    RfpCore.log(e);
     196                    return null;
     197                }
     198            }
     199            return null;
     200        }
     201
    176202        public Reader getClassReader (String moduleName) {
    177203            try {
    178                 for (IClasspathEntry entry : project.getJavaProject().getRawClasspath())
     204                for (IClasspathEntry entry : project.getJavaProject().getRawClasspath()) {
    179205                    if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
    180206                        IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), project
    181207                                .getJavaProject());
    182208                        for (IClasspathEntry entry2 : container.getClasspathEntries()) {
    183                             if (entry2.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
    184                                 JarFile jarFile = new JarFile(entry2.getPath().toFile());
    185                                 JarEntry jarEntry = jarFile.getJarEntry(moduleName.replace('.', '/') + ".class");
    186                                 if (jarEntry != null) {
    187                                     String formats = FormatReader
    188                                             .ReadFormatsFromClass(jarFile.getInputStream(jarEntry));
    189                                     return formats == null ? null : new StringReader(formats);
    190                                 }
    191                             }
     209                            Reader reader = getClassReaderFromLibrary(entry2, moduleName);
     210                            if (reader != null)
     211                                return reader;
    192212                        }
     213                    } else {
     214                        Reader reader = getClassReaderFromLibrary(entry, moduleName);
     215                        if (reader != null)
     216                            return reader;
    193217                    }
    194             } catch (Exception e) {
     218                }
     219            } catch (JavaModelException e) {
    195220                RfpCore.log(e);
    196221            }
     
    293318            Expr ast = RefalASGenerator.generateAS(astImplem);
    294319            Result res = new Result();
    295             org.refal.plus.compiler.rfpc.CompileASToJBC(ast, res);
     320            rfpc.CompileASToJBC(ast, res);
    296321            for (Comparable<?> p : res.getExpr()) {
    297322                Expr e = (Expr) p;
Note: See TracChangeset for help on using the changeset viewer.