package org.erlide.engine.internal.model; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.erlide.engine.ErlangEngine; import org.erlide.engine.IErlangEngine; import org.erlide.engine.model.ErlModelException; import org.erlide.engine.model.root.IBeamLocator; import org.erlide.engine.model.root.IErlProject; import org.erlide.util.ErlLogger; import org.erlide.util.SystemConfiguration; public class BeamLocator implements IBeamLocator { @Override public IFile findModuleBeam(final IProject project, final String module) throws ErlModelException { final IErlangEngine engine = ErlangEngine.getInstance(); if (engine == null) { ErlLogger.warn("Erlang engine was not created!"); return null; } final IErlProject erlProject = engine.getModel().getErlangProject(project); if (erlProject == null) { ErlLogger.warn("Project " + project + " is not in erlang model..."); return null; } final IFolder r = project.getFolder(erlProject.getProperties().getOutputDir()); try { r.refreshLocal(IResource.DEPTH_ONE, null); } catch (final CoreException e) { // ignore } final String beam = SystemConfiguration.withoutExtension(module) + ".beam"; return r.getFile(beam); } }