Changeset 3633 for devel-tools/trunk


Ignore:
Timestamp:
Mar 31, 2008, 1:02:57 AM (13 years ago)
Author:
yura
Message:
  • Reading lib, not only containers.
Location:
devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core
Files:
2 edited

Legend:

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

    r3630 r3633  
    22
    33import java.io.ByteArrayInputStream;
    4 import java.io.IOException;
    54import java.io.InputStream;
    65import java.io.InputStreamReader;
     
    3938import org.eclipse.jdt.core.JavaModelException;
    4039import org.refal.plus.Expr;
     40import org.refal.plus.RefalException;
    4141import org.refal.plus.Reference;
    4242import org.refal.plus.Result;
     
    177177            }
    178178        }
    179 
    180         private static Reader getClassReaderFromLibrary (IClasspathEntry entry, String moduleName) {
     179       
     180        // FIXME: Some thing strange...
     181        private Reader getClassReaderFromLibrary (IClasspathEntry entry, String moduleName) {
    181182            if (entry.getEntryKind() != IClasspathEntry.CPE_LIBRARY)
    182183                return null;
     184            entry = JavaCore.getResolvedClasspathEntry(entry);
    183185            IPath path = entry.getPath();
    184             if (path.getFileExtension().equals("jar")) {
     186            String ext = path.getFileExtension();
     187            if (ext != null && ext.equals("jar")) {
    185188                try {
    186                     JarFile jarFile = new JarFile(entry.getPath().toFile());
     189                    JarFile jarFile = null;
     190                    try {
     191                        jarFile = new JarFile(path.toFile());
     192                    } catch (Exception e) {}
     193                    if (jarFile == null)
     194                        try {
     195                            jarFile = new JarFile(project.getFile(path).getRawLocation().toString());
     196                        } catch (Exception e) {}
     197                    if (jarFile == null)
     198                        return null;
    187199                    JarEntry jarEntry = jarFile.getJarEntry(moduleName.replace('.', '/') + ".class");
    188200                    if (jarEntry == null)
    189201                        return null;
    190                     String formats = FormatReader.ReadFormatsFromClass(jarFile.getInputStream(jarEntry));
     202                    InputStream is = jarFile.getInputStream(jarEntry);
     203                    String formats = FormatReader.ReadFormatsFromClass(is);
     204                    is.close();
    191205                    if (formats == null)
    192206                        return null;
    193207                    return new StringReader(formats);
    194                 } catch (IOException e) {
     208                } catch (Exception e) {
    195209                    RfpCore.log(e);
    196210                    return null;
    197211                }
    198             }
    199             return null;
     212            } else {
     213                IFile file = project.getFile(path.append(moduleName.replace('.', '/') + ".class"));
     214                if (! file.exists())
     215                    return null;
     216                String formats;
     217                try {
     218                    InputStream is = file.getContents();
     219                    formats = FormatReader.ReadFormatsFromClass(is);
     220                    is.close();
     221                } catch (Exception e) {
     222                    RfpCore.log(e);
     223                    return null;
     224                }
     225                if (formats == null)
     226                    return null;
     227                return new StringReader(formats);
     228            }
    200229        }
    201230
     
    293322        IProject project = getProject();
    294323        project.deleteMarkers(RfpCore.MARKER_ID, false, IResource.DEPTH_INFINITE);
    295 
    296324        // We are relying on JavaBuilder for cleaning.
    297325        // project.accept(new IResourceVisitor() {
     
    325353                createClassFile(name, jbc.object);
    326354            }
    327         } catch (org.refal.plus.RefalException e) {
     355        } catch (RefalException e) {
    328356            System.err.println(e);
    329357        }
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpProject.java

    r3604 r3633  
    3030    public IFile getFile (String fileName) {
    3131        return project.getFile(fileName);
     32    }
     33
     34    public IFile getFile (IPath path) {
     35        return workspaceRoot.getFile(path);
    3236    }
    3337
Note: See TracChangeset for help on using the changeset viewer.