Skip to content

Commit d695b05

Browse files
committed
refactor: optional setup detectors
1 parent 5f271fd commit d695b05

File tree

4 files changed

+97
-91
lines changed

4 files changed

+97
-91
lines changed

marker/js-marker/src/main/kotlin/spp/jetbrains/marker/js/JavascriptLanguageProvider.kt

+32-30
Original file line numberDiff line numberDiff line change
@@ -50,43 +50,45 @@ class JavascriptLanguageProvider : LanguageProvider {
5050

5151
override fun canSetup() = classExists("com.intellij.lang.javascript.psi.impl.JSElementImpl")
5252

53-
override fun setup(project: Project) {
53+
override fun setup(project: Project, setupDetectors: Boolean) {
5454
SourceFileMarker.SUPPORTED_FILE_TYPES.add(JSFile::class.java)
5555

56-
val endpointDetector = AggregateEndpointDetector(
57-
project,
58-
mutableListOf<EndpointDetector<*>>().apply {
59-
getUltimateProvider(project)?.let { addAll(it.getEndpointDetectors(project)) }
60-
add(JavascriptEndpointDetector(project))
61-
}
62-
)
63-
val loggerDetector = JavascriptLoggerDetector(project)
64-
65-
SourceMarker.getInstance(project).addGlobalSourceMarkEventListener(SynchronousSourceMarkEventListener {
66-
if (it.eventCode == SourceMarkEventCode.MARK_BEFORE_ADDED) {
67-
val mark = it.sourceMark
68-
if (!SourceMarkerUtils.isJavaScript(it.sourceMark.language)) {
69-
return@SynchronousSourceMarkEventListener //non-javascript language
56+
if (setupDetectors) {
57+
val endpointDetector = AggregateEndpointDetector(
58+
project,
59+
mutableListOf<EndpointDetector<*>>().apply {
60+
getUltimateProvider(project)?.let { addAll(it.getEndpointDetectors(project)) }
61+
add(JavascriptEndpointDetector(project))
7062
}
63+
)
64+
val loggerDetector = JavascriptLoggerDetector(project)
7165

72-
//setup endpoint detector and attempt detection
73-
if (mark is GuideMark) {
74-
mark.putUserData(SourceMarkerKeys.ENDPOINT_DETECTOR, endpointDetector)
75-
UserData.vertx(project).doOnWorker { endpointDetector.getOrFindEndpointIds(mark) }
76-
}
66+
SourceMarker.getInstance(project).addGlobalSourceMarkEventListener(SynchronousSourceMarkEventListener {
67+
if (it.eventCode == SourceMarkEventCode.MARK_BEFORE_ADDED) {
68+
val mark = it.sourceMark
69+
if (!SourceMarkerUtils.isJavaScript(it.sourceMark.language)) {
70+
return@SynchronousSourceMarkEventListener //non-javascript language
71+
}
7772

78-
//setup logger detector
79-
if (mark is InlayMark) {
80-
//add logger detector to all inlay marks as live logs can be placed anywhere
81-
mark.putUserData(SourceMarkerKeys.LOGGER_DETECTOR, loggerDetector)
82-
}
73+
//setup endpoint detector and attempt detection
74+
if (mark is GuideMark) {
75+
mark.putUserData(SourceMarkerKeys.ENDPOINT_DETECTOR, endpointDetector)
76+
UserData.vertx(project).doOnWorker { endpointDetector.getOrFindEndpointIds(mark) }
77+
}
8378

84-
//attempt to detect logger(s) on method guide marks
85-
if (mark is MethodGuideMark) {
86-
UserData.vertx(project).doOnWorker { loggerDetector.determineLoggerStatements(mark) }
79+
//setup logger detector
80+
if (mark is InlayMark) {
81+
//add logger detector to all inlay marks as live logs can be placed anywhere
82+
mark.putUserData(SourceMarkerKeys.LOGGER_DETECTOR, loggerDetector)
83+
}
84+
85+
//attempt to detect logger(s) on method guide marks
86+
if (mark is MethodGuideMark) {
87+
UserData.vertx(project).doOnWorker { loggerDetector.determineLoggerStatements(mark) }
88+
}
8789
}
88-
}
89-
})
90+
})
91+
}
9092

9193
SourceMarkerUtils.getJavaScriptLanguages().let {
9294
ArtifactMarkService.addService(JavascriptArtifactMarkService(), it)

marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMLanguageProvider.kt

+32-30
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class JVMLanguageProvider : LanguageProvider {
5353

5454
override fun canSetup() = classExists("com.intellij.psi.PsiJavaFile")
5555

56-
override fun setup(project: Project) {
56+
override fun setup(project: Project, setupDetectors: Boolean) {
5757
SUPPORTED_FILE_TYPES.add(PsiJavaFile::class.java)
5858
if (classExists("org.jetbrains.plugins.groovy.lang.psi.GroovyFile")) {
5959
SUPPORTED_FILE_TYPES.add(GroovyFile::class.java)
@@ -62,40 +62,42 @@ class JVMLanguageProvider : LanguageProvider {
6262
SUPPORTED_FILE_TYPES.add(KtFile::class.java)
6363
}
6464

65-
val endpointDetector = AggregateEndpointDetector(
66-
project,
67-
mutableListOf<EndpointDetector<*>>().apply {
68-
getUltimateProvider(project)?.let { addAll(it.getEndpointDetectors(project)) }
69-
add(JVMEndpointDetector(project))
70-
}
71-
)
72-
val loggerDetector = JVMLoggerDetector(project)
73-
74-
SourceMarker.getInstance(project).addGlobalSourceMarkEventListener(SynchronousSourceMarkEventListener {
75-
if (it.eventCode == SourceMarkEventCode.MARK_BEFORE_ADDED) {
76-
val mark = it.sourceMark
77-
if (!SourceMarkerUtils.isJvm(it.sourceMark.language)) {
78-
return@SynchronousSourceMarkEventListener //non-jvm language
65+
if (setupDetectors) {
66+
val endpointDetector = AggregateEndpointDetector(
67+
project,
68+
mutableListOf<EndpointDetector<*>>().apply {
69+
getUltimateProvider(project)?.let { addAll(it.getEndpointDetectors(project)) }
70+
add(JVMEndpointDetector(project))
7971
}
72+
)
73+
val loggerDetector = JVMLoggerDetector(project)
8074

81-
//setup endpoint detector and attempt detection
82-
if (mark is GuideMark) {
83-
mark.putUserData(ENDPOINT_DETECTOR, endpointDetector)
84-
UserData.vertx(project).doOnWorker { endpointDetector.getOrFindEndpointIds(mark) }
85-
}
75+
SourceMarker.getInstance(project).addGlobalSourceMarkEventListener(SynchronousSourceMarkEventListener {
76+
if (it.eventCode == SourceMarkEventCode.MARK_BEFORE_ADDED) {
77+
val mark = it.sourceMark
78+
if (!SourceMarkerUtils.isJvm(it.sourceMark.language)) {
79+
return@SynchronousSourceMarkEventListener //non-jvm language
80+
}
8681

87-
//setup logger detector
88-
if (mark is InlayMark) {
89-
//add logger detector to all inlay marks as live logs can be placed anywhere
90-
mark.putUserData(LOGGER_DETECTOR, loggerDetector)
91-
}
82+
//setup endpoint detector and attempt detection
83+
if (mark is GuideMark) {
84+
mark.putUserData(ENDPOINT_DETECTOR, endpointDetector)
85+
UserData.vertx(project).doOnWorker { endpointDetector.getOrFindEndpointIds(mark) }
86+
}
9287

93-
//attempt to detect logger(s) on method guide marks
94-
if (mark is MethodGuideMark) {
95-
UserData.vertx(project).doOnWorker { loggerDetector.determineLoggerStatements(mark) }
88+
//setup logger detector
89+
if (mark is InlayMark) {
90+
//add logger detector to all inlay marks as live logs can be placed anywhere
91+
mark.putUserData(LOGGER_DETECTOR, loggerDetector)
92+
}
93+
94+
//attempt to detect logger(s) on method guide marks
95+
if (mark is MethodGuideMark) {
96+
UserData.vertx(project).doOnWorker { loggerDetector.determineLoggerStatements(mark) }
97+
}
9698
}
97-
}
98-
})
99+
})
100+
}
99101

100102
SourceMarkerUtils.getJvmLanguages().let {
101103
ArtifactMarkService.addService(JVMArtifactMarkService(), it)

marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonLanguageProvider.kt

+32-30
Original file line numberDiff line numberDiff line change
@@ -49,43 +49,45 @@ class PythonLanguageProvider : LanguageProvider {
4949

5050
override fun canSetup() = classExists("com.jetbrains.python.psi.PyElement")
5151

52-
override fun setup(project: Project) {
52+
override fun setup(project: Project, setupDetectors: Boolean) {
5353
SourceFileMarker.SUPPORTED_FILE_TYPES.add(PyFile::class.java)
5454

55-
val endpointDetector = AggregateEndpointDetector(
56-
project,
57-
mutableListOf<EndpointDetector<*>>().apply {
58-
getUltimateProvider(project)?.let { addAll(it.getEndpointDetectors(project)) }
59-
add(PythonEndpointDetector(project))
60-
}
61-
)
62-
val loggerDetector = PythonLoggerDetector(project)
63-
64-
SourceMarker.getInstance(project).addGlobalSourceMarkEventListener(SynchronousSourceMarkEventListener {
65-
if (it.eventCode == SourceMarkEventCode.MARK_BEFORE_ADDED) {
66-
val mark = it.sourceMark
67-
if (it.sourceMark.language.id != "Python") {
68-
return@SynchronousSourceMarkEventListener
55+
if (setupDetectors) {
56+
val endpointDetector = AggregateEndpointDetector(
57+
project,
58+
mutableListOf<EndpointDetector<*>>().apply {
59+
getUltimateProvider(project)?.let { addAll(it.getEndpointDetectors(project)) }
60+
add(PythonEndpointDetector(project))
6961
}
62+
)
63+
val loggerDetector = PythonLoggerDetector(project)
7064

71-
//setup endpoint detector and attempt detection
72-
if (mark is GuideMark) {
73-
mark.putUserData(SourceMarkerKeys.ENDPOINT_DETECTOR, endpointDetector)
74-
UserData.vertx(project).doOnWorker { endpointDetector.getOrFindEndpointIds(mark) }
75-
}
65+
SourceMarker.getInstance(project).addGlobalSourceMarkEventListener(SynchronousSourceMarkEventListener {
66+
if (it.eventCode == SourceMarkEventCode.MARK_BEFORE_ADDED) {
67+
val mark = it.sourceMark
68+
if (it.sourceMark.language.id != "Python") {
69+
return@SynchronousSourceMarkEventListener
70+
}
7671

77-
//setup logger detector
78-
if (mark is InlayMark) {
79-
//add logger detector to all inlay marks as live logs can be placed anywhere
80-
mark.putUserData(SourceMarkerKeys.LOGGER_DETECTOR, loggerDetector)
81-
}
72+
//setup endpoint detector and attempt detection
73+
if (mark is GuideMark) {
74+
mark.putUserData(SourceMarkerKeys.ENDPOINT_DETECTOR, endpointDetector)
75+
UserData.vertx(project).doOnWorker { endpointDetector.getOrFindEndpointIds(mark) }
76+
}
77+
78+
//setup logger detector
79+
if (mark is InlayMark) {
80+
//add logger detector to all inlay marks as live logs can be placed anywhere
81+
mark.putUserData(SourceMarkerKeys.LOGGER_DETECTOR, loggerDetector)
82+
}
8283

83-
//attempt to detect logger(s) on method guide marks
84-
if (mark is MethodGuideMark) {
85-
UserData.vertx(project).doOnWorker { loggerDetector.determineLoggerStatements(mark) }
84+
//attempt to detect logger(s) on method guide marks
85+
if (mark is MethodGuideMark) {
86+
UserData.vertx(project).doOnWorker { loggerDetector.determineLoggerStatements(mark) }
87+
}
8688
}
87-
}
88-
})
89+
})
90+
}
8991

9092
ArtifactMarkService.addService(PythonArtifactMarkService(), "Python")
9193
ArtifactCreationService.addService(PythonArtifactCreationService(), "Python")

marker/src/main/kotlin/spp/jetbrains/marker/LanguageProvider.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import java.util.*
2121

2222
interface LanguageProvider {
2323
fun canSetup(): Boolean
24-
fun setup(project: Project)
24+
fun setup(project: Project, setupDetectors: Boolean = true)
2525

2626
fun getUltimateProvider(project: Project): UltimateProvider? {
2727
val ultimateProvider: UltimateProvider?

0 commit comments

Comments
 (0)