Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 181994
Collapse All | Expand All

(-)src/org/eclipse/pde/internal/ui/launcher/PDESourceLookupDirector.java (+21 lines)
Lines 13-18 Link Here
13
import java.util.HashSet;
13
import java.util.HashSet;
14
import java.util.Set;
14
import java.util.Set;
15
15
16
import org.eclipse.core.runtime.CoreException;
16
import org.eclipse.core.runtime.SafeRunner;
17
import org.eclipse.core.runtime.SafeRunner;
17
import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
18
import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
18
import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
19
import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
Lines 20-25 Link Here
20
import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
21
import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
21
import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
22
import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
22
import org.eclipse.debug.ui.sourcelookup.WorkingSetSourceContainer;
23
import org.eclipse.debug.ui.sourcelookup.WorkingSetSourceContainer;
24
import org.eclipse.jdt.debug.core.IJavaObject;
25
import org.eclipse.jdt.debug.core.IJavaReferenceType;
26
import org.eclipse.jdt.debug.core.IJavaStackFrame;
23
import org.eclipse.jdt.launching.sourcelookup.containers.JavaSourceLookupParticipant;
27
import org.eclipse.jdt.launching.sourcelookup.containers.JavaSourceLookupParticipant;
24
28
25
public class PDESourceLookupDirector extends AbstractSourceLookupDirector {
29
public class PDESourceLookupDirector extends AbstractSourceLookupDirector {
Lines 47-52 Link Here
47
		return !fFilteredTypes.contains(type.getId());
51
		return !fFilteredTypes.contains(type.getId());
48
	}
52
	}
49
	
53
	
54
	/* (non-Javadoc)
55
	 * @see org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector#getSourceElement(java.lang.Object)
56
	 */
50
	public Object getSourceElement(Object element) {
57
	public Object getSourceElement(Object element) {
51
		PDESourceLookupQuery query = new PDESourceLookupQuery(element);
58
		PDESourceLookupQuery query = new PDESourceLookupQuery(element);
52
		SafeRunner.run(query);
59
		SafeRunner.run(query);
Lines 54-57 Link Here
54
		return result != null ? result : super.getSourceElement(element);
61
		return result != null ? result : super.getSourceElement(element);
55
	}
62
	}
56
	
63
	
64
	/* (non-Javadoc)
65
	 * @see org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector#findSourceElements(java.lang.Object)
66
	 */
67
	public Object[] findSourceElements(Object object) throws CoreException {
68
		Object[] sourceElements = null;
69
		if (object instanceof IJavaStackFrame || object instanceof IJavaObject || object instanceof IJavaReferenceType){
70
			sourceElements = new Object[]{getSourceElement(object)};
71
		}
72
		if (sourceElements == null){
73
			sourceElements = super.findSourceElements(object);
74
		}
75
		return sourceElements;
76
	}
77
	
57
}
78
}
(-)src/org/eclipse/pde/internal/ui/launcher/PDESourceLookupQuery.java (-15 / +36 lines)
Lines 35-40 Link Here
35
import org.eclipse.jdt.debug.core.IJavaClassType;
35
import org.eclipse.jdt.debug.core.IJavaClassType;
36
import org.eclipse.jdt.debug.core.IJavaFieldVariable;
36
import org.eclipse.jdt.debug.core.IJavaFieldVariable;
37
import org.eclipse.jdt.debug.core.IJavaObject;
37
import org.eclipse.jdt.debug.core.IJavaObject;
38
import org.eclipse.jdt.debug.core.IJavaReferenceType;
38
import org.eclipse.jdt.debug.core.IJavaStackFrame;
39
import org.eclipse.jdt.debug.core.IJavaStackFrame;
39
import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
40
import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
40
import org.eclipse.jdt.launching.JavaRuntime;
41
import org.eclipse.jdt.launching.JavaRuntime;
Lines 43-51 Link Here
43
import org.eclipse.pde.core.plugin.IPluginModelBase;
44
import org.eclipse.pde.core.plugin.IPluginModelBase;
44
import org.eclipse.pde.core.plugin.ModelEntry;
45
import org.eclipse.pde.core.plugin.ModelEntry;
45
import org.eclipse.pde.core.plugin.PluginRegistry;
46
import org.eclipse.pde.core.plugin.PluginRegistry;
46
import org.eclipse.pde.internal.core.TargetPlatformHelper;
47
import org.eclipse.pde.internal.core.PDEClasspathContainer;
47
import org.eclipse.pde.internal.core.PDEClasspathContainer;
48
import org.eclipse.pde.internal.core.PDECore;
48
import org.eclipse.pde.internal.core.PDECore;
49
import org.eclipse.pde.internal.core.TargetPlatformHelper;
49
import org.eclipse.pde.internal.ui.PDEPlugin;
50
import org.eclipse.pde.internal.ui.PDEPlugin;
50
51
51
public class PDESourceLookupQuery implements ISafeRunnable {
52
public class PDESourceLookupQuery implements ISafeRunnable {
Lines 66-89 Link Here
66
	}
67
	}
