package monolipse.core.internal; import monolipse.core.IAssemblyReference; import monolipse.core.IAssemblyReferenceVisitor; import monolipse.core.IAssemblySource; import monolipse.core.IAssemblySourceReference; import monolipse.core.IMemorable; import monolipse.core.IRemembrance; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; public class AssemblySourceReference implements IAssemblySourceReference { private IAssemblySource _source; AssemblySourceReference(IAssemblySource source) { _source = source; } public IAssemblySource getAssemblySource() { return _source; } public String getAssemblyName() { return _source.getFolder().getName(); } public String getCompilerReference() throws CoreException { return _source.getOutputFile().getLocation().toOSString(); } public String getType() { return IAssemblyReference.ASSEMBLY_SOURCE; } public boolean accept(IAssemblyReferenceVisitor visitor) throws CoreException { return visitor.visit(this); } static public class Remembrance implements IRemembrance { public String path; public Remembrance(String path) { this.path = path; } /** * public no arg constructor for xstream deserialization * on less capable virtual machines. */ public Remembrance() { } @Override public String toString() { return path; } public IMemorable activate() throws CoreException { IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(this.path)); BooAssemblySource source = BooAssemblySource.get(folder); return AssemblyReferences.assemblyReferenceFor(source); } } public IRemembrance getRemembrance() { return new Remembrance(_source.getFolder().getFullPath().toPortableString()); } }