package org.objectstyle.wolips.jdt.classpath; import java.util.HashMap; import java.util.Map; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.objectstyle.wolips.jdt.JdtPlugin; import org.objectstyle.wolips.jdt.classpath.model.IEclipseFramework; /** * @author mschrag */ public class WOFrameworkClasspathContainer implements IClasspathContainer { public static final String ID = "WOFramework"; private IEclipseFramework framework; private Map<String, String> params; private String _name; public WOFrameworkClasspathContainer(IEclipseFramework framework) { this(framework, new HashMap<String, String>()); } public WOFrameworkClasspathContainer(IEclipseFramework framework, Map<String, String> params) { this.framework = framework; this.params = params; } public Map<String, String> getParams() { return params; } public IEclipseFramework getFramework() { return this.framework; } public String getDescription() { if (_name == null) { _name = getFramework().getName() + " Framework"; } return _name; } public int getKind() { return IClasspathContainer.K_APPLICATION; } public IPath getPath() { IPath path = new Path(WOFrameworkClasspathContainer.ID + "/" + getFramework().getName()); for (Map.Entry<String, String> param : this.params.entrySet()) { path = path.append(param.getKey() + "=" + param.getValue()); } return path; } public IClasspathEntry[] getClasspathEntries() { return this.framework.getClasspathEntries(); } public static WOFrameworkClasspathContainer getFrameworkClasspathContainer(IJavaProject project, IClasspathEntry classpathEntry) { WOFrameworkClasspathContainer frameworkContainer = null; try { IClasspathContainer container = JavaCore.getClasspathContainer(classpathEntry.getPath(), project); if (container instanceof WOFrameworkClasspathContainer) { frameworkContainer = (WOFrameworkClasspathContainer) container; } } catch (Exception e) { JdtPlugin.getDefault().getPluginLogger().debug(e); } return frameworkContainer; } public static boolean isFrameworkClasspathEntry(IJavaProject project, IClasspathEntry classpathEntry) throws JavaModelException { IClasspathContainer container = JavaCore.getClasspathContainer(classpathEntry.getPath(), project); return container instanceof WOFrameworkClasspathContainer; } }