Copyright (c) 2004, 2015 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2004, 2015 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.jdt.launching.sourcelookup.containers; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.sourcelookup.ISourceContainer; import org.eclipse.debug.core.sourcelookup.ISourceContainerType; import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector; import org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer; import org.eclipse.jdt.core.IClasspathContainer; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.internal.launching.LaunchingPlugin; import org.eclipse.jdt.launching.IRuntimeClasspathEntry; import org.eclipse.jdt.launching.JavaRuntime;
A source container for a classpath container.

This class may be instantiated.

Since:3.0
@noextendThis class is not intended to be subclassed by clients.
/** * A source container for a classpath container. * <p> * This class may be instantiated. * </p> * * @since 3.0 * @noextend This class is not intended to be subclassed by clients. */
public class ClasspathContainerSourceContainer extends CompositeSourceContainer {
Associated classpath container path.
/** * Associated classpath container path. */
private IPath fContainerPath;
Unique identifier for Java project source container type (value org.eclipse.jdt.launching.sourceContainer.classpathContainer).
/** * Unique identifier for Java project source container type * (value <code>org.eclipse.jdt.launching.sourceContainer.classpathContainer</code>). */
public static final String TYPE_ID = LaunchingPlugin.getUniqueIdentifier() + ".sourceContainer.classpathContainer"; //$NON-NLS-1$
Constructs a new source container for the given classpath container.
Params:
  • containerPath – classpath container path
/** * Constructs a new source container for the given classpath container. * * @param containerPath classpath container path */
public ClasspathContainerSourceContainer(IPath containerPath) { fContainerPath = containerPath; } /* (non-Javadoc) * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getName() */ @Override public String getName() { IClasspathContainer container = null; try { container = getClasspathContainer(); } catch (CoreException e) { } if (container == null) { return getPath().lastSegment(); } return container.getDescription(); } /* (non-Javadoc) * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getType() */ @Override public ISourceContainerType getType() { return getSourceContainerType(TYPE_ID); } /* (non-Javadoc) * @see org.eclipse.debug.internal.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers() */ @Override protected ISourceContainer[] createSourceContainers() throws CoreException { IRuntimeClasspathEntry entry = JavaRuntime.newRuntimeContainerClasspathEntry(getPath(), IRuntimeClasspathEntry.USER_CLASSES); IRuntimeClasspathEntry[] entries = JavaRuntime.resolveSourceLookupPath(new IRuntimeClasspathEntry[]{entry}, getDirector().getLaunchConfiguration()); return JavaRuntime.getSourceContainers(entries); }
Returns the classpath container's path
Returns:classpath container's path
/** * Returns the classpath container's path * * @return classpath container's path */
public IPath getPath() { return fContainerPath; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (obj instanceof ClasspathContainerSourceContainer) { return getPath().equals(((ClasspathContainerSourceContainer)obj).getPath()); } return false; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return getPath().hashCode(); }
Returns the associated container or null if unavailable.
Throws:
Returns:classpath container or null
/** * Returns the associated container or <code>null</code> if unavailable. * * @return classpath container or <code>null</code> * @throws CoreException if unable to retrieve container */
public IClasspathContainer getClasspathContainer() throws CoreException { ISourceLookupDirector director = getDirector(); if (director != null) { ILaunchConfiguration configuration = director.getLaunchConfiguration(); if (configuration != null) { IJavaProject project = JavaRuntime.getJavaProject(configuration); if (project != null) { return JavaCore.getClasspathContainer(getPath(), project); } } } return null; } }