blob: 4f0a7477ffa47d2251e0ab37807bc3bc373d9932 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Frits Jalvingh - Contribution for Bug 459831 - [launching] Support attaching
* external annotations to a JRE container
*******************************************************************************/
package org.eclipse.jdt.internal.debug.ui.classpath;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
import org.eclipse.jdt.launching.IRuntimeClasspathEntry2;
public class ClasspathEntry extends AbstractClasspathEntry implements IRuntimeClasspathEntry, IAdaptable {
private IRuntimeClasspathEntry entry= null;
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getJavaProject()
*/
@Override
public IJavaProject getJavaProject() {
return entry.getJavaProject();
}
public ClasspathEntry(IRuntimeClasspathEntry entry, IClasspathEntry parent) {
this.parent= parent;
this.entry= entry;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (obj instanceof ClasspathEntry) {
ClasspathEntry other= (ClasspathEntry)obj;
if (entry != null) {
return entry.equals(other.entry);
}
} else if (obj instanceof IRuntimeClasspathEntry) {
return entry.equals(obj);
}
return false;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
return entry.hashCode();
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return entry.getPath().toOSString();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getType()
*/
@Override
public int getType() {
return entry.getType();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getMemento()
*/
@Override
public String getMemento() throws CoreException {
return entry.getMemento();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getPath()
*/
@Override
public IPath getPath() {
return entry.getPath();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getResource()
*/
@Override
public IResource getResource() {
return entry.getResource();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getSourceAttachmentPath()
*/
@Override
public IPath getSourceAttachmentPath() {
return entry.getSourceAttachmentPath();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#setSourceAttachmentPath(org.eclipse.core.runtime.IPath)
*/
@Override
public void setSourceAttachmentPath(IPath path) {
entry.setSourceAttachmentPath(path);
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getSourceAttachmentRootPath()
*/
@Override
public IPath getSourceAttachmentRootPath() {
return entry.getSourceAttachmentRootPath();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#setSourceAttachmentRootPath(org.eclipse.core.runtime.IPath)
*/
@Override
public void setSourceAttachmentRootPath(IPath path) {
entry.setSourceAttachmentRootPath(path);
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getExternalAnnotationsPath()
*/
@Override
public IPath getExternalAnnotationsPath() {
return entry.getExternalAnnotationsPath();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#setExternalAnnotationsPath(org.eclipse.core.runtime.IPath)
*/
@Override
public void setExternalAnnotationsPath(IPath path) {
entry.setExternalAnnotationsPath(path);
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getClasspathProperty()
*/
@Override
public int getClasspathProperty() {
return entry.getClasspathProperty();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#setClasspathProperty(int)
*/
@Override
public void setClasspathProperty(int location) {
entry.setClasspathProperty(location);
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getLocation()
*/
@Override
public String getLocation() {
return entry.getLocation();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getSourceAttachmentLocation()
*/
@Override
public String getSourceAttachmentLocation() {
return entry.getSourceAttachmentLocation();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getSourceAttachmentRootLocation()
*/
@Override
public String getSourceAttachmentRootLocation() {
return entry.getSourceAttachmentRootLocation();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getVariableName()
*/
@Override
public String getVariableName() {
return entry.getVariableName();
}
/* (non-Javadoc)
* @see org.eclipse.jdt.launching.IRuntimeClasspathEntry#getClasspathEntry()
*/
@Override
public org.eclipse.jdt.core.IClasspathEntry getClasspathEntry() {
return entry.getClasspathEntry();
}
public IRuntimeClasspathEntry getDelegate() {
return entry;
}
public boolean hasChildren() {
IRuntimeClasspathEntry rpe = getDelegate();
return rpe instanceof IRuntimeClasspathEntry2 &&
((IRuntimeClasspathEntry2)rpe).isComposite();
}
public IClasspathEntry[] getChildren(ILaunchConfiguration configuration) {
IRuntimeClasspathEntry rpe = getDelegate();
if (rpe instanceof IRuntimeClasspathEntry2) {
IRuntimeClasspathEntry2 r2 = (IRuntimeClasspathEntry2) rpe;
try {
IRuntimeClasspathEntry[] entries = r2.getRuntimeClasspathEntries(configuration);
IClasspathEntry[] cps = new IClasspathEntry[entries.length];
for (int i = 0; i < entries.length; i++) {
IRuntimeClasspathEntry childEntry = entries[i];
cps[i] = new ClasspathEntry(childEntry, this);
}
return cps;
} catch (CoreException e) {
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.debug.ui.classpath.IClasspathEntry#isEditable()
*/
@Override
public boolean isEditable() {
return getParent() instanceof ClasspathGroup;
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
@Override
public <T> T getAdapter(Class<T> adapter) {
if (getDelegate() instanceof IAdaptable) {
return ((IAdaptable) getDelegate()).getAdapter(adapter);
}
return null;
}
}