Skip to content

Commit 3c16105

Browse files
committed
GoToSource - minor improvements, handling problems, plugin info
1 parent 9bdc174 commit 3c16105

File tree

5 files changed

+62
-22
lines changed

5 files changed

+62
-22
lines changed

plugins/sources/src/org/graalvm/visualvm/sources/SourceHandle.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,25 @@
4444
})
4545
public abstract class SourceHandle {
4646

47+
public static final SourceHandle EMPTY = new Empty();
48+
49+
4750
public static enum Feature {
4851

49-
LANGUAGE("{lang}", Bundle.SourceHandle_Language()), // NOI18N
52+
LANGUAGE("{lang}", Bundle.SourceHandle_Language()) {}, // NOI18N
5053

51-
CLASS("{class}", Bundle.SourceHandle_ClassName()), // NOI18N
52-
METHOD("{method}", Bundle.SourceHandle_MethodName()), // NOI18N
53-
SIGNATURE("{sig}", Bundle.SourceHandle_MethodSignature()), // NOI18N
54+
CLASS("{class}", Bundle.SourceHandle_ClassName()) {}, // NOI18N
55+
METHOD("{method}", Bundle.SourceHandle_MethodName()) {}, // NOI18N
56+
SIGNATURE("{sig}", Bundle.SourceHandle_MethodSignature()) {}, // NOI18N
5457

55-
LINE("{line}", Bundle.SourceHandle_SourceLine()), // NOI18N
56-
COLUMN("{column}", Bundle.SourceHandle_SourceColumn()), // NOI18N
57-
OFFSET("{offset}", Bundle.SourceHandle_SourceOffset()), // NOI18N
58+
LINE("{line}", Bundle.SourceHandle_SourceLine()) {}, // NOI18N
59+
COLUMN("{column}", Bundle.SourceHandle_SourceColumn()) {}, // NOI18N
60+
OFFSET("{offset}", Bundle.SourceHandle_SourceOffset()) {}, // NOI18N
5861

59-
TEXT("{text}", Bundle.SourceHandle_SourceText()), // NOI18N
62+
TEXT("{text}", Bundle.SourceHandle_SourceText()) {}, // NOI18N
6063

61-
URI("{uri}", Bundle.SourceHandle_SourceUri()), // NOI18N
62-
FILE("{file}", Bundle.SourceHandle_SourceFile()); // NOI18N
64+
URI("{uri}", Bundle.SourceHandle_SourceUri()) {}, // NOI18N
65+
FILE("{file}", Bundle.SourceHandle_SourceFile()) {}; // NOI18N
6366

6467

6568
private final String code;
@@ -164,4 +167,21 @@ public static String simpleUri(String uri) {
164167
return fileIndex == -1 ? uri : uri.substring(fileIndex + FILE_PREFIX.length());
165168
}
166169

170+
171+
private static final class Empty extends SourceHandle {
172+
173+
@Override public String getLanguage() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
174+
@Override public String getClassName() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
175+
@Override public String getMethodName() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
176+
@Override public String getMethodSignature() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
177+
@Override public int getLine() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
178+
@Override public int getColumn() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
179+
@Override public int getOffset() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
180+
@Override public String getText() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
181+
@Override public String getSourceUri() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
182+
@Override public String getSourceFile() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
183+
@Override protected void close() { throw new UnsupportedOperationException("Not supported."); } // NOI18N
184+
185+
}
186+
167187
}

plugins/sources/src/org/graalvm/visualvm/sources/VisualVMGoToSource.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@
4242
* @author Jiri Sedlacek
4343
*/
4444
@NbBundle.Messages({
45-
"VisualVMGoToSource_NoSourceRootsCaption=Go To Source", // NOI18N
45+
"VisualVMGoToSource_NoSourceRootsCaption=Go To Source", // NOI18N
4646
"VisualVMGoToSource_NoSourceRoots=<html><br><b>Source roots have not been defined yet.</b><br><br>Use Options | Sources | Definitions to define the directories or archives containing the sources.</html>", // NOI18N
47-
"VisualVMGoToSource_SourceNotFound=No source found for {0}", // NOI18N
47+
"VisualVMGoToSource_ClassSourceNotFound=No source found for {0}", // NOI18N
48+
"VisualVMGoToSource_MethodSourceNotFound=No source found for {0}.{1}", // NOI18N
4849
"VisualVMGoToSource_OpenSourceFailed=Failed to open source for {0}" // NOI18N
4950
})
5051
final class VisualVMGoToSource {
@@ -79,10 +80,14 @@ public boolean openSource(Lookup.Provider project, String className, String meth
7980
} else {
8081
for (SourceHandleProvider provider : SourceHandles.registeredProviders()) {
8182
SourceHandle handle = provider.createHandle(className, methodName, signature, line);
82-
if (handle != null) return openSourceImpl(handle);
83+
if (handle != null) return handle == SourceHandle.EMPTY ? true : openSourceImpl(handle);
8384
}
8485

85-
ProfilerDialogs.displayError(Bundle.VisualVMGoToSource_SourceNotFound(className));
86+
if (methodName == null || methodName.isEmpty() || "*".equals(methodName)) { // NOI18N
87+
ProfilerDialogs.displayError(Bundle.VisualVMGoToSource_ClassSourceNotFound(className));
88+
} else {
89+
ProfilerDialogs.displayError(Bundle.VisualVMGoToSource_MethodSourceNotFound(className, methodName));
90+
}
8691
}
8792

8893
return true;

plugins/sources/src/org/graalvm/visualvm/sources/options/SourcesOptionsPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@
9999
"SourcesOptionsPanel_ViewerCaption=Viewer", // NOI18N
100100
"SourcesOptionsPanel_OpenIn=&Open sources in:", // NOI18N
101101
"SourcesOptionsPanel_Config=Viewer settings:", // NOI18N
102-
"SourcesOptionsPanel_Add=Add new source root", // NOI18N
103-
"SourcesOptionsPanel_Delete=Delete selected source roots", // NOI18N
102+
"SourcesOptionsPanel_Add=Add new source root(s)", // NOI18N
103+
"SourcesOptionsPanel_Delete=Delete selected source root(s)", // NOI18N
104104
"SourcesOptionsPanel_MoveUp=Move selected source root up", // NOI18N
105105
"SourcesOptionsPanel_MoveDown=Move selected source root down", // NOI18N
106106
"SourcesOptionsPanel_SelectRootsCaption=Select Source Roots", // NOI18N

plugins/sources/src/org/graalvm/visualvm/sources/resources/Bundle.properties

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
# questions.
2424

2525

26-
OpenIDE-Module-Display-Category=Infrastructure
26+
OpenIDE-Module-Display-Category=Sources
2727
OpenIDE-Module-Long-Description=\
28-
Module to provide the Go To Source functionality in VisualVM
29-
OpenIDE-Module-Name=VisualVM-Sources
30-
OpenIDE-Module-Short-Description=Sources Support
28+
Module to provide the Go To Source functionality in VisualVM, including defining the source roots and external source viewers.\
29+
<BR><BR>\nVisit <A HREF='https://visualvm.github.io/sourcessupport.html'>https://visualvm.github.io/sourcessupport.html</A> for details on configuring and using the plugin.
30+
OpenIDE-Module-Name=VisualVM-GoToSource
31+
OpenIDE-Module-Short-Description=Go To Source Support

plugins/sources/src/org/graalvm/visualvm/sources/truffle/TruffleSourceHandleProvider.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,21 @@
2626

2727
import java.util.HashMap;
2828
import java.util.Map;
29+
import org.graalvm.visualvm.lib.profiler.api.ProfilerDialogs;
2930
import org.graalvm.visualvm.sources.SourceHandle;
3031
import org.graalvm.visualvm.sources.SourceHandleProvider;
3132
import org.graalvm.visualvm.sources.SourcePathHandle;
3233
import org.graalvm.visualvm.sources.SourcesRoot;
34+
import org.openide.util.NbBundle;
3335
import org.openide.util.lookup.ServiceProvider;
3436

3537
/**
3638
*
3739
* @author Jiri Sedlacek
3840
*/
41+
@NbBundle.Messages({
42+
"TruffleSourceHandleProvider_ObjectsNotSupported=Opening {0} objects source not supported yet." // NOI18N
43+
})
3944
@ServiceProvider(service=SourceHandleProvider.class, position = 50)
4045
public final class TruffleSourceHandleProvider extends SourceHandleProvider {
4146

@@ -55,9 +60,18 @@ public final class TruffleSourceHandleProvider extends SourceHandleProvider {
5560

5661

5762
@Override
58-
public SourceHandle createHandle(String className, String methodName, String methodSignature, int line) {
59-
String language = SUPPORTED_LANGUAGES.get(className);
63+
public SourceHandle createHandle(String className, String methodName, String methodSignature, int line) {
64+
int langIdIdx = className.indexOf("."); // NOI18N
65+
String langId = langIdIdx == -1 ? className : className.substring(0, langIdIdx);
66+
String language = SUPPORTED_LANGUAGES.get(langId);
67+
6068
if (language != null) {
69+
// if (langIdIdx != -1) className = className.substring(langIdIdx + 1);
70+
if (langIdIdx != -1) {
71+
ProfilerDialogs.displayError(Bundle.TruffleSourceHandleProvider_ObjectsNotSupported(language));
72+
return SourceHandle.EMPTY;
73+
}
74+
6175
String fileLine = methodSignature.substring(2, methodSignature.length() - 4);
6276
String[] fileAndLine = fileLine.split(":"); // NOI18N
6377

0 commit comments

Comments
 (0)