67
68
68
	public void run() throws Exception {
69
	public void run() throws Exception {
70
		IJavaObject classLoaderObject = null;
71
		String declaringTypeName = null;
72
		String sourcePath = null;
69
		if (fElement instanceof IJavaStackFrame) {
73
		if (fElement instanceof IJavaStackFrame) {
70
			IJavaStackFrame stackFrame = (IJavaStackFrame)fElement;
74
			IJavaStackFrame stackFrame = (IJavaStackFrame)fElement;
71
			String typeName = generateSourceName(stackFrame.getDeclaringTypeName());
75
			classLoaderObject = stackFrame.getReferenceType().getClassLoaderObject();
72
76
			declaringTypeName = stackFrame.getDeclaringTypeName();
73
			IJavaObject object = stackFrame.getReferenceType().getClassLoaderObject();
77
			sourcePath = generateSourceName(declaringTypeName);
74
			if (object != null) {
78
		} else if (fElement instanceof IJavaObject){
75
				IJavaClassType type = (IJavaClassType)object.getJavaType();
79
			IJavaObject object = (IJavaObject)fElement;
76
				if (OSGI_CLASSLOADER.equals(type.getName())) {
80
			IJavaReferenceType type = (IJavaReferenceType)object.getJavaType();
77
					fResult = findSourceElement(object, typeName);
81
			classLoaderObject = type.getClassLoaderObject();
78
				} else if (LEGACY_ECLIPSE_CLASSLOADER.equals(type.getName())) {
82
			if (object.getJavaType() != null){
79
					fResult = findSourceElement_legacy(object, typeName);		
83
				declaringTypeName = object.getJavaType().getName();
80
				} else if (MAIN_CLASS.equals(stackFrame.getDeclaringTypeName())){
81
					IPluginModelBase model = PDECore.getDefault().getModelManager().findModel(MAIN_PLUGIN);
82
					if (model != null)
83
						fResult = getSourceElement(model.getInstallLocation(), MAIN_PLUGIN, typeName);
84
				}
85
			}
84
			}
85
			if (declaringTypeName != null){
86
				sourcePath = generateSourceName(declaringTypeName);
87
			}	
88
		} else if (fElement instanceof IJavaReferenceType){
89
			IJavaReferenceType type = (IJavaReferenceType)fElement;
90
			classLoaderObject = type.getClassLoaderObject();
91
			declaringTypeName = type.getName();
92
			sourcePath = generateSourceName(declaringTypeName);
86
		}
93
		}
94
			
95
		if (classLoaderObject != null) {
96
			IJavaClassType type = (IJavaClassType)classLoaderObject.getJavaType();
97
			if (OSGI_CLASSLOADER.equals(type.getName())) {
98
				fResult = findSourceElement(classLoaderObject, sourcePath);
99
			} else if (LEGACY_ECLIPSE_CLASSLOADER.equals(type.getName())) {
100
				fResult = findSourceElement_legacy(classLoaderObject, sourcePath);		
101
			} else if (MAIN_CLASS.equals(declaringTypeName)){
102
				IPluginModelBase model = PDECore.getDefault().getModelManager().findModel(MAIN_PLUGIN);
103
				if (model != null)
104
					fResult = getSourceElement(model.getInstallLocation(), MAIN_PLUGIN, sourcePath);
105
			}
106
		}
107
87
	}
108
	}
88
	
109
	
89
	protected Object getResult() {
110
	protected Object getResult() {

Return to bug 181994