From 1717e12ce423f4fea7ce18a5ebe3a6353ec7572a Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 31 Jan 2022 23:32:10 -0500 Subject: [PATCH 01/42] protocol update --- .../sourcemarker/status/LogStatusBar.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java index 9773078d1..bd77a3853 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java @@ -25,7 +25,6 @@ import spp.jetbrains.sourcemarker.service.log.LogHitColumnInfo; import spp.jetbrains.sourcemarker.settings.LiveLogConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import spp.protocol.SourceMarkerServices; import spp.protocol.artifact.log.Log; import spp.protocol.instrument.InstrumentThrottle; import spp.protocol.instrument.LiveInstrument; @@ -34,7 +33,6 @@ import spp.protocol.instrument.ThrottleStep; import spp.protocol.instrument.log.LiveLog; import spp.protocol.instrument.log.event.LiveLogRemoved; -import spp.protocol.service.live.LiveInstrumentService; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -58,7 +56,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; @@ -67,7 +64,6 @@ import java.util.stream.Collectors; import static spp.jetbrains.marker.SourceMarker.conditionParser; -import static spp.jetbrains.sourcemarker.PluginUI.BGND_FOCUS_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.CNFG_PANEL_BGND_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.CNFG_PANEL_FOCUS_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.COMPLETE_COLOR_PURPLE; @@ -77,6 +73,7 @@ import static spp.jetbrains.sourcemarker.PluginUI.STATUS_BAR_TXT_BG_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.DFLT_BGND_COLOR; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; import static spp.protocol.instrument.LiveInstrumentEventType.LOG_HIT; import static spp.protocol.instrument.LiveInstrumentEventType.LOG_REMOVED; @@ -195,7 +192,7 @@ public void setLatestLog(Instant time, Log latestLog) { this.latestLog = latestLog; String formattedTime = time.atZone(ZoneId.systemDefault()).format(TIME_FORMATTER); - String formattedMessage = latestLog.getFormattedMessage(); + String formattedMessage = latestLog.toFormattedMessage(); if (!timeLabel.getText().equals(formattedTime) || !liveLogTextField.getText().equals(formattedMessage)) { SwingUtilities.invokeLater(() -> { if (liveLogTextField.getEditMode()) { @@ -562,7 +559,7 @@ private void saveLiveLog() { latestTime = null; latestLog = null; - SourceMarkerServices.Instance.INSTANCE.getLiveInstrument().removeLiveInstrument(oldLiveLog.getId(), it -> { + INSTANCE.getLiveInstrument().removeLiveInstrument(oldLiveLog.getId()).onComplete(it -> { if (it.succeeded()) { LiveStatusManager.INSTANCE.removeActiveLiveInstrument(oldLiveLog); } else { @@ -598,7 +595,6 @@ private void saveLiveLog() { HashMap meta = new HashMap<>(); meta.put("original_source_mark", inlayMark.getId()); - LiveInstrumentService instrumentService = Objects.requireNonNull(SourceMarkerServices.Instance.INSTANCE.getLiveInstrument()); LiveLog instrument = new LiveLog( finalLogPattern, resp.second.stream().map(it -> it.substring(1)).collect(Collectors.toList()), @@ -621,7 +617,7 @@ private void saveLiveLog() { displayTimeField(); wrapper.grabFocus(); - instrumentService.addLiveInstrument(instrument, it -> { + INSTANCE.getLiveInstrument().addLiveInstrument(instrument).onComplete(it -> { if (it.succeeded()) { liveLog = (LiveLog) it.result(); inlayMark.putUserData(SourceMarkKeys.INSTANCE.getLOG_ID(), it.result().getId()); @@ -646,7 +642,7 @@ private void dispose() { inlayMark.dispose(true); if (liveLog != null) { - SourceMarkerServices.Instance.INSTANCE.getLiveInstrument().removeLiveInstrument(liveLog.getId(), it -> { + INSTANCE.getLiveInstrument().removeLiveInstrument(liveLog.getId()).onComplete(it -> { if (it.succeeded()) { LiveStatusManager.INSTANCE.removeActiveLiveInstrument(liveLog); } else { From 426b2c3991f0fef815d4e78da04420184d10cce9 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 31 Jan 2022 23:37:46 -0500 Subject: [PATCH 02/42] bump --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a54f33148..72a6882c6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ kotlin.code.style=official pluginGroup = spp.jetbrains pluginName = Source++ -projectVersion=0.3.0 +projectVersion=0.3.1 pluginSinceBuild = 202.4357 # Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl # See https://jb.gg/intellij-platform-builds-list for available build versions From 2309c7d777b16db12d4dd90ea04087d16882e836 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 00:23:42 -0500 Subject: [PATCH 03/42] refactor --- .../sourcemarker/discover/TCPServiceDiscoveryBackend.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt index 77accb813..367ba3b99 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt @@ -42,11 +42,10 @@ import spp.jetbrains.sourcemarker.SourceMarkerPlugin import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import spp.jetbrains.sourcemarker.settings.isSsl import spp.jetbrains.sourcemarker.settings.serviceHostNormalized -import spp.protocol.SourceMarkerServices import spp.protocol.SourceMarkerServices.Utilize import spp.protocol.extend.TCPServiceFrameParser import spp.protocol.platform.PlatformAddress -import spp.protocol.status.MarkerConnection +import spp.protocol.status.InstanceConnection import java.util.* /** @@ -123,12 +122,11 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { setupHandler(vertx, Utilize.LIVE_SERVICE) setupHandler(vertx, Utilize.LIVE_INSTRUMENT) setupHandler(vertx, Utilize.LIVE_VIEW) - setupHandler(vertx, Utilize.LOCAL_TRACING) setupHandler(vertx, Utilize.LOG_COUNT_INDICATOR) //setup connection val replyAddress = UUID.randomUUID().toString() - val pc = MarkerConnection(SourceMarkerPlugin.INSTANCE_ID, System.currentTimeMillis()) + val pc = InstanceConnection(SourceMarkerPlugin.INSTANCE_ID, System.currentTimeMillis()) val consumer: MessageConsumer = vertx.eventBus().localConsumer("local.$replyAddress") val promise = Promise.promise() From 97c9f98c1e630c39b4f75600e9bd2781754e8dd5 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 10:47:04 -0500 Subject: [PATCH 04/42] refactor --- .../command/ControlBarController.kt | 33 ++++++++++++++----- .../command/LiveControlCommand.kt | 6 ++++ .../service/LiveInstrumentManager.kt | 2 +- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt index 7dc1ebdea..2b8a2fc0c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt @@ -21,7 +21,6 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiDocumentManager -import io.vertx.core.Promise import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import org.slf4j.LoggerFactory @@ -41,7 +40,7 @@ import spp.jetbrains.sourcemarker.mark.SourceMarkKeys import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.SetCurrentPage import spp.protocol.SourceMarkerServices -import spp.protocol.developer.SelfInfo +import spp.protocol.instrument.LiveInstrumentType.* import spp.protocol.portal.PageType import java.awt.BorderLayout import javax.swing.JComponent @@ -59,9 +58,7 @@ object ControlBarController { private var previousControlBar: InlayMark? = null private val availableCommands by lazy { runBlocking { - val future = Promise.promise() - SourceMarkerServices.Instance.liveService!!.getSelf(future) - val selfInfo = future.future().await() + val selfInfo = SourceMarkerServices.Instance.liveService!!.getSelf().await() LiveControlCommand.values().toList().filter { @Suppress("UselessCallOnCollection") //unknown enums are null selfInfo.permissions.filterNotNull().map { it.name }.contains(it.name) @@ -119,7 +116,7 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveBreakpoints { + SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(BREAKPOINT).onComplete { if (it.failed()) { log.error("Failed to clear live breakpoints", it.cause()) } @@ -129,17 +126,37 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveLogs { + SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(LOG).onComplete { if (it.failed()) { log.error("Failed to clear live logs", it.cause()) } } } + CLEAR_LIVE_METERS.command -> { + previousControlBar!!.dispose() + previousControlBar = null + + SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(METER).onComplete { + if (it.failed()) { + log.error("Failed to clear live meters", it.cause()) + } + } + } + CLEAR_LIVE_SPANS.command -> { + previousControlBar!!.dispose() + previousControlBar = null + + SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(SPAN).onComplete { + if (it.failed()) { + log.error("Failed to clear live spans", it.cause()) + } + } + } CLEAR_LIVE_INSTRUMENTS.command -> { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments { + SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(null).onComplete { if (it.failed()) { log.error("Failed to clear live instruments", it.cause()) } diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/LiveControlCommand.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/LiveControlCommand.kt index 70682babf..e24fc939b 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/LiveControlCommand.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/LiveControlCommand.kt @@ -107,6 +107,12 @@ enum class LiveControlCommand( "Clear all self-created live meters", PluginIcons.Command.clearInstrumentSelected, PluginIcons.Command.clearInstrumentUnSelected + ), + CLEAR_LIVE_SPANS( + "Clear Spans", + "Clear all self-created live spans", + PluginIcons.Command.clearInstrumentSelected, + PluginIcons.Command.clearInstrumentUnSelected ); override fun getText(): String { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index 7371c8674..8b7ab2005 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -87,7 +87,7 @@ class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() ) //show live status bars - Instance.liveInstrument!!.getLiveInstruments { + Instance.liveInstrument!!.getLiveInstruments(null).onComplete { if (it.succeeded()) { log.info("Found {} active live status bars", it.result().size) LiveStatusManager.addActiveLiveInstruments(it.result()) From cf5bd2813d5a3849dc9079c953d0998b10cd12cf Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 11:18:51 -0500 Subject: [PATCH 05/42] refactor --- .../marker/jvm/psi/PluginSqlProducerSearch.kt | 136 --------------- .../jvm/psi/sqlsource/SpringDataSqlSource.kt | 76 -------- .../settings/PluginConfigurationPanel.java | 2 +- .../status/BreakpointStatusBar.java | 9 +- .../status/LiveMeterStatusPanel.java | 4 +- .../sourcemarker/status/MeterStatusBar.java | 8 +- .../sourcemarker/status/SpanStatusBar.java | 8 +- .../sourcemarker/SourceMarkerPlugin.kt | 16 -- .../sourcemarker/icons/SourceMarkerIcons.kt | 11 -- .../listeners/ArtifactAdviceListener.kt | 123 ------------- .../PluginSourceMarkEventListener.kt | 2 - .../listeners/PortalEventListener.kt | 65 +------ .../mark/SourceMarkConstructor.kt | 162 ------------------ .../sourcemarker/mark/SourceMarkKeys.kt | 2 - .../service/LogCountIndicators.kt | 2 +- .../service/log/LogHitColumnInfo.kt | 2 +- .../sourcemarker/status/LiveStatusManager.kt | 9 +- .../jetbrains/StandaloneActivityLiveView.kt | 11 +- 18 files changed, 28 insertions(+), 620 deletions(-) delete mode 100644 marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/PluginSqlProducerSearch.kt delete mode 100644 marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/sqlsource/SpringDataSqlSource.kt delete mode 100644 plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/ArtifactAdviceListener.kt delete mode 100644 plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkConstructor.kt diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/PluginSqlProducerSearch.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/PluginSqlProducerSearch.kt deleted file mode 100644 index 50904504c..000000000 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/PluginSqlProducerSearch.kt +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Source++, the open-source live coding platform. - * Copyright (C) 2022 CodeBrig, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package spp.jetbrains.marker.jvm.psi - -import com.intellij.openapi.application.ApplicationManager -import com.intellij.psi.PsiMethod -import com.intellij.psi.impl.compiled.ClsMethodImpl -import com.intellij.psi.search.searches.OverridingMethodsSearch -import spp.jetbrains.marker.jvm.ArtifactSearch -import spp.jetbrains.marker.source.JVMMarkerUtils -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType -import spp.protocol.extend.SqlProducerSearch -import spp.jetbrains.marker.jvm.psi.sqlsource.SpringDataSqlSource -import io.vertx.core.Promise -import io.vertx.core.Vertx -import io.vertx.kotlin.coroutines.await -import io.vertx.kotlin.coroutines.dispatcher -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import org.jetbrains.uast.UCallExpression -import org.jetbrains.uast.UMethod -import org.jetbrains.uast.toUElementOfType -import org.jetbrains.uast.visitor.AbstractUastVisitor -import org.jooq.Query -import org.slf4j.LoggerFactory -import java.util.* - -/** - * todo: description. - * - * @since 0.1.0 - * @author [Brandon Fergerson](mailto:bfergerson@apache.org) - */ -class PluginSqlProducerSearch(val vertx: Vertx) : SqlProducerSearch { - - companion object { - private val log = LoggerFactory.getLogger(PluginSqlProducerSearch::class.java) - } - - private val detectorSet = setOf( - SpringDataSqlSource() - ) - - val possibleRegressionSources = mutableListOf() - - override suspend fun determineSource( - query: Query, - searchPoint: ArtifactQualifiedName - ): Optional { - val promise = Promise.promise>() - val searchArtifact = ArtifactSearch.findArtifact(vertx ,searchPoint) - if (searchArtifact == null) { - promise.fail("Could not determine search point artifact") - return promise.future().await() - } - - ApplicationManager.getApplication().runReadAction { - dependencySearch(searchArtifact.toUElementOfType()!!) - - GlobalScope.launch(vertx.dispatcher()) { - var keepSearching = true - for (method in possibleRegressionSources) { //todo: fix dupes - for (detector in detectorSet) { - try { - if (detector.isSqlSource(query, method)) { - promise.complete(Optional.of(JVMMarkerUtils.getFullyQualifiedName(method.method))) - keepSearching = false - } - } catch (throwable: Throwable) { - promise.fail(throwable) - } - if (!keepSearching) break - } - if (!keepSearching) break - } - promise.tryComplete(Optional.empty()) - } - } - return promise.future().await() - } - - private fun dependencySearch(method: UMethod) { - method.accept(object : AbstractUastVisitor() { - override fun visitCallExpression(node: UCallExpression): Boolean { - val calledMethod = node.resolve() - if (calledMethod != null) { - if (calledMethod.body == null) { - possibleRegressionSources.add(CalledMethod(node, calledMethod)) - - if (calledMethod !is ClsMethodImpl) { - //interface/abstract method; search implementations - val implMethods = OverridingMethodsSearch.search(calledMethod).toList() - implMethods.forEach { - dependencySearch(it.toUElementOfType()!!) - } - } - } - } else { - log.warn("Failed to resolve: $node") - } - return super.visitCallExpression(node) - } - }) - } - - /** - * todo: description. - */ - interface SqlSourceDeterminer { - fun isSqlSource(query: Query, calledMethod: CalledMethod): Boolean - } - - /** - * todo: description. - */ - data class CalledMethod( - val call: UCallExpression, - val method: PsiMethod - ) -} diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/sqlsource/SpringDataSqlSource.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/sqlsource/SpringDataSqlSource.kt deleted file mode 100644 index 9233d5d26..000000000 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/sqlsource/SpringDataSqlSource.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Source++, the open-source live coding platform. - * Copyright (C) 2022 CodeBrig, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package spp.jetbrains.marker.jvm.psi.sqlsource - -import com.intellij.psi.impl.compiled.ClsMethodImpl -import com.intellij.psi.util.PsiUtil -import spp.jetbrains.marker.jvm.psi.PluginSqlProducerSearch -import spp.jetbrains.marker.jvm.psi.PluginSqlProducerSearch.CalledMethod -import org.jooq.Query - -/** - * todo: description. - * - * @since 0.1.0 - * @author [Brandon Fergerson](mailto:bfergerson@apache.org) - */ -class SpringDataSqlSource : PluginSqlProducerSearch.SqlSourceDeterminer { - - private val findAll = "org.springframework.data.repository.CrudRepository.findAll" - - override fun isSqlSource(query: Query, calledMethod: CalledMethod): Boolean { - if (calledMethod.method is ClsMethodImpl) { - if (PsiUtil.getMemberQualifiedName(calledMethod.method) == findAll) { - //todo: more strict verification - //java.lang.Iterable - val iterableType = calledMethod.call.returnType!!.canonicalText - val queryType = iterableType.substring(0, iterableType.length - 1) - .replace("java.lang.Iterable<", "") - var tableName = queryType - if (tableName.contains(".")) { - tableName = tableName.substring(tableName.lastIndexOf(".") + 1).toUpperCase() - } - val tableNames = query.tableNames() - if (tableNames.size == 1) { - return tableNames[0] == tableName - } - return false - } else { - return false - } - } else { - return false - } - } - - //todo: remove when jooq offers public access to parsed queries - private fun Query.tableNames(): List { - val fromField = javaClass.getDeclaredField("from") - fromField.isAccessible = true - val fromTables = fromField.get(this) as List<*> - return fromTables.map { - val aliasField = it!!.javaClass.getDeclaredField("alias") - aliasField.isAccessible = true - val alias = aliasField.get(it) - val wrappedField = alias.javaClass.getDeclaredField("wrapped") - wrappedField.isAccessible = true - val wrapped = wrappedField.get(alias) - wrapped.toString() - } - } -} diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java index 9bf8acbd8..9a99bbc61 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java @@ -46,7 +46,7 @@ public PluginConfigurationPanel(SourceMarkerConfig config) { myGlobalSettingsPanel.setBorder(IdeBorderFactory.createTitledBorder(message("plugin_settings"))); if (INSTANCE.getLiveService() != null) { - INSTANCE.getLiveService().getServices(it -> { + INSTANCE.getLiveService().getServices().onComplete(it -> { if (it.succeeded()) { it.result().forEach(service -> serviceComboBox.addItem(service.getName())); diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java index b70c3ca9a..ab3d1d9e6 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java @@ -25,7 +25,6 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService; import spp.jetbrains.sourcemarker.settings.LiveBreakpointConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import spp.protocol.SourceMarkerServices; import spp.protocol.instrument.InstrumentThrottle; import spp.protocol.instrument.LiveInstrument; import spp.protocol.instrument.LiveInstrumentEvent; @@ -34,7 +33,6 @@ import spp.protocol.instrument.breakpoint.LiveBreakpoint; import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit; import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved; -import spp.protocol.service.live.LiveInstrumentService; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -53,7 +51,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Objects; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; @@ -62,6 +59,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; import static spp.protocol.instrument.LiveInstrumentEventType.BREAKPOINT_HIT; import static spp.protocol.instrument.LiveInstrumentEventType.BREAKPOINT_REMOVED; @@ -444,7 +442,6 @@ private void saveLiveBreakpoint() { HashMap meta = new HashMap<>(); meta.put("original_source_mark", inlayMark.getId()); - LiveInstrumentService instrumentService = Objects.requireNonNull(SourceMarkerServices.Instance.INSTANCE.getLiveInstrument()); LiveBreakpoint instrument = new LiveBreakpoint( sourceLocation, condition, @@ -457,7 +454,7 @@ private void saveLiveBreakpoint() { throttle, meta ); - instrumentService.addLiveInstrument(instrument, it -> { + INSTANCE.getLiveInstrument().addLiveInstrument(instrument).onComplete(it -> { if (it.succeeded()) { liveBreakpoint = (LiveBreakpoint) it.result(); inlayMark.putUserData(SourceMarkKeys.INSTANCE.getBREAKPOINT_ID(), liveBreakpoint.getId()); @@ -481,7 +478,7 @@ private void dispose() { if (groupedMarks != null) groupedMarks.forEach(SourceMark::dispose); if (liveBreakpoint != null) { - SourceMarkerServices.Instance.INSTANCE.getLiveInstrument().removeLiveInstrument(liveBreakpoint.getId(), it -> { + INSTANCE.getLiveInstrument().removeLiveInstrument(liveBreakpoint.getId()).onComplete(it -> { if (it.succeeded()) { LiveStatusManager.INSTANCE.removeActiveLiveInstrument(liveBreakpoint); } else { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java index 368dae66c..02c42d4e2 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java @@ -9,7 +9,6 @@ import spp.jetbrains.sourcemarker.service.InstrumentEventListener; import io.vertx.core.json.JsonObject; import org.jetbrains.annotations.NotNull; -import spp.protocol.SourceMarkerServices; import spp.protocol.instrument.LiveInstrumentEvent; import spp.protocol.instrument.meter.LiveMeter; import spp.protocol.instrument.meter.MeterType; @@ -23,6 +22,7 @@ import static spp.jetbrains.sourcemarker.PluginUI.LABEL_FOREGROUND_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_15; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; public class LiveMeterStatusPanel extends JPanel implements InstrumentEventListener { @@ -96,7 +96,7 @@ public void mouseMoved(MouseEvent e) { addRecursiveMouseListener(closeLabel, new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { - SourceMarkerServices.Instance.INSTANCE.getLiveInstrument().removeLiveInstrument(liveMeter.getId(), it -> { + INSTANCE.getLiveInstrument().removeLiveInstrument(liveMeter.getId()).onComplete(it -> { if (it.succeeded()) { gutterMark.dispose(); LiveStatusManager.INSTANCE.removeActiveLiveInstrument(liveMeter); diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java index ba2d19216..8718494f0 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java @@ -21,7 +21,6 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitColumnInfo; import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import spp.protocol.SourceMarkerServices; import spp.protocol.instrument.LiveInstrument; import spp.protocol.instrument.LiveSourceLocation; import spp.protocol.instrument.meter.LiveMeter; @@ -29,7 +28,6 @@ import spp.protocol.instrument.meter.MetricValue; import spp.protocol.instrument.meter.MetricValueType; import spp.protocol.instrument.meter.event.LiveMeterRemoved; -import spp.protocol.service.live.LiveInstrumentService; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -46,6 +44,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; import static spp.protocol.instrument.LiveInstrumentEventType.METER_REMOVED; public class MeterStatusBar extends JPanel implements StatusBar, VisibleAreaListener { @@ -357,7 +356,6 @@ private void saveLiveMeter() { HashMap meta = new HashMap<>(); meta.put("original_source_mark", inlayMark.getId()); - LiveInstrumentService instrumentService = Objects.requireNonNull(SourceMarkerServices.Instance.INSTANCE.getLiveInstrument()); LiveMeter instrument = new LiveMeter( meterNameField.getText(), MeterType.valueOf(meterTypeComboBox.getSelectedItem().toString().toUpperCase()), @@ -373,7 +371,7 @@ private void saveLiveMeter() { null, meta ); - instrumentService.addLiveInstrument(instrument, it -> { + INSTANCE.getLiveInstrument().addLiveInstrument(instrument).onComplete(it -> { if (it.succeeded()) { liveMeter = (LiveMeter) it.result(); LiveStatusManager.INSTANCE.addActiveLiveInstrument(liveMeter); @@ -404,7 +402,7 @@ private void dispose() { if (groupedMarks != null) groupedMarks.forEach(SourceMark::dispose); if (liveMeter != null) { - SourceMarkerServices.Instance.INSTANCE.getLiveInstrument().removeLiveInstrument(liveMeter.getId(), it -> { + INSTANCE.getLiveInstrument().removeLiveInstrument(liveMeter.getId()).onComplete(it -> { if (it.succeeded()) { LiveStatusManager.INSTANCE.removeActiveLiveInstrument(liveMeter); } else { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java index cc33d8549..c656b0b47 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java @@ -21,12 +21,10 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitColumnInfo; import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import spp.protocol.SourceMarkerServices; import spp.protocol.instrument.LiveInstrument; import spp.protocol.instrument.LiveSourceLocation; import spp.protocol.instrument.meter.event.LiveMeterRemoved; import spp.protocol.instrument.span.LiveSpan; -import spp.protocol.service.live.LiveInstrumentService; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -43,6 +41,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; import static spp.protocol.instrument.LiveInstrumentEventType.METER_REMOVED; public class SpanStatusBar extends JPanel implements StatusBar, VisibleAreaListener { @@ -344,7 +343,6 @@ private void saveLiveSpan() { HashMap meta = new HashMap<>(); meta.put("original_source_mark", inlayMark.getId()); - LiveInstrumentService instrumentService = Objects.requireNonNull(SourceMarkerServices.Instance.INSTANCE.getLiveInstrument()); LiveSpan instrument = new LiveSpan( spanOperationNameField.getText(), sourceLocation, @@ -358,7 +356,7 @@ private void saveLiveSpan() { null, meta ); - instrumentService.addLiveInstrument(instrument, it -> { + INSTANCE.getLiveInstrument().addLiveInstrument(instrument).onComplete(it -> { if (it.succeeded()) { liveSpan = (LiveSpan) it.result(); LiveStatusManager.INSTANCE.addActiveLiveInstrument(liveSpan); @@ -385,7 +383,7 @@ private void dispose() { if (groupedMarks != null) groupedMarks.forEach(SourceMark::dispose); if (liveSpan != null) { - SourceMarkerServices.Instance.INSTANCE.getLiveInstrument().removeLiveInstrument(liveSpan.getId(), it -> { + INSTANCE.getLiveInstrument().removeLiveInstrument(liveSpan.getId()).onComplete(it -> { if (it.succeeded()) { LiveStatusManager.INSTANCE.removeActiveLiveInstrument(liveSpan); } else { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt index 5e256eaa0..6b1115902 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt @@ -110,7 +110,6 @@ import spp.protocol.service.LiveService import spp.protocol.service.live.LiveInstrumentService import spp.protocol.service.live.LiveViewService import spp.protocol.service.logging.LogCountIndicatorService -import spp.protocol.service.tracing.LocalTracingService import spp.protocol.util.KSerializers import spp.protocol.util.LocalMessageCodec import java.awt.Color @@ -374,21 +373,6 @@ object SourceMarkerPlugin { log.info("Live views disabled") } - //local tracing - if (hardcodedConfig.getJsonObject("services").getBoolean("local_tracing")) { - if (availableRecords.any { it.name == SourceMarkerServices.Utilize.LOCAL_TRACING }) { - log.info("Local tracing available") - Instance.localTracing = ServiceProxyBuilder(vertx) - .apply { config.serviceToken?.let { setToken(it) } } - .setAddress(SourceMarkerServices.Utilize.LOCAL_TRACING) - .build(LocalTracingService::class.java) - } else { - log.warn("Local tracing unavailable") - } - } else { - log.info("Local tracing disabled") - } - //log count indicator if (hardcodedConfig.getJsonObject("services").getBoolean("log_count_indicator")) { if (availableRecords.any { it.name == SourceMarkerServices.Utilize.LOG_COUNT_INDICATOR }) { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/icons/SourceMarkerIcons.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/icons/SourceMarkerIcons.kt index 8c7987465..19ec2c364 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/icons/SourceMarkerIcons.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/icons/SourceMarkerIcons.kt @@ -21,9 +21,6 @@ import com.intellij.ui.scale.ScaleContext import com.intellij.util.SVGLoader import com.intellij.util.ui.JBImageIcon import spp.jetbrains.sourcemarker.PluginIcons -import spp.protocol.advice.ArtifactAdvice -import spp.protocol.advice.cautionary.RampDetectionAdvice -import spp.protocol.advice.informative.ActiveExceptionAdvice import java.io.ByteArrayInputStream import javax.swing.Icon @@ -47,14 +44,6 @@ object SourceMarkerIcons { val LIVE_BREAKPOINT_PENDING_ICON = PluginIcons.Breakpoint.pending val LIVE_BREAKPOINT_ERROR_ICON = PluginIcons.Breakpoint.error - fun getGutterMarkIcon(advice: ArtifactAdvice): Icon? { - return when (advice) { - is ActiveExceptionAdvice -> exclamationTriangle - is RampDetectionAdvice -> performanceRamp - else -> null - } - } - fun getNumericGutterMarkIcon(value: Int, color: String = "#182d34"): Icon { return JBImageIcon( SVGLoader.loadHiDPI( diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/ArtifactAdviceListener.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/ArtifactAdviceListener.kt deleted file mode 100644 index 99eda0ff4..000000000 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/ArtifactAdviceListener.kt +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Source++, the open-source live coding platform. - * Copyright (C) 2022 CodeBrig, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package spp.jetbrains.sourcemarker.listeners - -import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.SourceMarker -import spp.jetbrains.marker.source.mark.api.MethodSourceMark -import spp.jetbrains.marker.source.mark.api.SourceMark -import spp.jetbrains.marker.source.mark.api.event.SourceMarkEvent -import spp.jetbrains.marker.source.mark.api.event.SourceMarkEventCode -import spp.jetbrains.marker.source.mark.api.event.SourceMarkEventListener -import spp.protocol.advice.AdviceListener -import spp.protocol.advice.ArtifactAdvice -import spp.protocol.artifact.ArtifactType -import spp.jetbrains.sourcemarker.SourceMarkerPlugin -import spp.jetbrains.sourcemarker.mark.SourceMarkConstructor -import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.ARTIFACT_ADVICE -import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.ENDPOINT_DETECTOR -import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.SOURCE_PORTAL -import io.vertx.kotlin.coroutines.dispatcher -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch -import org.slf4j.LoggerFactory - -/** - * todo: description. - * - * @since 0.1.0 - * @author [Brandon Fergerson](mailto:bfergerson@apache.org) - */ -class ArtifactAdviceListener : AdviceListener, SourceMarkEventListener { - - companion object { - private val log = LoggerFactory.getLogger(ArtifactAdviceListener::class.java) - } - - private val pendingAdvice = mutableSetOf() - - override suspend fun advised(advice: ArtifactAdvice) { - when (advice.artifact.type) { - ArtifactType.ENDPOINT -> createEndpointAdvice(advice) - ArtifactType.STATEMENT -> ApplicationManager.getApplication() - .runReadAction { createExpressionAdvice(advice) } - else -> TODO("impl") - } - } - - override fun handleEvent(event: SourceMarkEvent) { - if (event.eventCode == SourceMarkEventCode.MARK_ADDED) { - GlobalScope.launch(SourceMarkerPlugin.vertx.dispatcher()) { - pendingAdvice.toList().forEach { - advised(it) - } - } - } - } - - private suspend fun createEndpointAdvice(advice: ArtifactAdvice) { - val operationName = advice.artifact.identifier - val sourceMark = SourceMarker.getSourceMarks() - .filterIsInstance() - .firstOrNull { it.getUserData(ENDPOINT_DETECTOR)!!.getOrFindEndpointName(it) == operationName } - if (sourceMark != null) { - SourceMarkConstructor.attachAdvice(sourceMark, advice) - addAdviceData(sourceMark, advice) - } else { - pendingAdvice.add(advice) - } - } - - private fun createExpressionAdvice(advice: ArtifactAdvice) { - val qualifiedClassName = advice.artifact.identifier - .substring(0, advice.artifact.identifier.lastIndexOf(".")) - val fileMarker = SourceMarker.getSourceFileMarker(qualifiedClassName) - if (fileMarker != null) { - val sourceMark = SourceMarkConstructor.getOrSetupSourceMark(fileMarker, advice) - if (sourceMark != null) { - addAdviceData(sourceMark, advice) - } - } else { - pendingAdvice.add(advice) - } - } - - private fun addAdviceData(sourceMark: SourceMark, advice: ArtifactAdvice) { - pendingAdvice.remove(advice) - if (sourceMark.getUserData(ARTIFACT_ADVICE) == null) { - sourceMark.putUserData(ARTIFACT_ADVICE, mutableListOf()) - } - - val activeAdvice = sourceMark.getUserData(ARTIFACT_ADVICE)!! - val updatedAdvice = activeAdvice.any { - if (it.isSameArtifactAdvice(advice)) { - it.updateArtifactAdvice(advice) - true - } else { - false - } - } - if (updatedAdvice) { - log.trace("Updated artifact advice: $advice") - } else { - activeAdvice.add(advice) - sourceMark.getUserData(SOURCE_PORTAL)?.advice?.add(advice) - log.debug("Added artifact advice: $advice") - } - } -} diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PluginSourceMarkEventListener.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PluginSourceMarkEventListener.kt index 9c51b6985..daf71cbb9 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PluginSourceMarkEventListener.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PluginSourceMarkEventListener.kt @@ -30,7 +30,6 @@ import spp.jetbrains.marker.source.mark.api.event.SourceMarkEventCode import spp.jetbrains.marker.source.mark.api.event.SynchronousSourceMarkEventListener import spp.jetbrains.portal.SourcePortal import spp.jetbrains.sourcemarker.SourceMarkerPlugin.vertx -import spp.jetbrains.sourcemarker.mark.SourceMarkConstructor import spp.jetbrains.sourcemarker.mark.SourceMarkKeys import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.ENDPOINT_DETECTOR import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.LOGGER_DETECTOR @@ -105,7 +104,6 @@ class PluginSourceMarkEventListener : SynchronousSourceMarkEventListener { sourceMark.putUserData(LOGGER_DETECTOR, loggerDetector) } else if (event.eventCode == SourceMarkEventCode.MARK_REMOVED) { event.sourceMark.getUserData(SourceMarkKeys.SOURCE_PORTAL)!!.close() - SourceMarkConstructor.tearDownSourceMark(event.sourceMark) } } } diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt index dd59396a6..fa0aa42e2 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt @@ -25,7 +25,6 @@ import com.intellij.psi.PsiNameIdentifierOwner import com.intellij.util.PsiNavigateUtil import io.netty.handler.codec.http.HttpResponseStatus.NOT_FOUND import io.vertx.core.eventbus.ReplyException -import io.vertx.core.eventbus.ReplyFailure import io.vertx.core.json.Json import io.vertx.core.json.JsonObject import io.vertx.kotlin.coroutines.CoroutineVerticle @@ -33,7 +32,6 @@ import io.vertx.kotlin.coroutines.dispatcher import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.datetime.Instant -import kotlinx.datetime.toKotlinInstant import org.slf4j.LoggerFactory import spp.jetbrains.marker.SourceMarker import spp.jetbrains.marker.SourceMarker.creationService @@ -92,7 +90,6 @@ import spp.protocol.artifact.metrics.ArtifactSummarizedResult import spp.protocol.artifact.metrics.MetricType import spp.protocol.artifact.trace.TraceResult import spp.protocol.artifact.trace.TraceSpan -import spp.protocol.error.AccessDenied import spp.protocol.instrument.LiveSourceLocation import spp.protocol.portal.PageType import spp.protocol.utils.ArtifactNameUtils @@ -268,7 +265,7 @@ class PortalEventListener( //update subscriptions if (Instance.liveView != null) { - Instance.liveView!!.clearLiveViewSubscriptions { + Instance.liveView!!.clearLiveViewSubscriptions().onComplete { if (it.succeeded()) { GlobalScope.launch(vertx.dispatcher()) { val sourceMark = SourceMarker.getSourceMark( @@ -284,14 +281,9 @@ class PortalEventListener( listOf(endpointName), portal.viewingArtifact, LiveSourceLocation(portal.viewingArtifact.identifier, 0), //todo: fix - LiveViewConfig( - "ACTIVITY", - false, - listOf("endpoint_cpm", "endpoint_avg", "endpoint_sla"), - 0 - ) + LiveViewConfig("ACTIVITY", listOf("endpoint_cpm", "endpoint_avg", "endpoint_sla")) ) - ) { + ).onComplete { if (it.failed()) { log.error("Failed to add live view subscription", it.cause()) } @@ -312,7 +304,7 @@ class PortalEventListener( //update subscriptions if (Instance.liveView != null) { - Instance.liveView!!.clearLiveViewSubscriptions { + Instance.liveView!!.clearLiveViewSubscriptions().onComplete { if (it.succeeded()) { GlobalScope.launch(vertx.dispatcher()) { val sourceMark = SourceMarker.getSourceMark( @@ -328,14 +320,9 @@ class PortalEventListener( listOf(endpointName), portal.viewingArtifact, LiveSourceLocation(portal.viewingArtifact.identifier, 0), //todo: fix - LiveViewConfig( - "TRACES", - false, - listOf("endpoint_traces"), - 0 - ) + LiveViewConfig("TRACES", listOf("endpoint_traces")) ) - ) { + ).onComplete { if (it.failed()) { log.error("Failed to add live view subscription", it.cause()) } @@ -356,7 +343,7 @@ class PortalEventListener( //update subscriptions if (Instance.liveView != null) { - Instance.liveView!!.clearLiveViewSubscriptions { + Instance.liveView!!.clearLiveViewSubscriptions().onComplete { if (it.succeeded()) { GlobalScope.launch(vertx.dispatcher()) { val sourceMark = SourceMarker.getSourceMark( @@ -382,14 +369,9 @@ class PortalEventListener( logPatterns, portal.viewingArtifact, LiveSourceLocation(portal.viewingArtifact.identifier, 0), //todo: fix - LiveViewConfig( - "LOGS", - false, - listOf("endpoint_logs"), - 0 - ) + LiveViewConfig("LOGS", listOf("endpoint_logs")) ) - ) { + ).onComplete { if (it.failed()) { log.error("Failed to add live view subscription", it.cause()) } @@ -467,33 +449,6 @@ class PortalEventListener( handleTraceResult(traceResult, portal, portal.viewingArtifact) } - } else if (Instance.localTracing != null) { - portal.tracesView.localTracing = true - Instance.localTracing!!.getTraceResult( - artifactQualifiedName = portal.viewingArtifact, - start = ZonedDateTime.now().minusHours(24).toInstant().toKotlinInstant(), - stop = ZonedDateTime.now().toInstant().toKotlinInstant(), - orderType = portal.tracesView.orderType, - pageSize = portal.tracesView.viewTraceAmount, - pageNumber = portal.tracesView.pageNumber, - ) { - if (it.succeeded()) { - handleTraceResult(it.result(), portal, portal.viewingArtifact) - } else { - val replyException = it.cause() as ReplyException - if (replyException.failureType() == ReplyFailure.TIMEOUT) { - log.warn("Timed out getting local trace results") - } else { - val actualException = replyException.cause!! - if (actualException is AccessDenied) { - log.error("Access denied. Reason: " + actualException.reason) - } else { - it.cause().printStackTrace() - log.error("Failed to get local trace results", it.cause()) - } - } - } - } } } } @@ -679,8 +634,6 @@ class PortalEventListener( portal.configuration.visibleActivity = true portal.configuration.visibleTraces = true portal.configuration.visibleLogs = true //todo: can hide based on if there is logs - } else if (Instance.localTracing != null) { - portal.configuration.visibleTraces = true } else { //non-endpoint artifact; hide activity/traces till manually shown portal.configuration.visibleActivity = false diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkConstructor.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkConstructor.kt deleted file mode 100644 index 856dd8b14..000000000 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkConstructor.kt +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Source++, the open-source live coding platform. - * Copyright (C) 2022 CodeBrig, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package spp.jetbrains.sourcemarker.mark - -import com.intellij.psi.PsiElement -import spp.jetbrains.marker.SourceMarker.creationService -import spp.jetbrains.marker.source.SourceFileMarker -import spp.jetbrains.marker.source.mark.api.SourceMark -import spp.jetbrains.marker.source.mark.api.key.SourceKey -import spp.jetbrains.marker.source.mark.gutter.GutterMark -import spp.jetbrains.marker.source.mark.inlay.ExpressionInlayMark -import spp.jetbrains.marker.source.mark.inlay.InlayMark -import spp.jetbrains.marker.source.mark.inlay.config.InlayMarkVirtualText -import spp.protocol.advice.AdviceType -import spp.protocol.advice.ArtifactAdvice -import spp.protocol.advice.informative.ActiveExceptionAdvice -import spp.protocol.utils.toPrettyDuration -import spp.jetbrains.sourcemarker.PluginBundle.message -import spp.jetbrains.sourcemarker.SourceMarkerPlugin -import spp.jetbrains.sourcemarker.SourceMarkerPlugin.SOURCE_RED -import spp.jetbrains.sourcemarker.icons.SourceMarkerIcons -import kotlinx.datetime.Clock -import org.slf4j.LoggerFactory - -/** - * Sets up the appropriate [SourceMark] display configuration based on [AdviceType]. - * - * @since 0.1.0 - * @author [Brandon Fergerson](mailto:bfergerson@apache.org) - */ -object SourceMarkConstructor { - - private val log = LoggerFactory.getLogger(SourceMarkConstructor::class.java) - private val ADVICE_TIMER = SourceKey("ADVICE_TIMER") - - fun tearDownSourceMark(sourceMark: SourceMark) { - val artifactAdvice = sourceMark.getUserData(SourceMarkKeys.ARTIFACT_ADVICE) - if (artifactAdvice == null || artifactAdvice.isEmpty()) { - return - } - - artifactAdvice.forEach { - when (it.type) { - AdviceType.ActiveExceptionAdvice -> { - val timerId = sourceMark.getUserData(ADVICE_TIMER) - if (timerId != null) { - SourceMarkerPlugin.vertx.cancelTimer(timerId) - sourceMark.putUserData(ADVICE_TIMER, null) - } - } - else -> { - //no additional tear down necessary - } - } - } - artifactAdvice.clear() - } - - fun getOrSetupSourceMark(fileMarker: SourceFileMarker, advice: ArtifactAdvice): SourceMark? { - when (advice.type) { - AdviceType.RampDetectionAdvice -> { - val gutterMark = creationService.getOrCreateExpressionGutterMark(fileMarker, advice.artifact.lineNumber!!) - return if (gutterMark.isPresent) { - if (!fileMarker.containsSourceMark(gutterMark.get())) { - attachAdvice(gutterMark.get(), advice) - gutterMark.get().apply() - } - gutterMark.get() - } else { - log.warn("No detected expression at line {}. Gutter mark ignored", advice.artifact.lineNumber!!) - null - } - } - AdviceType.ActiveExceptionAdvice -> { - val inlayMark = creationService.getOrCreateExpressionInlayMark(fileMarker, advice.artifact.lineNumber!!) - return if (inlayMark.isPresent) { - if (!fileMarker.containsSourceMark(inlayMark.get())) { - attachAdvice(inlayMark.get(), advice) - inlayMark.get().apply() - } - inlayMark.get() - } else { - log.warn("No detected expression at line {}. Inlay mark ignored", advice.artifact.lineNumber!!) - null - } - } - } - } - - fun attachAdvice(sourceMark: SourceMark, advice: ArtifactAdvice) = when (sourceMark.type) { - SourceMark.Type.GUTTER -> attachAdvice(sourceMark as GutterMark, advice) - SourceMark.Type.INLAY -> attachAdvice(sourceMark as InlayMark, advice) - } - - private fun attachAdvice(gutterMark: GutterMark, advice: ArtifactAdvice) { - gutterMark.configuration.icon = SourceMarkerIcons.getGutterMarkIcon(advice) - gutterMark.setVisible(true) - gutterMark.sourceFileMarker.refresh() - } - - @Suppress("MagicNumber") - private fun attachAdvice(inlayMark: InlayMark, advice: ArtifactAdvice) { - when (advice) { - is ActiveExceptionAdvice -> { - val expressionMark = inlayMark as ExpressionInlayMark - val prettyTimeAgo = if (isThrows(expressionMark.getPsiExpression())) { - { - val occurred = (Clock.System.now() - .toEpochMilliseconds() - advice.occurredAt.toEpochMilliseconds()).toPrettyDuration() + - " " + message("ago") - " //${message("last_occurred")} $occurred " - } - } else { - { - val exceptionType = advice.stackTrace.exceptionType.substringAfterLast(".") - val occurred = (Clock.System.now() - .toEpochMilliseconds() - advice.occurredAt.toEpochMilliseconds()).toPrettyDuration() + - " " + message("ago") - " //${message("threw")} $exceptionType $occurred " - } - } - - inlayMark.configuration.virtualText = InlayMarkVirtualText(inlayMark, prettyTimeAgo.invoke()) - inlayMark.configuration.virtualText!!.textAttributes.foregroundColor = SOURCE_RED - inlayMark.configuration.virtualText!!.useInlinePresentation = true - inlayMark.configuration.activateOnMouseClick = false - - inlayMark.putUserData(ADVICE_TIMER, SourceMarkerPlugin.vertx.setPeriodic(1000) { - inlayMark.configuration.virtualText!!.updateVirtualText(prettyTimeAgo.invoke()) - }) - - //todo: shouldn't be creating gutter mark here - val gutterMark = creationService.getOrCreateExpressionGutterMark( - inlayMark.sourceFileMarker, advice.artifact.lineNumber!! - ).get() - if (!gutterMark.sourceFileMarker.containsSourceMark(gutterMark)) { - gutterMark.configuration.icon = SourceMarkerIcons.activeException - gutterMark.apply() - } - } - } - } - - private fun isThrows(psiExpression: PsiElement): Boolean { - TODO() - } -} diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt index b626086c6..c7e5b046c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt @@ -20,7 +20,6 @@ package spp.jetbrains.sourcemarker.mark import spp.jetbrains.marker.source.mark.api.SourceMark import spp.jetbrains.marker.source.mark.api.key.SourceKey import spp.jetbrains.portal.SourcePortal -import spp.protocol.advice.ArtifactAdvice import spp.jetbrains.marker.jvm.psi.EndpointDetector import spp.jetbrains.marker.jvm.psi.LoggerDetector import spp.jetbrains.sourcemarker.service.InstrumentEventListener @@ -36,7 +35,6 @@ object SourceMarkKeys { val SOURCE_PORTAL = SourceKey("SOURCE_PORTAL") val ENDPOINT_DETECTOR = SourceKey("ENDPOINT_DETECTOR") val LOGGER_DETECTOR = SourceKey("LOGGER_DETECTOR") - val ARTIFACT_ADVICE = SourceKey>("ARTIFACT_ADVICE") val BREAKPOINT_ID = SourceKey("BREAKPOINT_ID") val LOG_ID = SourceKey("LOG_ID") val METER_ID = SourceKey("METER_ID") diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt index fd7135e67..c4fe1cbb7 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt @@ -69,7 +69,7 @@ class LogCountIndicators : CoroutineVerticle() { Clock.System.now().minus(15, DateTimeUnit.MINUTE), Clock.System.now(), DurationStep.MINUTE - ) { + ).onComplete { if (it.succeeded()) { val occurrences = it.result() //log.info("Found ${occurrences} occurrences of log patterns") diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt index 8a2f4c129..4280952bb 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt @@ -62,7 +62,7 @@ class LogHitColumnInfo(name: String) : ColumnInfo(n if (event.eventType == LiveInstrumentEventType.LOG_HIT) { val item = Json.decodeValue(event.data, LiveLogHit::class.java) return when (name) { - "Message" -> item.logResult.logs.first().getFormattedMessage() + "Message" -> item.logResult.logs.first().toFormattedMessage() "Time" -> (Clock.System.now().toEpochMilliseconds() - item.occurredAt.toEpochMilliseconds()) .toPrettyDuration() + " " + message("ago") diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt index 2f12a4b27..91debe3ae 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt @@ -406,14 +406,9 @@ object LiveStatusManager : SourceMarkEventListener { listOf(liveMeter.toMetricId()), ArtifactQualifiedName(liveMeter.location.source, type = ArtifactType.EXPRESSION), liveMeter.location, - LiveViewConfig( - "LIVE_METER", - true, - listOf("last_minute", "last_hour", "last_day"), - 0 - ) + LiveViewConfig("LIVE_METER", listOf("last_minute", "last_hour", "last_day")) ) - ) { + ).onComplete { if (it.failed()) { log.error("Failed to add live view subscription", it.cause()) } diff --git a/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt b/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt index f41484b90..fbee19383 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt @@ -145,20 +145,15 @@ class StandaloneActivityLiveView : LightJavaCodeInsightFixtureTestCase() { val endpointName = sourceMark.getUserData( SourceMarkKeys.ENDPOINT_DETECTOR )?.getOrFindEndpointName(sourceMark) ?: return@launch - SourceMarkerServices.Instance.liveView?.addLiveViewSubscription( + SourceMarkerServices.Instance.liveView!!.addLiveViewSubscription( LiveViewSubscription( null, listOf(endpointName), sourceMark.artifactQualifiedName, LiveSourceLocation(sourceMark.artifactQualifiedName.identifier, -1), - LiveViewConfig( - "ACTIVITY", - false, - listOf("endpoint_cpm", "endpoint_avg", "endpoint_sla"), - refreshRateLimit = 0 - ) + LiveViewConfig("ACTIVITY", listOf("endpoint_cpm", "endpoint_avg", "endpoint_sla")) ) - ) { + ).onComplete { if (it.succeeded()) { println(it) } else { From 1d72d630220237395e663df2994a09b5ef80322a Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 11:31:53 -0500 Subject: [PATCH 06/42] temp version --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index a723a9a54..e75f0d2e2 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:$projectVersion") + implementation("com.github.sourceplusplus.protocol:protocol:a97325afb6") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index 771343e68..60aafe845 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -28,7 +28,7 @@ repositories { dependencies { val intellijVersion = "213.6777.52" - compileOnly("com.github.sourceplusplus.protocol:protocol:$projectVersion") + compileOnly("com.github.sourceplusplus.protocol:protocol:a97325afb6") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index 72cf7d187..f3727e2ef 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:$projectVersion") + compileOnly("com.github.sourceplusplus.protocol:protocol:a97325afb6") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index a21bfac40..132166209 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:$projectVersion") + compileOnly("com.github.sourceplusplus.protocol:protocol:a97325afb6") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 121018dfb..88fb6d7c3 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:$projectVersion") + implementation("com.github.sourceplusplus.protocol:protocol:a97325afb6") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 26ec08648..b82b0006a 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -62,8 +62,8 @@ dependencies { implementation(project(":marker:jvm-marker")) implementation(project(":marker:py-marker")) implementation(project(":monitor")) - implementation("com.github.sourceplusplus.interface-portal:portal-jvm:$projectVersion") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:$projectVersion") + implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } + implementation("com.github.sourceplusplus.protocol:protocol:a97325afb6") } implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion") From a42551be372d4afdba3f2ed39d0474612eaf4d14 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 13:53:44 -0500 Subject: [PATCH 07/42] refactor --- .../status/BreakpointStatusBar.java | 15 ++-------- .../status/LiveMeterStatusPanel.java | 6 ++-- .../sourcemarker/status/LogStatusBar.java | 28 +++---------------- .../sourcemarker/status/MeterStatusBar.java | 6 ++-- .../sourcemarker/status/SpanStatusBar.java | 6 ++-- .../service/LiveInstrumentManager.kt | 28 +++++++++---------- .../sourcemarker/status/LiveStatusManager.kt | 6 +--- 7 files changed, 32 insertions(+), 63 deletions(-) diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java index ab3d1d9e6..c00486a70 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java @@ -25,12 +25,7 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService; import spp.jetbrains.sourcemarker.settings.LiveBreakpointConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import spp.protocol.instrument.InstrumentThrottle; -import spp.protocol.instrument.LiveInstrument; -import spp.protocol.instrument.LiveInstrumentEvent; -import spp.protocol.instrument.LiveSourceLocation; -import spp.protocol.instrument.ThrottleStep; -import spp.protocol.instrument.breakpoint.LiveBreakpoint; +import spp.protocol.instrument.*; import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit; import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved; @@ -40,13 +35,7 @@ import javax.swing.border.LineBorder; import javax.swing.event.DocumentEvent; import java.awt.*; -import java.awt.event.ComponentEvent; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; +import java.awt.event.*; import java.time.Instant; import java.util.ArrayList; import java.util.HashMap; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java index 02c42d4e2..911298af6 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java @@ -3,14 +3,14 @@ import com.intellij.util.ui.UIUtil; import com.jgoodies.forms.factories.FormFactory; import com.jgoodies.forms.layout.*; +import io.vertx.core.json.JsonObject; +import org.jetbrains.annotations.NotNull; import spp.jetbrains.marker.source.mark.gutter.GutterMark; import spp.jetbrains.sourcemarker.PluginIcons; import spp.jetbrains.sourcemarker.PluginUI; import spp.jetbrains.sourcemarker.service.InstrumentEventListener; -import io.vertx.core.json.JsonObject; -import org.jetbrains.annotations.NotNull; import spp.protocol.instrument.LiveInstrumentEvent; -import spp.protocol.instrument.meter.LiveMeter; +import spp.protocol.instrument.LiveMeter; import spp.protocol.instrument.meter.MeterType; import javax.swing.*; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java index bd77a3853..505a5f21b 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java @@ -18,20 +18,15 @@ import spp.jetbrains.marker.source.mark.inlay.InlayMark; import spp.jetbrains.sourcemarker.PluginIcons; import spp.jetbrains.sourcemarker.PluginUI; -import spp.jetbrains.sourcemarker.service.log.VariableParser; import spp.jetbrains.sourcemarker.command.AutocompleteFieldRow; import spp.jetbrains.sourcemarker.mark.SourceMarkKeys; import spp.jetbrains.sourcemarker.service.InstrumentEventListener; import spp.jetbrains.sourcemarker.service.log.LogHitColumnInfo; +import spp.jetbrains.sourcemarker.service.log.VariableParser; import spp.jetbrains.sourcemarker.settings.LiveLogConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.artifact.log.Log; -import spp.protocol.instrument.InstrumentThrottle; -import spp.protocol.instrument.LiveInstrument; -import spp.protocol.instrument.LiveInstrumentEvent; -import spp.protocol.instrument.LiveSourceLocation; -import spp.protocol.instrument.ThrottleStep; -import spp.protocol.instrument.log.LiveLog; +import spp.protocol.instrument.*; import spp.protocol.instrument.log.event.LiveLogRemoved; import javax.swing.*; @@ -41,15 +36,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.text.StyleContext; import java.awt.*; -import java.awt.event.ComponentEvent; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; +import java.awt.event.*; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -64,14 +51,7 @@ import java.util.stream.Collectors; import static spp.jetbrains.marker.SourceMarker.conditionParser; -import static spp.jetbrains.sourcemarker.PluginUI.CNFG_PANEL_BGND_COLOR; -import static spp.jetbrains.sourcemarker.PluginUI.CNFG_PANEL_FOCUS_COLOR; -import static spp.jetbrains.sourcemarker.PluginUI.COMPLETE_COLOR_PURPLE; -import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_14; -import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_17; -import static spp.jetbrains.sourcemarker.PluginUI.SELECT_COLOR_RED; -import static spp.jetbrains.sourcemarker.PluginUI.STATUS_BAR_TXT_BG_COLOR; -import static spp.jetbrains.sourcemarker.PluginUI.DFLT_BGND_COLOR; +import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; import static spp.protocol.instrument.LiveInstrumentEventType.LOG_HIT; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java index 8718494f0..27dcc9157 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java @@ -22,8 +22,8 @@ import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.LiveInstrument; +import spp.protocol.instrument.LiveMeter; import spp.protocol.instrument.LiveSourceLocation; -import spp.protocol.instrument.meter.LiveMeter; import spp.protocol.instrument.meter.MeterType; import spp.protocol.instrument.meter.MetricValue; import spp.protocol.instrument.meter.MetricValueType; @@ -37,8 +37,10 @@ import java.awt.*; import java.awt.event.*; import java.time.Instant; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.List; -import java.util.*; import java.util.concurrent.atomic.AtomicLong; import static spp.jetbrains.marker.SourceMarker.conditionParser; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java index c656b0b47..0e585b384 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java @@ -23,8 +23,8 @@ import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.LiveInstrument; import spp.protocol.instrument.LiveSourceLocation; +import spp.protocol.instrument.LiveSpan; import spp.protocol.instrument.meter.event.LiveMeterRemoved; -import spp.protocol.instrument.span.LiveSpan; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -34,8 +34,10 @@ import java.awt.*; import java.awt.event.*; import java.time.Instant; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.List; -import java.util.*; import java.util.concurrent.atomic.AtomicLong; import static spp.jetbrains.marker.SourceMarker.conditionParser; diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index 8b7ab2005..7fa6392bf 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -21,30 +21,30 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.editor.EditorFactory import com.intellij.openapi.project.Project import com.intellij.openapi.project.ProjectManager +import io.vertx.core.json.Json +import io.vertx.core.json.JsonObject +import io.vertx.ext.bridge.BridgeEventType +import io.vertx.ext.eventbus.bridge.tcp.impl.protocol.FrameHelper +import io.vertx.kotlin.coroutines.CoroutineVerticle +import org.slf4j.LoggerFactory import spp.jetbrains.marker.SourceMarker +import spp.jetbrains.sourcemarker.discover.TCPServiceDiscoveryBackend +import spp.jetbrains.sourcemarker.mark.SourceMarkKeys +import spp.jetbrains.sourcemarker.search.SourceMarkSearch +import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService +import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointTriggerListener +import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated import spp.protocol.SourceMarkerServices.Instance import spp.protocol.SourceMarkerServices.Provide +import spp.protocol.instrument.LiveBreakpoint import spp.protocol.instrument.LiveInstrumentEvent import spp.protocol.instrument.LiveInstrumentEventType -import spp.protocol.instrument.breakpoint.LiveBreakpoint +import spp.protocol.instrument.LiveLog import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved -import spp.protocol.instrument.log.LiveLog import spp.protocol.instrument.log.event.LiveLogHit import spp.protocol.instrument.log.event.LiveLogRemoved -import spp.jetbrains.sourcemarker.discover.TCPServiceDiscoveryBackend -import spp.jetbrains.sourcemarker.mark.SourceMarkKeys -import spp.jetbrains.sourcemarker.search.SourceMarkSearch -import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService -import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointTriggerListener -import spp.jetbrains.sourcemarker.status.LiveStatusManager -import io.vertx.core.json.Json -import io.vertx.core.json.JsonObject -import io.vertx.ext.bridge.BridgeEventType -import io.vertx.ext.eventbus.bridge.tcp.impl.protocol.FrameHelper -import io.vertx.kotlin.coroutines.CoroutineVerticle -import org.slf4j.LoggerFactory /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt index 91debe3ae..bb8f46dca 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt @@ -50,11 +50,7 @@ import spp.protocol.SourceMarkerServices import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType import spp.protocol.artifact.log.LogResult -import spp.protocol.instrument.LiveInstrument -import spp.protocol.instrument.LiveSourceLocation -import spp.protocol.instrument.breakpoint.LiveBreakpoint -import spp.protocol.instrument.log.LiveLog -import spp.protocol.instrument.meter.LiveMeter +import spp.protocol.instrument.* import spp.protocol.instrument.meter.MeterType import spp.protocol.portal.PageType import spp.protocol.view.LiveViewConfig From 56e7adb3f176c165d957f14bfebb9c71af1ca496 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 15:54:52 -0500 Subject: [PATCH 08/42] refactor --- .../sourcemarker/status/BreakpointStatusBar.java | 3 +-- .../sourcemarker/status/LogStatusBar.java | 3 +-- .../sourcemarker/status/MeterStatusBar.java | 4 ++-- .../sourcemarker/status/SpanStatusBar.java | 4 ++-- .../sourcemarker/service/LiveInstrumentManager.kt | 15 +++++---------- .../service/breakpoint/BreakpointHitColumnInfo.kt | 8 ++++---- .../sourcemarker/service/log/LogHitColumnInfo.kt | 8 ++++---- 7 files changed, 19 insertions(+), 26 deletions(-) diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java index c00486a70..e2f4b56b2 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java @@ -27,7 +27,6 @@ import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.*; import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit; -import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -169,7 +168,7 @@ private void setupAsActive() { } else if (event.getEventType() == BREAKPOINT_REMOVED) { configLabel.setIcon(PluginIcons.eyeSlash); - LiveBreakpointRemoved removed = Json.decodeValue(event.getData(), LiveBreakpointRemoved.class); + LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); if (removed.getCause() == null) { statusPanel.setStatus("Complete", COMPLETE_COLOR_PURPLE); } else { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java index 505a5f21b..f577abcd9 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java @@ -27,7 +27,6 @@ import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.artifact.log.Log; import spp.protocol.instrument.*; -import spp.protocol.instrument.log.event.LiveLogRemoved; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -223,7 +222,7 @@ public void accept(@NotNull LiveInstrumentEvent event) { } else if (event.getEventType() == LOG_REMOVED) { removed = true; - LiveLogRemoved removed = Json.decodeValue(event.getData(), LiveLogRemoved.class); + LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); if (removed.getCause() != null) { commandModel.insertRow(0, event); diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java index 27dcc9157..61e66775c 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java @@ -22,12 +22,12 @@ import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.LiveInstrument; +import spp.protocol.instrument.LiveInstrumentRemoved; import spp.protocol.instrument.LiveMeter; import spp.protocol.instrument.LiveSourceLocation; import spp.protocol.instrument.meter.MeterType; import spp.protocol.instrument.meter.MetricValue; import spp.protocol.instrument.meter.MetricValueType; -import spp.protocol.instrument.meter.event.LiveMeterRemoved; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -128,7 +128,7 @@ private void setupAsActive() { if (event.getEventType() == METER_REMOVED) { configLabel.setIcon(PluginIcons.eyeSlash); - LiveMeterRemoved removed = Json.decodeValue(event.getData(), LiveMeterRemoved.class); + LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); if (removed.getCause() == null) { statusPanel.setStatus("Complete", COMPLETE_COLOR_PURPLE); } else { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java index 0e585b384..fc334a10b 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java @@ -22,9 +22,9 @@ import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.LiveInstrument; +import spp.protocol.instrument.LiveInstrumentRemoved; import spp.protocol.instrument.LiveSourceLocation; import spp.protocol.instrument.LiveSpan; -import spp.protocol.instrument.meter.event.LiveMeterRemoved; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -125,7 +125,7 @@ private void setupAsActive() { if (event.getEventType() == METER_REMOVED) { configLabel.setIcon(PluginIcons.eyeSlash); - LiveMeterRemoved removed = Json.decodeValue(event.getData(), LiveMeterRemoved.class); + LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); if (removed.getCause() == null) { statusPanel.setStatus("Complete", COMPLETE_COLOR_PURPLE); } else { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index 7fa6392bf..7fcda61bf 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -37,14 +37,9 @@ import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated import spp.protocol.SourceMarkerServices.Instance import spp.protocol.SourceMarkerServices.Provide -import spp.protocol.instrument.LiveBreakpoint -import spp.protocol.instrument.LiveInstrumentEvent -import spp.protocol.instrument.LiveInstrumentEventType -import spp.protocol.instrument.LiveLog +import spp.protocol.instrument.* import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit -import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved import spp.protocol.instrument.log.event.LiveLogHit -import spp.protocol.instrument.log.event.LiveLogRemoved /** * todo: description. @@ -98,9 +93,9 @@ class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() } private fun handleLogRemovedEvent(liveEvent: LiveInstrumentEvent) { - val logRemoved = Json.decodeValue(liveEvent.data, LiveLogRemoved::class.java) + val logRemoved = Json.decodeValue(liveEvent.data, LiveInstrumentRemoved::class.java) ApplicationManager.getApplication().invokeLater { - val inlayMark = SourceMarkSearch.findByLogId(logRemoved.logId) + val inlayMark = SourceMarkSearch.findByLogId(logRemoved.liveInstrument.id!!) if (inlayMark != null) { val eventListeners = inlayMark.getUserData(SourceMarkKeys.INSTRUMENT_EVENT_LISTENERS) if (eventListeners?.isNotEmpty() == true) { @@ -144,9 +139,9 @@ class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() } private fun handleBreakpointRemovedEvent(liveEvent: LiveInstrumentEvent) { - val bpRemoved = Json.decodeValue(liveEvent.data, LiveBreakpointRemoved::class.java) + val bpRemoved = Json.decodeValue(liveEvent.data, LiveInstrumentRemoved::class.java) ApplicationManager.getApplication().invokeLater { - val inlayMark = SourceMarkSearch.findByBreakpointId(bpRemoved.breakpointId) + val inlayMark = SourceMarkSearch.findByBreakpointId(bpRemoved.liveInstrument.id!!) if (inlayMark != null) { val eventListeners = inlayMark.getUserData(SourceMarkKeys.INSTRUMENT_EVENT_LISTENERS) if (eventListeners?.isNotEmpty() == true) { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt index f1ecf4bcf..8277afeab 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt @@ -21,11 +21,11 @@ import com.intellij.util.ui.ColumnInfo import spp.protocol.instrument.LiveInstrumentEvent import spp.protocol.instrument.LiveInstrumentEventType import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit -import spp.protocol.instrument.breakpoint.event.LiveBreakpointRemoved import spp.protocol.utils.toPrettyDuration import spp.jetbrains.sourcemarker.PluginBundle.message import io.vertx.core.json.Json import kotlinx.datetime.Clock +import spp.protocol.instrument.LiveInstrumentRemoved /** * todo: description. @@ -41,14 +41,14 @@ class BreakpointHitColumnInfo(name: String) : ColumnInfo item.toString() } } else { - val item = Json.decodeValue(event.data, LiveBreakpointRemoved::class.java) + val item = Json.decodeValue(event.data, LiveInstrumentRemoved::class.java) return when (name) { "Breakpoint Data" -> item.cause!!.message ?: item.cause!!.exceptionType "Time" -> (Clock.System.now().toEpochMilliseconds() - item.occurredAt.toEpochMilliseconds()) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt index 4280952bb..80dbce022 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt @@ -21,11 +21,11 @@ import com.intellij.util.ui.ColumnInfo import spp.protocol.instrument.LiveInstrumentEvent import spp.protocol.instrument.LiveInstrumentEventType import spp.protocol.instrument.log.event.LiveLogHit -import spp.protocol.instrument.log.event.LiveLogRemoved import spp.protocol.utils.toPrettyDuration import spp.jetbrains.sourcemarker.PluginBundle.message import io.vertx.core.json.Json import kotlinx.datetime.Clock +import spp.protocol.instrument.LiveInstrumentRemoved /** * todo: description. @@ -41,14 +41,14 @@ class LogHitColumnInfo(name: String) : ColumnInfo(n val obj1 = if (t.eventType == LiveInstrumentEventType.LOG_HIT) { Json.decodeValue(t.data, LiveLogHit::class.java) } else if (t.eventType == LiveInstrumentEventType.LOG_REMOVED) { - Json.decodeValue(t.data, LiveLogRemoved::class.java) + Json.decodeValue(t.data, LiveInstrumentRemoved::class.java) } else { throw IllegalArgumentException(t.eventType.name) } val obj2 = if (t2.eventType == LiveInstrumentEventType.LOG_HIT) { Json.decodeValue(t2.data, LiveLogHit::class.java) } else if (t2.eventType == LiveInstrumentEventType.LOG_REMOVED) { - Json.decodeValue(t2.data, LiveLogRemoved::class.java) + Json.decodeValue(t2.data, LiveInstrumentRemoved::class.java) } else { throw IllegalArgumentException(t2.eventType.name) } @@ -69,7 +69,7 @@ class LogHitColumnInfo(name: String) : ColumnInfo(n else -> item.toString() } } else { - val item = Json.decodeValue(event.data, LiveLogRemoved::class.java) + val item = Json.decodeValue(event.data, LiveInstrumentRemoved::class.java) return when (name) { "Message" -> item.cause!!.message ?: item.cause!!.exceptionType "Time" -> (Clock.System.now().toEpochMilliseconds() - item.occurredAt.toEpochMilliseconds()) From 13fb12763a39157eb73ccbca2e46bd0605cd93b6 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 16:29:44 -0500 Subject: [PATCH 09/42] refactor --- .../jetbrains/marker/jvm/JVMVariableSimpleNode.kt | 4 ++-- .../jetbrains/marker/py/PythonVariableRootNode.kt | 4 ++-- .../marker/py/PythonVariableSimpleNode.kt | 2 +- .../sourcemarker/status/BreakpointStatusBar.java | 14 ++++++++++---- .../sourcemarker/status/LiveMeterStatusPanel.java | 2 +- .../sourcemarker/status/LogStatusBar.java | 12 +++++++++--- .../sourcemarker/status/MeterStatusBar.java | 4 ++-- .../sourcemarker/status/SpanStatusBar.java | 4 ++-- .../service/InstrumentEventListener.kt | 2 +- .../sourcemarker/service/LiveInstrumentManager.kt | 6 +++--- .../sourcemarker/service/LiveViewManager.kt | 4 ++-- .../breakpoint/BreakpointEventColumnInfo.kt | 6 +++--- .../service/breakpoint/BreakpointHitColumnInfo.kt | 12 ++++++------ .../breakpoint/BreakpointHitWindowService.kt | 4 ++-- .../breakpoint/tree/VariableRootSimpleNode.kt | 2 +- .../service/breakpoint/ui/EventsTab.kt | 2 +- .../sourcemarker/service/log/LogHitColumnInfo.kt | 12 ++++++------ 17 files changed, 54 insertions(+), 42 deletions(-) diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMVariableSimpleNode.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMVariableSimpleNode.kt index fc45b7520..183ab6ef2 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMVariableSimpleNode.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMVariableSimpleNode.kt @@ -24,9 +24,9 @@ import com.intellij.ui.SimpleTextAttributes import com.intellij.ui.treeStructure.SimpleNode import com.intellij.xdebugger.impl.ui.DebuggerUIUtil import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants -import spp.protocol.instrument.LiveVariable -import spp.protocol.instrument.LiveVariableScope import org.apache.commons.lang3.EnumUtils +import spp.protocol.instrument.variable.LiveVariable +import spp.protocol.instrument.variable.LiveVariableScope /** * todo: description. diff --git a/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableRootNode.kt b/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableRootNode.kt index 5ec1babf1..4ed35a812 100644 --- a/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableRootNode.kt +++ b/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableRootNode.kt @@ -22,8 +22,8 @@ import com.intellij.openapi.editor.DefaultLanguageHighlighterColors import com.intellij.ui.SimpleTextAttributes import com.intellij.ui.treeStructure.SimpleNode import com.intellij.xdebugger.impl.ui.DebuggerUIUtil -import spp.protocol.instrument.LiveVariable -import spp.protocol.instrument.LiveVariableScope +import spp.protocol.instrument.variable.LiveVariable +import spp.protocol.instrument.variable.LiveVariableScope /** * todo: description. diff --git a/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableSimpleNode.kt b/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableSimpleNode.kt index 4b6f5bc7e..abe75d497 100644 --- a/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableSimpleNode.kt +++ b/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonVariableSimpleNode.kt @@ -24,7 +24,7 @@ import com.intellij.ui.treeStructure.SimpleNode import com.intellij.xdebugger.impl.ui.DebuggerUIUtil import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants import io.vertx.core.json.JsonObject -import spp.protocol.instrument.LiveVariable +import spp.protocol.instrument.variable.LiveVariable /** * todo: description. diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java index e2f4b56b2..cf84651b8 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java @@ -25,8 +25,14 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService; import spp.jetbrains.sourcemarker.settings.LiveBreakpointConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import spp.protocol.instrument.*; -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit; +import spp.protocol.instrument.LiveBreakpoint; +import spp.protocol.instrument.LiveInstrument; +import spp.protocol.instrument.LiveSourceLocation; +import spp.protocol.instrument.event.LiveBreakpointHit; +import spp.protocol.instrument.event.LiveInstrumentEvent; +import spp.protocol.instrument.event.LiveInstrumentRemoved; +import spp.protocol.instrument.throttle.InstrumentThrottle; +import spp.protocol.instrument.throttle.ThrottleStep; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -48,8 +54,8 @@ import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; -import static spp.protocol.instrument.LiveInstrumentEventType.BREAKPOINT_HIT; -import static spp.protocol.instrument.LiveInstrumentEventType.BREAKPOINT_REMOVED; +import static spp.protocol.instrument.event.LiveInstrumentEventType.BREAKPOINT_HIT; +import static spp.protocol.instrument.event.LiveInstrumentEventType.BREAKPOINT_REMOVED; public class BreakpointStatusBar extends JPanel implements StatusBar, VisibleAreaListener { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java index 911298af6..297184afb 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java @@ -9,8 +9,8 @@ import spp.jetbrains.sourcemarker.PluginIcons; import spp.jetbrains.sourcemarker.PluginUI; import spp.jetbrains.sourcemarker.service.InstrumentEventListener; -import spp.protocol.instrument.LiveInstrumentEvent; import spp.protocol.instrument.LiveMeter; +import spp.protocol.instrument.event.LiveInstrumentEvent; import spp.protocol.instrument.meter.MeterType; import javax.swing.*; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java index f577abcd9..867837bc5 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java @@ -26,7 +26,13 @@ import spp.jetbrains.sourcemarker.settings.LiveLogConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.artifact.log.Log; -import spp.protocol.instrument.*; +import spp.protocol.instrument.LiveInstrument; +import spp.protocol.instrument.LiveLog; +import spp.protocol.instrument.LiveSourceLocation; +import spp.protocol.instrument.event.LiveInstrumentEvent; +import spp.protocol.instrument.event.LiveInstrumentRemoved; +import spp.protocol.instrument.throttle.InstrumentThrottle; +import spp.protocol.instrument.throttle.ThrottleStep; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -53,8 +59,8 @@ import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; -import static spp.protocol.instrument.LiveInstrumentEventType.LOG_HIT; -import static spp.protocol.instrument.LiveInstrumentEventType.LOG_REMOVED; +import static spp.protocol.instrument.event.LiveInstrumentEventType.LOG_HIT; +import static spp.protocol.instrument.event.LiveInstrumentEventType.LOG_REMOVED; public class LogStatusBar extends JPanel implements StatusBar, VisibleAreaListener, InstrumentEventListener { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java index 61e66775c..994dd56c0 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java @@ -22,9 +22,9 @@ import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.LiveInstrument; -import spp.protocol.instrument.LiveInstrumentRemoved; import spp.protocol.instrument.LiveMeter; import spp.protocol.instrument.LiveSourceLocation; +import spp.protocol.instrument.event.LiveInstrumentRemoved; import spp.protocol.instrument.meter.MeterType; import spp.protocol.instrument.meter.MetricValue; import spp.protocol.instrument.meter.MetricValueType; @@ -47,7 +47,7 @@ import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; -import static spp.protocol.instrument.LiveInstrumentEventType.METER_REMOVED; +import static spp.protocol.instrument.event.LiveInstrumentEventType.METER_REMOVED; public class MeterStatusBar extends JPanel implements StatusBar, VisibleAreaListener { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java index fc334a10b..9a5c1891f 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java @@ -22,9 +22,9 @@ import spp.jetbrains.sourcemarker.settings.LiveMeterConfigurationPanel; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.protocol.instrument.LiveInstrument; -import spp.protocol.instrument.LiveInstrumentRemoved; import spp.protocol.instrument.LiveSourceLocation; import spp.protocol.instrument.LiveSpan; +import spp.protocol.instrument.event.LiveInstrumentRemoved; import javax.swing.*; import javax.swing.border.CompoundBorder; @@ -44,7 +44,7 @@ import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; -import static spp.protocol.instrument.LiveInstrumentEventType.METER_REMOVED; +import static spp.protocol.instrument.event.LiveInstrumentEventType.METER_REMOVED; public class SpanStatusBar extends JPanel implements StatusBar, VisibleAreaListener { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/InstrumentEventListener.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/InstrumentEventListener.kt index 80d469981..089e3fe85 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/InstrumentEventListener.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/InstrumentEventListener.kt @@ -17,7 +17,7 @@ */ package spp.jetbrains.sourcemarker.service -import spp.protocol.instrument.LiveInstrumentEvent +import spp.protocol.instrument.event.LiveInstrumentEvent /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index 7fcda61bf..b8eb3bb01 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -37,9 +37,9 @@ import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated import spp.protocol.SourceMarkerServices.Instance import spp.protocol.SourceMarkerServices.Provide -import spp.protocol.instrument.* -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit -import spp.protocol.instrument.log.event.LiveLogHit +import spp.protocol.instrument.LiveBreakpoint +import spp.protocol.instrument.LiveLog +import spp.protocol.instrument.event.* /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt index 6dd1af2d7..52ebd5ef4 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt @@ -52,8 +52,8 @@ import spp.protocol.artifact.trace.Trace import spp.protocol.artifact.trace.TraceOrderType import spp.protocol.artifact.trace.TraceResult import spp.protocol.artifact.trace.TraceSpan -import spp.protocol.instrument.LiveInstrumentEvent -import spp.protocol.instrument.LiveInstrumentEventType.METER_UPDATED +import spp.protocol.instrument.event.LiveInstrumentEvent +import spp.protocol.instrument.event.LiveInstrumentEventType.METER_UPDATED import spp.protocol.instrument.meter.MeterType import spp.protocol.view.LiveViewEvent import java.net.URI diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointEventColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointEventColumnInfo.kt index 757ddba29..95f7a8ac4 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointEventColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointEventColumnInfo.kt @@ -19,13 +19,13 @@ package spp.jetbrains.sourcemarker.service.breakpoint import com.intellij.util.ui.ColumnInfo import com.intellij.util.ui.table.IconTableCellRenderer +import kotlinx.datetime.toJavaInstant +import spp.jetbrains.sourcemarker.icons.SourceMarkerIcons import spp.protocol.artifact.exception.methodName import spp.protocol.artifact.exception.qualifiedClassName import spp.protocol.artifact.exception.shortQualifiedClassName import spp.protocol.artifact.exception.sourceAsLineNumber -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit -import spp.jetbrains.sourcemarker.icons.SourceMarkerIcons -import kotlinx.datetime.toJavaInstant +import spp.protocol.instrument.event.LiveBreakpointHit import java.time.ZoneId import java.time.format.DateTimeFormatter import javax.swing.Icon diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt index 8277afeab..ebd279b0d 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt @@ -18,14 +18,14 @@ package spp.jetbrains.sourcemarker.service.breakpoint import com.intellij.util.ui.ColumnInfo -import spp.protocol.instrument.LiveInstrumentEvent -import spp.protocol.instrument.LiveInstrumentEventType -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit -import spp.protocol.utils.toPrettyDuration -import spp.jetbrains.sourcemarker.PluginBundle.message import io.vertx.core.json.Json import kotlinx.datetime.Clock -import spp.protocol.instrument.LiveInstrumentRemoved +import spp.jetbrains.sourcemarker.PluginBundle.message +import spp.protocol.instrument.event.LiveBreakpointHit +import spp.protocol.instrument.event.LiveInstrumentEvent +import spp.protocol.instrument.event.LiveInstrumentEventType +import spp.protocol.instrument.event.LiveInstrumentRemoved +import spp.protocol.utils.toPrettyDuration /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitWindowService.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitWindowService.kt index 29834a73d..5c6e01d7a 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitWindowService.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitWindowService.kt @@ -30,12 +30,12 @@ import com.intellij.ui.content.ContentManager import com.intellij.ui.content.ContentManagerEvent import com.intellij.ui.content.ContentManagerListener import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit +import org.slf4j.LoggerFactory import spp.jetbrains.sourcemarker.icons.SourceMarkerIcons.LIVE_BREAKPOINT_DISABLED_ICON import spp.jetbrains.sourcemarker.service.breakpoint.LiveBreakpointConstants.LIVE_BREAKPOINT_NAME import spp.jetbrains.sourcemarker.service.breakpoint.ui.BreakpointHitWindow import spp.jetbrains.sourcemarker.service.breakpoint.ui.EventsWindow -import org.slf4j.LoggerFactory +import spp.protocol.instrument.event.LiveBreakpointHit /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/tree/VariableRootSimpleNode.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/tree/VariableRootSimpleNode.kt index fa0665105..82f7cf57d 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/tree/VariableRootSimpleNode.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/tree/VariableRootSimpleNode.kt @@ -24,7 +24,7 @@ import spp.jetbrains.marker.jvm.JVMVariableSimpleNode import spp.jetbrains.marker.py.PythonVariableRootNode import spp.jetbrains.sourcemarker.activities.PluginSourceMarkerStartupActivity.Companion.PYCHARM_PRODUCT_CODES import spp.jetbrains.sourcemarker.service.breakpoint.StackFrameManager -import spp.protocol.instrument.LiveVariableScope +import spp.protocol.instrument.variable.LiveVariableScope /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsTab.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsTab.kt index 41266d07b..dc5aa5cae 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsTab.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsTab.kt @@ -29,7 +29,7 @@ import spp.jetbrains.sourcemarker.activities.PluginSourceMarkerStartupActivity import spp.jetbrains.sourcemarker.icons.SourceMarkerIcons.LIVE_BREAKPOINT_ACTIVE_ICON import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointEventColumnInfo import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService -import spp.protocol.instrument.breakpoint.event.LiveBreakpointHit +import spp.protocol.instrument.event.LiveBreakpointHit import java.awt.BorderLayout import java.awt.Point import java.awt.event.MouseAdapter diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt index 80dbce022..5e0535459 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt @@ -18,14 +18,14 @@ package spp.jetbrains.sourcemarker.service.log import com.intellij.util.ui.ColumnInfo -import spp.protocol.instrument.LiveInstrumentEvent -import spp.protocol.instrument.LiveInstrumentEventType -import spp.protocol.instrument.log.event.LiveLogHit -import spp.protocol.utils.toPrettyDuration -import spp.jetbrains.sourcemarker.PluginBundle.message import io.vertx.core.json.Json import kotlinx.datetime.Clock -import spp.protocol.instrument.LiveInstrumentRemoved +import spp.jetbrains.sourcemarker.PluginBundle.message +import spp.protocol.instrument.event.LiveInstrumentEvent +import spp.protocol.instrument.event.LiveInstrumentEventType +import spp.protocol.instrument.event.LiveInstrumentRemoved +import spp.protocol.instrument.event.LiveLogHit +import spp.protocol.utils.toPrettyDuration /** * todo: description. From d0f9347150685f39dfada47b68f1579522606b55 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 16:36:55 -0500 Subject: [PATCH 10/42] clean --- .../spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt index 5f23fdbbc..e94cec454 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt @@ -31,7 +31,6 @@ import monitor.skywalking.protocol.trace.QueryTraceQuery import monitor.skywalking.protocol.type.QueryOrder import monitor.skywalking.protocol.type.TraceState import spp.protocol.artifact.ArtifactQualifiedName -import java.math.BigDecimal fun toProtocol( artifactQualifiedName: ArtifactQualifiedName, From 3fac954c7d9661e146ea274217df92fd39b2bae5 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 16:44:13 -0500 Subject: [PATCH 11/42] organize imports --- .../mapper/api/impl/SourceMapperImpl.kt | 2 +- .../mapper/vcs/git/GitRepositoryMapper.kt | 2 +- .../mapper/vcs/git/LogFollowCommand.kt | 8 +++---- .../integration/GroovyModificationTest.kt | 10 ++++----- .../integration/JavaModificationTest.kt | 10 ++++----- .../integration/KotlinModificationTest.kt | 10 ++++----- .../jetbrains/marker/jvm/ArtifactSearch.kt | 8 +++---- .../marker/jvm/JVMArtifactNamingService.kt | 4 ++-- .../marker/jvm/JVMSourceInlayHintProvider.kt | 10 ++++----- .../marker/jvm/psi/EndpointDetector.kt | 12 +++++------ .../marker/jvm/psi/LoggerDetector.kt | 8 +++---- .../psi/endpoint/SkywalkingTraceEndpoint.kt | 4 ++-- .../jvm/psi/endpoint/SpringMVCEndpoint.kt | 4 ++-- .../marker/py/PythonLineMarkerProvider.kt | 2 +- .../marker/plugin/SourceLineMarkerProvider.kt | 2 +- .../marker/source/SourceFileMarker.kt | 2 +- .../source/mark/SourceMarkPopupAction.kt | 4 ++-- .../monitor/skywalking/SkywalkingClient.kt | 7 +++---- .../skywalking/SkywalkingExtensions.kt | 12 +++++------ .../skywalking/bridge/EndpointBridge.kt | 2 +- .../bridge/EndpointMetricsBridge.kt | 6 +++--- .../skywalking/bridge/EndpointTracesBridge.kt | 12 +++++------ .../monitor/skywalking/bridge/LogsBridge.kt | 12 +++++------ .../skywalking/bridge/ServiceBridge.kt | 4 ++-- .../bridge/ServiceInstanceBridge.kt | 4 ++-- .../skywalking/model/GetEndpointMetrics.kt | 2 +- .../model/GetMultipleEndpointMetrics.kt | 2 +- .../monitor/skywalking/model/ZonedDuration.kt | 2 +- .../jetbrains/sourcemarker/ControlBar.java | 5 +---- .../element/LiveControlBarRow.java | 21 ++++--------------- .../LiveBreakpointConfigurationPanel.java | 3 +-- .../settings/LiveLogConfigurationPanel.java | 9 ++++---- .../status/LiveBreakpointStatusPanel.java | 12 ++--------- .../PluginSourceMarkerStartupActivity.kt | 6 +++--- .../console/SourceMarkerToolWindowFactory.kt | 2 +- .../sourcemarker/mark/SourceMarkKeys.kt | 4 ++-- .../sourcemarker/reporting/error-report.kt | 4 ++-- .../breakpoint/ExecutionPointManager.kt | 2 +- .../painter/VariableEditorLinePainter.kt | 1 - .../breakpoint/ui/BreakpointHitWindow.kt | 6 +++--- .../service/breakpoint/ui/EventsWindow.kt | 2 +- .../service/breakpoint/ui/FramesTab.kt | 4 ++-- .../settings/SourceMarkerConfigurable.kt | 4 ++-- .../status/util/AutocompleteField.kt | 2 +- .../spp/jetbrains/StandaloneLogsLiveView.kt | 14 ++++++------- .../spp/jetbrains/StandaloneTracesLiveView.kt | 14 ++++++------- .../mapper/vcs/git/GitRepositoryMapperTest.kt | 2 +- .../mapper/vcs/git/MethodRenameTest.kt | 10 ++++----- .../portal/display/views/ActivityViewTest.kt | 12 +++++------ .../endpoint/GroovyEndpointDetectorTest.kt | 4 ++-- .../psi/endpoint/JavaEndpointDetectorTest.kt | 4 ++-- .../endpoint/KotlinEndpointDetectorTest.kt | 4 ++-- .../endpoint/ScalaEndpointNameDetectorTest.kt | 4 ++-- .../InstrumentConditionParserTest.kt | 4 ++-- 54 files changed, 149 insertions(+), 177 deletions(-) diff --git a/mapper/src/main/kotlin/spp/jetbrains/mapper/api/impl/SourceMapperImpl.kt b/mapper/src/main/kotlin/spp/jetbrains/mapper/api/impl/SourceMapperImpl.kt index 3274951d9..edf50d779 100644 --- a/mapper/src/main/kotlin/spp/jetbrains/mapper/api/impl/SourceMapperImpl.kt +++ b/mapper/src/main/kotlin/spp/jetbrains/mapper/api/impl/SourceMapperImpl.kt @@ -17,12 +17,12 @@ */ package spp.jetbrains.mapper.api.impl +import org.slf4j.LoggerFactory import spp.jetbrains.mapper.api.SourceMapper import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper import spp.jetbrains.mapper.vcs.git.LogFollowCommand import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.LocalArtifact -import org.slf4j.LoggerFactory import java.util.* /** diff --git a/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapper.kt b/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapper.kt index 2aa24aa02..550ad7483 100644 --- a/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapper.kt +++ b/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapper.kt @@ -18,7 +18,6 @@ package spp.jetbrains.mapper.vcs.git import com.google.common.base.Preconditions -import spp.jetbrains.mapper.extend.SourceCodeTokenizer import jp.ac.titech.c.se.stein.PorcelainAPI import jp.ac.titech.c.se.stein.core.Context import jp.ac.titech.c.se.stein.core.EntrySet @@ -29,6 +28,7 @@ import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.lib.Repository import org.slf4j.LoggerFactory +import spp.jetbrains.mapper.extend.SourceCodeTokenizer import java.io.File import java.nio.charset.StandardCharsets import java.util.* diff --git a/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/LogFollowCommand.kt b/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/LogFollowCommand.kt index 4a33d2b2f..72ee91365 100644 --- a/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/LogFollowCommand.kt +++ b/mapper/src/main/kotlin/spp/jetbrains/mapper/vcs/git/LogFollowCommand.kt @@ -17,10 +17,6 @@ */ package spp.jetbrains.mapper.vcs.git -import spp.jetbrains.mapper.api.impl.SourceMapperImpl -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType -import spp.protocol.artifact.LocalArtifact import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.errors.GitAPIException import org.eclipse.jgit.diff.DiffEntry @@ -33,6 +29,10 @@ import org.eclipse.jgit.lib.Repository import org.eclipse.jgit.revwalk.RevCommit import org.eclipse.jgit.treewalk.TreeWalk import org.slf4j.LoggerFactory +import spp.jetbrains.mapper.api.impl.SourceMapperImpl +import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.ArtifactType +import spp.protocol.artifact.LocalArtifact import java.io.IOException /** diff --git a/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/GroovyModificationTest.kt b/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/GroovyModificationTest.kt index 9966e013c..69d914876 100644 --- a/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/GroovyModificationTest.kt +++ b/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/GroovyModificationTest.kt @@ -17,11 +17,6 @@ */ package spp.jetbrains.mapper.integration -import spp.jetbrains.mapper.api.impl.SourceMapperImpl -import spp.jetbrains.mapper.extend.SourceCodeTokenizer -import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.lib.Constants @@ -29,6 +24,11 @@ import org.intellij.lang.annotations.Language import org.junit.Assert.* import org.junit.Ignore import org.junit.Test +import spp.jetbrains.mapper.api.impl.SourceMapperImpl +import spp.jetbrains.mapper.extend.SourceCodeTokenizer +import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper +import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.ArtifactType import java.io.File import java.nio.file.Files import java.util.* diff --git a/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/JavaModificationTest.kt b/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/JavaModificationTest.kt index 2fbacf4a5..94eddf0a2 100644 --- a/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/JavaModificationTest.kt +++ b/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/JavaModificationTest.kt @@ -17,11 +17,6 @@ */ package spp.jetbrains.mapper.integration -import spp.jetbrains.mapper.api.impl.SourceMapperImpl -import spp.jetbrains.mapper.extend.SourceCodeTokenizer -import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.lib.Constants @@ -29,6 +24,11 @@ import org.intellij.lang.annotations.Language import org.junit.Assert.* import org.junit.Ignore import org.junit.Test +import spp.jetbrains.mapper.api.impl.SourceMapperImpl +import spp.jetbrains.mapper.extend.SourceCodeTokenizer +import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper +import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.ArtifactType import java.io.File import java.nio.file.Files import java.util.* diff --git a/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/KotlinModificationTest.kt b/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/KotlinModificationTest.kt index ee9ac3caf..33faa1d71 100644 --- a/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/KotlinModificationTest.kt +++ b/mapper/src/test/kotlin/spp/jetbrains/mapper/integration/KotlinModificationTest.kt @@ -17,11 +17,6 @@ */ package spp.jetbrains.mapper.integration -import spp.jetbrains.mapper.api.impl.SourceMapperImpl -import spp.jetbrains.mapper.extend.SourceCodeTokenizer -import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.lib.Constants @@ -29,6 +24,11 @@ import org.intellij.lang.annotations.Language import org.junit.Assert.* import org.junit.Ignore import org.junit.Test +import spp.jetbrains.mapper.api.impl.SourceMapperImpl +import spp.jetbrains.mapper.extend.SourceCodeTokenizer +import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper +import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.ArtifactType import java.io.File import java.nio.file.Files import java.util.* diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt index 5f10d7f9c..155fe27eb 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt @@ -26,10 +26,6 @@ import com.intellij.psi.* import com.intellij.psi.search.FileTypeIndex import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.ProjectScope -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.marker.source.JVMMarkerUtils -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType import io.vertx.core.Promise import io.vertx.core.Vertx import io.vertx.kotlin.coroutines.await @@ -42,6 +38,10 @@ import org.jetbrains.uast.UMethod import org.jetbrains.uast.toUElement import org.jetbrains.uast.toUElementOfType import org.slf4j.LoggerFactory +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.marker.source.JVMMarkerUtils +import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.ArtifactType import spp.protocol.utils.ArtifactNameUtils import java.util.* diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMArtifactNamingService.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMArtifactNamingService.kt index b7d661c21..cad9a12fa 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMArtifactNamingService.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMArtifactNamingService.kt @@ -20,12 +20,12 @@ package spp.jetbrains.marker.jvm import com.intellij.psi.PsiClassOwner import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile -import spp.jetbrains.marker.ArtifactNamingService -import spp.jetbrains.marker.source.JVMMarkerUtils import org.jetbrains.uast.UClass import org.jetbrains.uast.UExpression import org.jetbrains.uast.UMethod import org.jetbrains.uast.toUElement +import spp.jetbrains.marker.ArtifactNamingService +import spp.jetbrains.marker.source.JVMMarkerUtils import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMSourceInlayHintProvider.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMSourceInlayHintProvider.kt index e7a33320e..92bbec284 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMSourceInlayHintProvider.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/JVMSourceInlayHintProvider.kt @@ -23,17 +23,17 @@ import com.intellij.openapi.editor.BlockInlayPriority import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod import com.intellij.psi.PsiStatement -import spp.jetbrains.marker.SourceMarker -import spp.jetbrains.marker.plugin.SourceInlayHintProvider -import spp.jetbrains.marker.source.JVMMarkerUtils -import spp.jetbrains.marker.source.mark.inlay.InlayMark -import spp.jetbrains.marker.source.mark.inlay.config.InlayMarkVirtualText import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod import org.jetbrains.uast.UExpression import org.jetbrains.uast.UMethod import org.jetbrains.uast.toUElement +import spp.jetbrains.marker.SourceMarker +import spp.jetbrains.marker.plugin.SourceInlayHintProvider +import spp.jetbrains.marker.source.JVMMarkerUtils +import spp.jetbrains.marker.source.mark.inlay.InlayMark +import spp.jetbrains.marker.source.mark.inlay.config.InlayMarkVirtualText /** * todo: description. diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/EndpointDetector.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/EndpointDetector.kt index 78c36de21..41bd2b306 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/EndpointDetector.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/EndpointDetector.kt @@ -19,12 +19,6 @@ package spp.jetbrains.marker.jvm.psi import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.util.Computable -import spp.jetbrains.marker.jvm.psi.endpoint.SkywalkingTraceEndpoint -import spp.jetbrains.marker.jvm.psi.endpoint.SpringMVCEndpoint -import spp.jetbrains.marker.source.mark.api.MethodSourceMark -import spp.jetbrains.marker.source.mark.api.SourceMark -import spp.jetbrains.marker.source.mark.api.key.SourceKey -import spp.jetbrains.monitor.skywalking.bridge.EndpointBridge import io.vertx.core.Future import io.vertx.core.Promise import io.vertx.core.Vertx @@ -39,6 +33,12 @@ import kotlinx.coroutines.withContext import org.jetbrains.uast.UMethod import org.jetbrains.uast.toUElement import org.slf4j.LoggerFactory +import spp.jetbrains.marker.jvm.psi.endpoint.SkywalkingTraceEndpoint +import spp.jetbrains.marker.jvm.psi.endpoint.SpringMVCEndpoint +import spp.jetbrains.marker.source.mark.api.MethodSourceMark +import spp.jetbrains.marker.source.mark.api.SourceMark +import spp.jetbrains.marker.source.mark.api.key.SourceKey +import spp.jetbrains.monitor.skywalking.bridge.EndpointBridge import java.util.* /** diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/LoggerDetector.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/LoggerDetector.kt index 197065958..3cc3f5d50 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/LoggerDetector.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/LoggerDetector.kt @@ -27,10 +27,6 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethodCallExpression import com.intellij.refactoring.suggested.endOffset import com.intellij.refactoring.suggested.startOffset -import spp.jetbrains.marker.source.SourceFileMarker -import spp.jetbrains.marker.source.mark.api.MethodSourceMark -import spp.jetbrains.marker.source.mark.api.key.SourceKey -import spp.jetbrains.marker.source.mark.inlay.InlayMark import io.vertx.core.Future import io.vertx.core.Promise import io.vertx.core.Vertx @@ -43,6 +39,10 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.stringValue import org.jetbrains.uast.UMethod import org.jetbrains.uast.toUElement import org.slf4j.LoggerFactory +import spp.jetbrains.marker.source.SourceFileMarker +import spp.jetbrains.marker.source.mark.api.MethodSourceMark +import spp.jetbrains.marker.source.mark.api.key.SourceKey +import spp.jetbrains.marker.source.mark.inlay.InlayMark /** * Detects the presence of log statements within methods and saves log patterns. diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SkywalkingTraceEndpoint.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SkywalkingTraceEndpoint.kt index 0bfc78f64..8b5a905c1 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SkywalkingTraceEndpoint.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SkywalkingTraceEndpoint.kt @@ -18,12 +18,12 @@ package spp.jetbrains.marker.jvm.psi.endpoint import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.marker.jvm.psi.EndpointDetector.DetectedEndpoint import io.vertx.core.Future import io.vertx.core.Promise import org.jetbrains.uast.UMethod import org.jetbrains.uast.expressions.UInjectionHost +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.marker.jvm.psi.EndpointDetector.DetectedEndpoint import java.util.* /** diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SpringMVCEndpoint.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SpringMVCEndpoint.kt index 1a504bd27..f219ee4a0 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SpringMVCEndpoint.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/psi/endpoint/SpringMVCEndpoint.kt @@ -19,8 +19,6 @@ package spp.jetbrains.marker.jvm.psi.endpoint import com.intellij.lang.Language import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.marker.jvm.psi.EndpointDetector.DetectedEndpoint import io.vertx.core.Future import io.vertx.core.Promise import org.jetbrains.plugins.groovy.lang.psi.uast.GrUReferenceExpression @@ -31,6 +29,8 @@ import org.jetbrains.uast.kotlin.KotlinStringULiteralExpression import org.jetbrains.uast.kotlin.KotlinUQualifiedReferenceExpression import org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression import org.jetbrains.uast.kotlin.expressions.KotlinUCollectionLiteralExpression +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.marker.jvm.psi.EndpointDetector.DetectedEndpoint import java.util.* /** diff --git a/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonLineMarkerProvider.kt b/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonLineMarkerProvider.kt index e0b4ae34e..f62219db5 100644 --- a/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonLineMarkerProvider.kt +++ b/marker/py-marker/src/main/kotlin/spp/jetbrains/marker/py/PythonLineMarkerProvider.kt @@ -20,11 +20,11 @@ package spp.jetbrains.marker.py import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.psi.PsiElement import com.jetbrains.python.psi.PyFile +import org.slf4j.LoggerFactory import spp.jetbrains.marker.SourceMarker import spp.jetbrains.marker.plugin.SourceLineMarkerProvider import spp.jetbrains.marker.source.SourceFileMarker import spp.jetbrains.marker.source.mark.gutter.GutterMark -import org.slf4j.LoggerFactory /** * Associates Python [GutterMark]s to PSI elements. diff --git a/marker/src/main/kotlin/spp/jetbrains/marker/plugin/SourceLineMarkerProvider.kt b/marker/src/main/kotlin/spp/jetbrains/marker/plugin/SourceLineMarkerProvider.kt index 1510afe5c..070b2da31 100644 --- a/marker/src/main/kotlin/spp/jetbrains/marker/plugin/SourceLineMarkerProvider.kt +++ b/marker/src/main/kotlin/spp/jetbrains/marker/plugin/SourceLineMarkerProvider.kt @@ -22,10 +22,10 @@ import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.codeInsight.daemon.LineMarkerProviderDescriptor import com.intellij.openapi.editor.markup.GutterIconRenderer.Alignment.CENTER import com.intellij.psi.PsiElement +import org.slf4j.LoggerFactory import spp.jetbrains.marker.SourceMarker import spp.jetbrains.marker.source.mark.api.key.SourceKey import spp.jetbrains.marker.source.mark.gutter.GutterMark -import org.slf4j.LoggerFactory /** * Used to associate [GutterMark]s with IntelliJ PSI elements. diff --git a/marker/src/main/kotlin/spp/jetbrains/marker/source/SourceFileMarker.kt b/marker/src/main/kotlin/spp/jetbrains/marker/source/SourceFileMarker.kt index df9ae9579..8b093e294 100755 --- a/marker/src/main/kotlin/spp/jetbrains/marker/source/SourceFileMarker.kt +++ b/marker/src/main/kotlin/spp/jetbrains/marker/source/SourceFileMarker.kt @@ -26,6 +26,7 @@ import com.intellij.openapi.util.Key import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiNameIdentifierOwner +import org.slf4j.LoggerFactory import spp.jetbrains.marker.source.mark.api.* import spp.jetbrains.marker.source.mark.api.event.SourceMarkEvent import spp.jetbrains.marker.source.mark.api.event.SourceMarkEventCode @@ -35,7 +36,6 @@ import spp.jetbrains.marker.source.mark.gutter.ExpressionGutterMark import spp.jetbrains.marker.source.mark.gutter.MethodGutterMark import spp.jetbrains.marker.source.mark.inlay.ExpressionInlayMark import spp.jetbrains.marker.source.mark.inlay.MethodInlayMark -import org.slf4j.LoggerFactory import spp.protocol.artifact.ArtifactQualifiedName import java.util.* diff --git a/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/SourceMarkPopupAction.kt b/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/SourceMarkPopupAction.kt index 3c4d98954..a890ab2bd 100644 --- a/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/SourceMarkPopupAction.kt +++ b/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/SourceMarkPopupAction.kt @@ -23,6 +23,8 @@ import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange +import org.jetbrains.annotations.NotNull +import org.slf4j.LoggerFactory import spp.jetbrains.marker.SourceMarker import spp.jetbrains.marker.source.SourceFileMarker import spp.jetbrains.marker.source.mark.api.ClassSourceMark @@ -30,8 +32,6 @@ import spp.jetbrains.marker.source.mark.api.MethodSourceMark import spp.jetbrains.marker.source.mark.api.SourceMark import spp.jetbrains.marker.source.mark.api.event.SourceMarkEvent import spp.jetbrains.marker.source.mark.api.event.SourceMarkEventCode -import org.jetbrains.annotations.NotNull -import org.slf4j.LoggerFactory /** * todo: description. diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingClient.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingClient.kt index 2feb65aca..6711dcbd7 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingClient.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingClient.kt @@ -20,9 +20,6 @@ package spp.jetbrains.monitor.skywalking import com.apollographql.apollo3.ApolloClient import com.apollographql.apollo3.api.Optional import com.codahale.metrics.MetricRegistry -import spp.jetbrains.monitor.skywalking.model.GetEndpointMetrics -import spp.jetbrains.monitor.skywalking.model.GetEndpointTraces -import spp.jetbrains.monitor.skywalking.model.GetMultipleEndpointMetrics import io.vertx.core.Vertx import monitor.skywalking.protocol.log.QueryLogsQuery import monitor.skywalking.protocol.metadata.GetAllServicesQuery @@ -34,12 +31,14 @@ import monitor.skywalking.protocol.trace.QueryBasicTracesQuery import monitor.skywalking.protocol.trace.QueryTraceQuery import monitor.skywalking.protocol.type.* import org.slf4j.LoggerFactory +import spp.jetbrains.monitor.skywalking.model.GetEndpointMetrics +import spp.jetbrains.monitor.skywalking.model.GetEndpointTraces +import spp.jetbrains.monitor.skywalking.model.GetMultipleEndpointMetrics import spp.protocol.util.LocalMessageCodec import java.io.IOException import java.time.ZoneOffset.ofHours import java.time.ZonedDateTime import java.time.format.DateTimeFormatter -import java.util.* /** * Used to communicate with Apache SkyWalking. diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt index e94cec454..22d6dd1a9 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/SkywalkingExtensions.kt @@ -17,12 +17,6 @@ */ package spp.jetbrains.monitor.skywalking -import spp.jetbrains.monitor.skywalking.model.GetEndpointMetrics -import spp.protocol.artifact.QueryTimeFrame -import spp.protocol.artifact.metrics.ArtifactMetricResult -import spp.protocol.artifact.metrics.ArtifactMetrics -import spp.protocol.artifact.metrics.MetricType -import spp.protocol.artifact.trace.* import kotlinx.datetime.Instant import monitor.skywalking.protocol.metrics.GetLinearIntValuesQuery import monitor.skywalking.protocol.metrics.GetMultipleLinearIntValuesQuery @@ -30,7 +24,13 @@ import monitor.skywalking.protocol.trace.QueryBasicTracesQuery import monitor.skywalking.protocol.trace.QueryTraceQuery import monitor.skywalking.protocol.type.QueryOrder import monitor.skywalking.protocol.type.TraceState +import spp.jetbrains.monitor.skywalking.model.GetEndpointMetrics import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.QueryTimeFrame +import spp.protocol.artifact.metrics.ArtifactMetricResult +import spp.protocol.artifact.metrics.ArtifactMetrics +import spp.protocol.artifact.metrics.MetricType +import spp.protocol.artifact.trace.* fun toProtocol( artifactQualifiedName: ArtifactQualifiedName, diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointBridge.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointBridge.kt index 5c0b6772c..c52685b98 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointBridge.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointBridge.kt @@ -17,7 +17,6 @@ */ package spp.jetbrains.monitor.skywalking.bridge -import spp.jetbrains.monitor.skywalking.SkywalkingClient import io.vertx.core.Vertx import io.vertx.core.eventbus.ReplyException import io.vertx.core.eventbus.ReplyFailure @@ -27,6 +26,7 @@ import io.vertx.kotlin.coroutines.dispatcher import kotlinx.coroutines.launch import monitor.skywalking.protocol.metadata.SearchEndpointQuery import org.slf4j.LoggerFactory +import spp.jetbrains.monitor.skywalking.SkywalkingClient import spp.protocol.util.LocalMessageCodec /** diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointMetricsBridge.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointMetricsBridge.kt index ff347568d..ce2fdab7f 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointMetricsBridge.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointMetricsBridge.kt @@ -17,9 +17,6 @@ */ package spp.jetbrains.monitor.skywalking.bridge -import spp.jetbrains.monitor.skywalking.SkywalkingClient -import spp.jetbrains.monitor.skywalking.model.GetEndpointMetrics -import spp.jetbrains.monitor.skywalking.model.GetMultipleEndpointMetrics import io.vertx.core.Vertx import io.vertx.kotlin.coroutines.CoroutineVerticle import io.vertx.kotlin.coroutines.await @@ -27,6 +24,9 @@ import io.vertx.kotlin.coroutines.dispatcher import kotlinx.coroutines.launch import monitor.skywalking.protocol.metrics.GetLinearIntValuesQuery import monitor.skywalking.protocol.metrics.GetMultipleLinearIntValuesQuery +import spp.jetbrains.monitor.skywalking.SkywalkingClient +import spp.jetbrains.monitor.skywalking.model.GetEndpointMetrics +import spp.jetbrains.monitor.skywalking.model.GetMultipleEndpointMetrics /** * todo: description. diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointTracesBridge.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointTracesBridge.kt index 1e5d39881..9e6f43b5a 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointTracesBridge.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/EndpointTracesBridge.kt @@ -17,18 +17,18 @@ */ package spp.jetbrains.monitor.skywalking.bridge -import spp.jetbrains.monitor.skywalking.SkywalkingClient -import spp.jetbrains.monitor.skywalking.model.GetEndpointTraces -import spp.jetbrains.monitor.skywalking.toProtocol -import spp.protocol.artifact.trace.Trace -import spp.protocol.artifact.trace.TraceResult -import spp.protocol.artifact.trace.TraceSpanStackQueryResult import io.vertx.core.Vertx import io.vertx.kotlin.coroutines.CoroutineVerticle import io.vertx.kotlin.coroutines.await import io.vertx.kotlin.coroutines.dispatcher import kotlinx.coroutines.launch import kotlinx.datetime.Instant +import spp.jetbrains.monitor.skywalking.SkywalkingClient +import spp.jetbrains.monitor.skywalking.model.GetEndpointTraces +import spp.jetbrains.monitor.skywalking.toProtocol +import spp.protocol.artifact.trace.Trace +import spp.protocol.artifact.trace.TraceResult +import spp.protocol.artifact.trace.TraceSpanStackQueryResult /** * todo: description. diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/LogsBridge.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/LogsBridge.kt index a3c791eb8..2317c985c 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/LogsBridge.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/LogsBridge.kt @@ -18,12 +18,6 @@ package spp.jetbrains.monitor.skywalking.bridge import com.apollographql.apollo3.api.Optional -import spp.jetbrains.monitor.skywalking.SkywalkingClient -import spp.jetbrains.monitor.skywalking.model.ZonedDuration -import spp.protocol.artifact.exception.LiveStackTrace -import spp.protocol.artifact.log.Log -import spp.protocol.artifact.log.LogOrderType -import spp.protocol.artifact.log.LogResult import io.vertx.core.AsyncResult import io.vertx.core.Future import io.vertx.core.Vertx @@ -35,6 +29,12 @@ import kotlinx.datetime.Clock import kotlinx.datetime.Instant import monitor.skywalking.protocol.type.LogQueryCondition import monitor.skywalking.protocol.type.Pagination +import spp.jetbrains.monitor.skywalking.SkywalkingClient +import spp.jetbrains.monitor.skywalking.model.ZonedDuration +import spp.protocol.artifact.exception.LiveStackTrace +import spp.protocol.artifact.log.Log +import spp.protocol.artifact.log.LogOrderType +import spp.protocol.artifact.log.LogResult import spp.protocol.util.LocalMessageCodec /** diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceBridge.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceBridge.kt index dabaf68cf..806b204c3 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceBridge.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceBridge.kt @@ -17,8 +17,6 @@ */ package spp.jetbrains.monitor.skywalking.bridge -import spp.jetbrains.monitor.skywalking.SkywalkingClient -import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import io.vertx.core.Vertx import io.vertx.core.eventbus.MessageConsumer import io.vertx.kotlin.coroutines.CoroutineVerticle @@ -26,6 +24,8 @@ import io.vertx.kotlin.coroutines.await import io.vertx.kotlin.coroutines.dispatcher import kotlinx.coroutines.launch import monitor.skywalking.protocol.metadata.GetAllServicesQuery +import spp.jetbrains.monitor.skywalking.SkywalkingClient +import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import java.time.ZonedDateTime /** diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceInstanceBridge.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceInstanceBridge.kt index 934246abf..feed39454 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceInstanceBridge.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/bridge/ServiceInstanceBridge.kt @@ -17,8 +17,6 @@ */ package spp.jetbrains.monitor.skywalking.bridge -import spp.jetbrains.monitor.skywalking.SkywalkingClient -import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import io.vertx.core.Vertx import io.vertx.core.eventbus.MessageConsumer import io.vertx.kotlin.coroutines.CoroutineVerticle @@ -26,6 +24,8 @@ import io.vertx.kotlin.coroutines.await import io.vertx.kotlin.coroutines.dispatcher import kotlinx.coroutines.launch import monitor.skywalking.protocol.metadata.GetServiceInstancesQuery +import spp.jetbrains.monitor.skywalking.SkywalkingClient +import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import java.time.ZonedDateTime /** diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetEndpointMetrics.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetEndpointMetrics.kt index d744929de..389b6a05a 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetEndpointMetrics.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetEndpointMetrics.kt @@ -17,8 +17,8 @@ */ package spp.jetbrains.monitor.skywalking.model -import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import kotlinx.datetime.Instant +import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import java.time.Duration import java.time.Period import java.time.ZonedDateTime diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetMultipleEndpointMetrics.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetMultipleEndpointMetrics.kt index 52e4506ef..4f32aaa18 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetMultipleEndpointMetrics.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/GetMultipleEndpointMetrics.kt @@ -17,8 +17,8 @@ */ package spp.jetbrains.monitor.skywalking.model -import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import kotlinx.datetime.Instant +import spp.jetbrains.monitor.skywalking.SkywalkingClient.DurationStep import java.time.Duration import java.time.Period import java.time.ZonedDateTime diff --git a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/ZonedDuration.kt b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/ZonedDuration.kt index ca7549b56..a3cc7c186 100644 --- a/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/ZonedDuration.kt +++ b/monitor/src/main/kotlin/spp/jetbrains/monitor/skywalking/model/ZonedDuration.kt @@ -17,8 +17,8 @@ */ package spp.jetbrains.monitor.skywalking.model -import spp.jetbrains.monitor.skywalking.SkywalkingClient import monitor.skywalking.protocol.type.Duration +import spp.jetbrains.monitor.skywalking.SkywalkingClient import java.time.ZonedDateTime /** diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java index 2b4ecba56..b7dbf941b 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java @@ -24,10 +24,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_17; -import static spp.jetbrains.sourcemarker.PluginUI.SELECT_COLOR_RED; -import static spp.jetbrains.sourcemarker.PluginUI.STATUS_BAR_TXT_BG_COLOR; -import static spp.jetbrains.sourcemarker.PluginUI.DFLT_BGND_COLOR; +import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; public class ControlBar extends JPanel implements VisibleAreaListener { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/element/LiveControlBarRow.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/element/LiveControlBarRow.java index df7bbe2fb..72edad976 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/element/LiveControlBarRow.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/element/LiveControlBarRow.java @@ -2,27 +2,14 @@ import com.intellij.util.ui.UIUtil; import com.jgoodies.forms.factories.FormFactory; -import com.jgoodies.forms.layout.CellConstraints; -import com.jgoodies.forms.layout.ColumnSpec; -import com.jgoodies.forms.layout.FormLayout; -import com.jgoodies.forms.layout.FormSpec; -import com.jgoodies.forms.layout.RowSpec; -import com.jgoodies.forms.layout.Sizes; +import com.jgoodies.forms.layout.*; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import static spp.jetbrains.sourcemarker.PluginUI.CONTROL_BAR_CMD_FOREGROUND; -import static spp.jetbrains.sourcemarker.PluginUI.PANEL_BACKGROUND_COLOR; -import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_PLAIN_11; -import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_PLAIN_15; -import static spp.jetbrains.sourcemarker.PluginUI.SELECT_COLOR_RED; +import java.util.*; + +import static spp.jetbrains.sourcemarker.PluginUI.*; public class LiveControlBarRow extends JPanel { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveBreakpointConfigurationPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveBreakpointConfigurationPanel.java index 3adfa139a..a9e065b7b 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveBreakpointConfigurationPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveBreakpointConfigurationPanel.java @@ -1,11 +1,10 @@ package spp.jetbrains.sourcemarker.settings; +import net.miginfocom.swing.MigLayout; import spp.jetbrains.sourcemarker.PluginUI; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import net.miginfocom.swing.MigLayout; import javax.swing.*; -import javax.swing.border.LineBorder; import java.awt.*; import java.util.Objects; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveLogConfigurationPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveLogConfigurationPanel.java index db859a3c1..c3114b324 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveLogConfigurationPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/LiveLogConfigurationPanel.java @@ -6,28 +6,27 @@ import com.intellij.openapi.editor.event.DocumentListener; import com.intellij.psi.PsiFile; import com.intellij.ui.EditorTextField; -import com.intellij.util.ui.UIUtil; import com.intellij.xdebugger.XDebuggerUtil; import com.intellij.xdebugger.XExpression; import com.intellij.xdebugger.XSourcePosition; import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider; import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl; import com.intellij.xdebugger.impl.ui.XDebuggerExpressionComboBox; +import net.miginfocom.swing.MigLayout; +import org.jetbrains.annotations.NotNull; import spp.jetbrains.marker.source.mark.inlay.InlayMark; import spp.jetbrains.sourcemarker.PluginUI; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; -import net.miginfocom.swing.MigLayout; -import org.jetbrains.annotations.NotNull; import javax.swing.*; -import javax.swing.border.LineBorder; import java.awt.*; import java.util.Objects; import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.DFLT_BGND_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_15; -import static spp.jetbrains.sourcemarker.activities.PluginSourceMarkerStartupActivity.*; +import static spp.jetbrains.sourcemarker.activities.PluginSourceMarkerStartupActivity.INTELLIJ_PRODUCT_CODES; +import static spp.jetbrains.sourcemarker.activities.PluginSourceMarkerStartupActivity.PYCHARM_PRODUCT_CODES; public class LiveLogConfigurationPanel extends JPanel { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveBreakpointStatusPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveBreakpointStatusPanel.java index ab53b3640..b89311e38 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveBreakpointStatusPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveBreakpointStatusPanel.java @@ -2,12 +2,7 @@ import com.codahale.metrics.Meter; import com.jgoodies.forms.factories.FormFactory; -import com.jgoodies.forms.layout.CellConstraints; -import com.jgoodies.forms.layout.ColumnSpec; -import com.jgoodies.forms.layout.FormLayout; -import com.jgoodies.forms.layout.FormSpec; -import com.jgoodies.forms.layout.RowSpec; -import com.jgoodies.forms.layout.Sizes; +import com.jgoodies.forms.layout.*; import spp.jetbrains.sourcemarker.PluginUI; import spp.protocol.utils.TimeUtilsKt; @@ -17,10 +12,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import static spp.jetbrains.sourcemarker.PluginUI.EXPIRY_FOREGROUND_COLOR; -import static spp.jetbrains.sourcemarker.PluginUI.LABEL_FOREGROUND_COLOR1; -import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_15; -import static spp.jetbrains.sourcemarker.PluginUI.SELECT_COLOR_RED; +import static spp.jetbrains.sourcemarker.PluginUI.*; public class LiveBreakpointStatusPanel extends JPanel { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/activities/PluginSourceMarkerStartupActivity.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/activities/PluginSourceMarkerStartupActivity.kt index bdf325791..2cc4ae22c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/activities/PluginSourceMarkerStartupActivity.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/activities/PluginSourceMarkerStartupActivity.kt @@ -23,13 +23,13 @@ import com.intellij.notification.Notifications import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project -import spp.jetbrains.marker.plugin.SourceMarkerStartupActivity -import spp.jetbrains.sourcemarker.PluginBundle -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import kotlinx.coroutines.runBlocking import org.apache.log4j.FileAppender import org.apache.log4j.Logger import org.apache.log4j.PatternLayout +import spp.jetbrains.marker.plugin.SourceMarkerStartupActivity +import spp.jetbrains.sourcemarker.PluginBundle +import spp.jetbrains.sourcemarker.SourceMarkerPlugin /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/console/SourceMarkerToolWindowFactory.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/console/SourceMarkerToolWindowFactory.kt index 767bc480b..2c7fbb05d 100755 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/console/SourceMarkerToolWindowFactory.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/console/SourceMarkerToolWindowFactory.kt @@ -23,10 +23,10 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.wm.ToolWindow import com.intellij.openapi.wm.ToolWindowAnchor import com.intellij.openapi.wm.ToolWindowFactory -import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import io.vertx.core.json.DecodeException import io.vertx.core.json.Json import org.slf4j.LoggerFactory +import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig /** * Displays logs from the SourceMarker plugin to a console window. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt index c7e5b046c..b1df1a0b5 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/mark/SourceMarkKeys.kt @@ -17,11 +17,11 @@ */ package spp.jetbrains.sourcemarker.mark +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.marker.jvm.psi.LoggerDetector import spp.jetbrains.marker.source.mark.api.SourceMark import spp.jetbrains.marker.source.mark.api.key.SourceKey import spp.jetbrains.portal.SourcePortal -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.marker.jvm.psi.LoggerDetector import spp.jetbrains.sourcemarker.service.InstrumentEventListener import spp.jetbrains.sourcemarker.status.StatusBar diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/reporting/error-report.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/reporting/error-report.kt index 8e245e3a1..6e3e4309c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/reporting/error-report.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/reporting/error-report.kt @@ -45,8 +45,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.SystemInfo import com.intellij.util.Consumer import com.intellij.util.io.decodeBase64 -import spp.jetbrains.sourcemarker.PluginBundle -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import io.vertx.core.json.JsonObject import org.eclipse.egit.github.core.Issue import org.eclipse.egit.github.core.Label @@ -54,6 +52,8 @@ import org.eclipse.egit.github.core.RepositoryId import org.eclipse.egit.github.core.client.GitHubClient import org.eclipse.egit.github.core.service.IssueService import org.slf4j.LoggerFactory +import spp.jetbrains.sourcemarker.PluginBundle +import spp.jetbrains.sourcemarker.SourceMarkerPlugin import java.awt.Component import java.io.IOException import java.io.PrintWriter diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ExecutionPointManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ExecutionPointManager.kt index 6e57ced09..8dfb34f2c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ExecutionPointManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ExecutionPointManager.kt @@ -25,10 +25,10 @@ import com.intellij.openapi.fileEditor.OpenFileDescriptor import com.intellij.openapi.project.Project import com.intellij.xdebugger.XDebuggerUtil import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter +import org.slf4j.LoggerFactory import spp.jetbrains.marker.SourceMarker import spp.protocol.artifact.exception.qualifiedClassName import spp.protocol.artifact.exception.sourceAsLineNumber -import org.slf4j.LoggerFactory /** * todo: probably don't need this as the breakpoint bar serves as the execution point indicator diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/painter/VariableEditorLinePainter.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/painter/VariableEditorLinePainter.kt index 726a8fe58..802caca68 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/painter/VariableEditorLinePainter.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/painter/VariableEditorLinePainter.kt @@ -29,7 +29,6 @@ import com.intellij.xdebugger.ui.DebuggerColors import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService import java.awt.Color import java.awt.Font -import java.util.* /** * todo: description. diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/BreakpointHitWindow.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/BreakpointHitWindow.kt index fe887de0a..a8b0c17c0 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/BreakpointHitWindow.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/BreakpointHitWindow.kt @@ -29,14 +29,14 @@ import com.intellij.openapi.util.Disposer import com.intellij.ui.content.Content import com.intellij.util.concurrency.AppExecutorUtil import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter -import spp.protocol.artifact.exception.LiveStackTrace -import spp.protocol.artifact.exception.LiveStackTraceElement +import io.vertx.core.json.Json import spp.jetbrains.sourcemarker.service.breakpoint.DebugStackFrameListener import spp.jetbrains.sourcemarker.service.breakpoint.ExecutionPointManager import spp.jetbrains.sourcemarker.service.breakpoint.LiveBreakpointConstants import spp.jetbrains.sourcemarker.service.breakpoint.StackFrameManager import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig -import io.vertx.core.json.Json +import spp.protocol.artifact.exception.LiveStackTrace +import spp.protocol.artifact.exception.LiveStackTraceElement import java.util.concurrent.CopyOnWriteArrayList import javax.swing.JComponent diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsWindow.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsWindow.kt index c6705f6e0..288bdff35 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsWindow.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/EventsWindow.kt @@ -23,8 +23,8 @@ import com.intellij.icons.AllIcons import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer -import spp.jetbrains.sourcemarker.service.breakpoint.LiveBreakpointConstants import spp.jetbrains.sourcemarker.service.breakpoint.DebugStackFrameListener +import spp.jetbrains.sourcemarker.service.breakpoint.LiveBreakpointConstants import spp.jetbrains.sourcemarker.service.breakpoint.StackFrameManager import java.util.concurrent.CopyOnWriteArrayList import javax.swing.JComponent diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/FramesTab.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/FramesTab.kt index 38aa5c733..9a461f483 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/FramesTab.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/ui/FramesTab.kt @@ -24,11 +24,11 @@ import com.intellij.ui.ColoredListCellRenderer import com.intellij.ui.SimpleTextAttributes import com.intellij.ui.components.JBList import com.intellij.ui.components.JBScrollPane -import spp.protocol.artifact.exception.LiveStackTraceElement -import spp.protocol.artifact.exception.sourceAsLineNumber import spp.jetbrains.sourcemarker.service.breakpoint.DebugStackFrameListener import spp.jetbrains.sourcemarker.service.breakpoint.StackFrameManager import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig +import spp.protocol.artifact.exception.LiveStackTraceElement +import spp.protocol.artifact.exception.sourceAsLineNumber import java.awt.BorderLayout import javax.swing.JList import javax.swing.JPanel diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/settings/SourceMarkerConfigurable.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/settings/SourceMarkerConfigurable.kt index cf6da5ded..39f07ba60 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/settings/SourceMarkerConfigurable.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/settings/SourceMarkerConfigurable.kt @@ -21,12 +21,12 @@ import com.intellij.ide.util.PropertiesComponent import com.intellij.openapi.options.Configurable import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.ProjectManager -import spp.jetbrains.sourcemarker.PluginBundle.message -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import io.vertx.core.json.DecodeException import io.vertx.core.json.Json import kotlinx.coroutines.runBlocking import org.slf4j.LoggerFactory +import spp.jetbrains.sourcemarker.PluginBundle.message +import spp.jetbrains.sourcemarker.SourceMarkerPlugin import javax.swing.JComponent /** diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutocompleteField.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutocompleteField.kt index d1578b7ed..b42dcfc0f 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutocompleteField.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutocompleteField.kt @@ -24,8 +24,8 @@ import com.intellij.util.ui.JBUI import com.intellij.util.ui.UIUtil import spp.jetbrains.sourcemarker.PluginIcons import spp.jetbrains.sourcemarker.PluginUI.* -import spp.jetbrains.sourcemarker.service.log.VariableParser import spp.jetbrains.sourcemarker.command.AutocompleteFieldRow +import spp.jetbrains.sourcemarker.service.log.VariableParser import spp.protocol.artifact.ArtifactQualifiedName import java.awt.* import java.awt.event.* diff --git a/plugin/src/test/kotlin/spp/jetbrains/StandaloneLogsLiveView.kt b/plugin/src/test/kotlin/spp/jetbrains/StandaloneLogsLiveView.kt index c57c75771..ac6aee7af 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/StandaloneLogsLiveView.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/StandaloneLogsLiveView.kt @@ -30,13 +30,6 @@ import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.PsiTestUtil import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase -import spp.jetbrains.portal.SourcePortal -import spp.protocol.ProtocolAddress.Global.RefreshLogs -import spp.protocol.portal.PageType -import spp.protocol.portal.PortalConfiguration -import spp.jetbrains.sourcemarker.SourceMarkerPlugin -import spp.jetbrains.sourcemarker.SourceMarkerPlugin.vertx -import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import io.vertx.core.Promise import io.vertx.core.json.Json import io.vertx.kotlin.coroutines.await @@ -47,8 +40,15 @@ import kotlinx.coroutines.runBlocking import org.junit.jupiter.api.Assumptions.assumeTrue import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import spp.jetbrains.portal.SourcePortal +import spp.jetbrains.sourcemarker.SourceMarkerPlugin +import spp.jetbrains.sourcemarker.SourceMarkerPlugin.vertx +import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig +import spp.protocol.ProtocolAddress.Global.RefreshLogs import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType +import spp.protocol.portal.PageType +import spp.protocol.portal.PortalConfiguration import java.io.File class StandaloneLogsLiveView : LightJavaCodeInsightFixtureTestCase() { diff --git a/plugin/src/test/kotlin/spp/jetbrains/StandaloneTracesLiveView.kt b/plugin/src/test/kotlin/spp/jetbrains/StandaloneTracesLiveView.kt index 9c4ff5e32..d8b5e07f9 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/StandaloneTracesLiveView.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/StandaloneTracesLiveView.kt @@ -30,13 +30,6 @@ import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.PsiTestUtil import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase -import spp.jetbrains.portal.SourcePortal -import spp.protocol.ProtocolAddress.Global.RefreshTraces -import spp.protocol.portal.PageType -import spp.protocol.portal.PortalConfiguration -import spp.jetbrains.sourcemarker.SourceMarkerPlugin -import spp.jetbrains.sourcemarker.SourceMarkerPlugin.vertx -import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import io.vertx.core.Promise import io.vertx.core.json.Json import io.vertx.kotlin.coroutines.await @@ -47,8 +40,15 @@ import kotlinx.coroutines.runBlocking import org.junit.jupiter.api.Assumptions.assumeTrue import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import spp.jetbrains.portal.SourcePortal +import spp.jetbrains.sourcemarker.SourceMarkerPlugin +import spp.jetbrains.sourcemarker.SourceMarkerPlugin.vertx +import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig +import spp.protocol.ProtocolAddress.Global.RefreshTraces import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType +import spp.protocol.portal.PageType +import spp.protocol.portal.PortalConfiguration import java.io.File class StandaloneTracesLiveView : LightJavaCodeInsightFixtureTestCase() { diff --git a/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapperTest.kt b/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapperTest.kt index 08991c990..59a0c1cd7 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapperTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/GitRepositoryMapperTest.kt @@ -17,12 +17,12 @@ */ package spp.jetbrains.mapper.vcs.git -import spp.jetbrains.mapper.SourceMapperTest import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.intellij.lang.annotations.Language import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test +import spp.jetbrains.mapper.SourceMapperTest import java.io.File import java.nio.file.Files import java.util.* diff --git a/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/MethodRenameTest.kt b/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/MethodRenameTest.kt index a5dad64de..114e2b4d1 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/MethodRenameTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/mapper/vcs/git/MethodRenameTest.kt @@ -17,11 +17,6 @@ */ package spp.jetbrains.mapper.vcs.git -import spp.jetbrains.mapper.SourceMapperTest -import spp.jetbrains.mapper.api.impl.SourceMapperImpl -import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper.Companion.originalCommitIdPattern -import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.artifact.ArtifactType import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.lib.AnyObjectId @@ -33,6 +28,11 @@ import org.eclipse.jgit.transport.URIish import org.intellij.lang.annotations.Language import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test +import spp.jetbrains.mapper.SourceMapperTest +import spp.jetbrains.mapper.api.impl.SourceMapperImpl +import spp.jetbrains.mapper.vcs.git.GitRepositoryMapper.Companion.originalCommitIdPattern +import spp.protocol.artifact.ArtifactQualifiedName +import spp.protocol.artifact.ArtifactType import java.io.File import java.nio.file.Files import java.util.* diff --git a/plugin/src/test/kotlin/spp/jetbrains/portal/display/views/ActivityViewTest.kt b/plugin/src/test/kotlin/spp/jetbrains/portal/display/views/ActivityViewTest.kt index bcb9aa432..b394b24af 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/portal/display/views/ActivityViewTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/portal/display/views/ActivityViewTest.kt @@ -17,18 +17,18 @@ */ package spp.jetbrains.portal.display.views -import spp.jetbrains.portal.SourcePortal -import spp.protocol.artifact.QueryTimeFrame -import spp.protocol.artifact.metrics.ArtifactMetricResult -import spp.protocol.artifact.metrics.ArtifactMetrics -import spp.protocol.artifact.metrics.MetricType -import spp.protocol.portal.PortalConfiguration import kotlinx.datetime.toKotlinInstant import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Test +import spp.jetbrains.portal.SourcePortal import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType +import spp.protocol.artifact.QueryTimeFrame +import spp.protocol.artifact.metrics.ArtifactMetricResult +import spp.protocol.artifact.metrics.ArtifactMetrics +import spp.protocol.artifact.metrics.MetricType +import spp.protocol.portal.PortalConfiguration import java.time.ZonedDateTime import java.time.temporal.ChronoUnit diff --git a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/GroovyEndpointDetectorTest.kt b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/GroovyEndpointDetectorTest.kt index 8d79faf6f..5233503f9 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/GroovyEndpointDetectorTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/GroovyEndpointDetectorTest.kt @@ -18,14 +18,14 @@ package spp.jetbrains.sourcemarker.psi.endpoint import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import org.intellij.lang.annotations.Language import org.jetbrains.uast.UFile import org.jetbrains.uast.toUElement import org.junit.jupiter.api.Test +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.sourcemarker.SourceMarkerPlugin class GroovyEndpointDetectorTest : EndpointDetectorTest() { diff --git a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/JavaEndpointDetectorTest.kt b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/JavaEndpointDetectorTest.kt index bb903a37c..65cd99bf5 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/JavaEndpointDetectorTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/JavaEndpointDetectorTest.kt @@ -18,14 +18,14 @@ package spp.jetbrains.sourcemarker.psi.endpoint import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import org.intellij.lang.annotations.Language import org.jetbrains.uast.UFile import org.jetbrains.uast.toUElement import org.junit.jupiter.api.Test +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.sourcemarker.SourceMarkerPlugin class JavaEndpointDetectorTest : EndpointDetectorTest() { diff --git a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/KotlinEndpointDetectorTest.kt b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/KotlinEndpointDetectorTest.kt index 92732baf4..5bba95961 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/KotlinEndpointDetectorTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/KotlinEndpointDetectorTest.kt @@ -18,14 +18,14 @@ package spp.jetbrains.sourcemarker.psi.endpoint import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import org.intellij.lang.annotations.Language import org.jetbrains.uast.UFile import org.jetbrains.uast.toUElement import org.junit.jupiter.api.Test +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.sourcemarker.SourceMarkerPlugin class KotlinEndpointDetectorTest : EndpointDetectorTest() { diff --git a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/ScalaEndpointNameDetectorTest.kt b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/ScalaEndpointNameDetectorTest.kt index 812267aee..1ea6a2300 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/ScalaEndpointNameDetectorTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/psi/endpoint/ScalaEndpointNameDetectorTest.kt @@ -18,14 +18,14 @@ package spp.jetbrains.sourcemarker.psi.endpoint import com.intellij.openapi.application.ApplicationManager -import spp.jetbrains.marker.jvm.psi.EndpointDetector -import spp.jetbrains.sourcemarker.SourceMarkerPlugin import io.vertx.kotlin.coroutines.await import kotlinx.coroutines.runBlocking import org.intellij.lang.annotations.Language import org.jetbrains.uast.UFile import org.jetbrains.uast.toUElement import org.junit.jupiter.api.Test +import spp.jetbrains.marker.jvm.psi.EndpointDetector +import spp.jetbrains.sourcemarker.SourceMarkerPlugin class ScalaEndpointNameDetectorTest : EndpointDetectorTest() { diff --git a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/InstrumentConditionParserTest.kt b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/InstrumentConditionParserTest.kt index f467ca1c4..655d44147 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/InstrumentConditionParserTest.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/InstrumentConditionParserTest.kt @@ -27,12 +27,12 @@ import com.intellij.psi.PsiJavaFile import com.intellij.testFramework.TestApplicationManager import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl -import spp.jetbrains.marker.InstrumentConditionParser -import spp.jetbrains.marker.jvm.JVMConditionParser import org.intellij.lang.annotations.Language import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +import spp.jetbrains.marker.InstrumentConditionParser +import spp.jetbrains.marker.jvm.JVMConditionParser class InstrumentConditionParserTest : LightJavaCodeInsightFixtureTestCase() { From 1f99248ac55a71a3beaa911b9808c41eb0474cab Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 17:04:33 -0500 Subject: [PATCH 12/42] refactor --- .../settings/PluginConfigurationPanel.java | 2 +- .../status/BreakpointStatusBar.java | 2 +- .../status/LiveMeterStatusPanel.java | 2 +- .../sourcemarker/status/LogStatusBar.java | 2 +- .../sourcemarker/status/MeterStatusBar.java | 2 +- .../sourcemarker/status/SpanStatusBar.java | 2 +- .../sourcemarker/SourceMarkerPlugin.kt | 26 +++++++++---------- .../command/ControlBarController.kt | 14 +++++----- .../discover/TCPServiceDiscoveryBackend.kt | 2 +- .../listeners/PortalEventListener.kt | 2 +- .../service/LiveInstrumentManager.kt | 4 +-- .../sourcemarker/service/LiveViewManager.kt | 2 +- .../service/LogCountIndicators.kt | 2 +- .../sourcemarker/status/LiveStatusManager.kt | 4 +-- .../jetbrains/StandaloneActivityLiveView.kt | 4 +-- 15 files changed, 36 insertions(+), 36 deletions(-) diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java index 9a99bbc61..4a3971224 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/settings/PluginConfigurationPanel.java @@ -22,7 +22,7 @@ import java.util.stream.Collectors; import static spp.jetbrains.sourcemarker.PluginBundle.message; -import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; +import static spp.protocol.SourceServices.Instance.INSTANCE; public class PluginConfigurationPanel { private JPanel myWholePanel; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java index cf84651b8..509731b56 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java @@ -53,7 +53,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; -import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; +import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.BREAKPOINT_HIT; import static spp.protocol.instrument.event.LiveInstrumentEventType.BREAKPOINT_REMOVED; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java index 297184afb..42566efc7 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LiveMeterStatusPanel.java @@ -22,7 +22,7 @@ import static spp.jetbrains.sourcemarker.PluginUI.LABEL_FOREGROUND_COLOR; import static spp.jetbrains.sourcemarker.PluginUI.ROBOTO_LIGHT_PLAIN_15; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; -import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; +import static spp.protocol.SourceServices.Instance.INSTANCE; public class LiveMeterStatusPanel extends JPanel implements InstrumentEventListener { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java index 867837bc5..e7ce2c755 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java @@ -58,7 +58,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; -import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; +import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.LOG_HIT; import static spp.protocol.instrument.event.LiveInstrumentEventType.LOG_REMOVED; diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java index 994dd56c0..c6d2ed712 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java @@ -46,7 +46,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; -import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; +import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.METER_REMOVED; public class MeterStatusBar extends JPanel implements StatusBar, VisibleAreaListener { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java index 9a5c1891f..611eae4f0 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java @@ -43,7 +43,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; -import static spp.protocol.SourceMarkerServices.Instance.INSTANCE; +import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.METER_REMOVED; public class SpanStatusBar extends JPanel implements StatusBar, VisibleAreaListener { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt index 6b1115902..caa43f1c1 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt @@ -95,8 +95,8 @@ import spp.jetbrains.sourcemarker.settings.getServicePortNormalized import spp.jetbrains.sourcemarker.settings.isSsl import spp.jetbrains.sourcemarker.settings.serviceHostNormalized import spp.jetbrains.sourcemarker.status.LiveStatusManager -import spp.protocol.SourceMarkerServices -import spp.protocol.SourceMarkerServices.Instance +import spp.protocol.SourceServices +import spp.protocol.SourceServices.Instance import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.endpoint.EndpointResult import spp.protocol.artifact.exception.LiveStackTraceElement @@ -107,9 +107,9 @@ import spp.protocol.artifact.trace.TraceSpan import spp.protocol.artifact.trace.TraceSpanStackQueryResult import spp.protocol.artifact.trace.TraceStack import spp.protocol.service.LiveService -import spp.protocol.service.live.LiveInstrumentService -import spp.protocol.service.live.LiveViewService -import spp.protocol.service.logging.LogCountIndicatorService +import spp.protocol.service.LiveInstrumentService +import spp.protocol.service.LiveViewService +import spp.protocol.service.LogCountIndicatorService import spp.protocol.util.KSerializers import spp.protocol.util.LocalMessageCodec import java.awt.Color @@ -318,12 +318,12 @@ object SourceMarkerPlugin { val availableRecords = discovery.getRecords { true }.await() //live service - if (availableRecords.any { it.name == SourceMarkerServices.Utilize.LIVE_SERVICE }) { + if (availableRecords.any { it.name == SourceServices.Utilize.LIVE_SERVICE }) { log.info("Live service available") Instance.liveService = ServiceProxyBuilder(vertx) .apply { config.serviceToken?.let { setToken(it) } } - .setAddress(SourceMarkerServices.Utilize.LIVE_SERVICE) + .setAddress(SourceServices.Utilize.LIVE_SERVICE) .build(LiveService::class.java) } else { log.warn("Live service unavailable") @@ -331,13 +331,13 @@ object SourceMarkerPlugin { //live instrument if (hardcodedConfig.getJsonObject("services").getBoolean("live_instrument")) { - if (availableRecords.any { it.name == SourceMarkerServices.Utilize.LIVE_INSTRUMENT }) { + if (availableRecords.any { it.name == SourceServices.Utilize.LIVE_INSTRUMENT }) { log.info("Live instruments available") SourceMarker.addGlobalSourceMarkEventListener(LiveStatusManager) Instance.liveInstrument = ServiceProxyBuilder(vertx) .apply { config.serviceToken?.let { setToken(it) } } - .setAddress(SourceMarkerServices.Utilize.LIVE_INSTRUMENT) + .setAddress(SourceServices.Utilize.LIVE_INSTRUMENT) .build(LiveInstrumentService::class.java) ApplicationManager.getApplication().invokeLater { BreakpointHitWindowService.getInstance(project).showEventsWindow() @@ -355,11 +355,11 @@ object SourceMarkerPlugin { //live view if (hardcodedConfig.getJsonObject("services").getBoolean("live_view")) { - if (availableRecords.any { it.name == SourceMarkerServices.Utilize.LIVE_VIEW }) { + if (availableRecords.any { it.name == SourceServices.Utilize.LIVE_VIEW }) { log.info("Live views available") Instance.liveView = ServiceProxyBuilder(vertx) .apply { config.serviceToken?.let { setToken(it) } } - .setAddress(SourceMarkerServices.Utilize.LIVE_VIEW) + .setAddress(SourceServices.Utilize.LIVE_VIEW) .build(LiveViewService::class.java) val viewListener = LiveViewManager(config) @@ -375,11 +375,11 @@ object SourceMarkerPlugin { //log count indicator if (hardcodedConfig.getJsonObject("services").getBoolean("log_count_indicator")) { - if (availableRecords.any { it.name == SourceMarkerServices.Utilize.LOG_COUNT_INDICATOR }) { + if (availableRecords.any { it.name == SourceServices.Utilize.LOG_COUNT_INDICATOR }) { log.info("Log count indicator available") Instance.logCountIndicator = ServiceProxyBuilder(vertx) .apply { config.serviceToken?.let { setToken(it) } } - .setAddress(SourceMarkerServices.Utilize.LOG_COUNT_INDICATOR) + .setAddress(SourceServices.Utilize.LOG_COUNT_INDICATOR) .build(LogCountIndicatorService::class.java) GlobalScope.launch(vertx.dispatcher()) { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt index 2b8a2fc0c..6ca38a637 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/command/ControlBarController.kt @@ -39,7 +39,7 @@ import spp.jetbrains.sourcemarker.command.LiveControlCommand.* import spp.jetbrains.sourcemarker.mark.SourceMarkKeys import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.SetCurrentPage -import spp.protocol.SourceMarkerServices +import spp.protocol.SourceServices import spp.protocol.instrument.LiveInstrumentType.* import spp.protocol.portal.PageType import java.awt.BorderLayout @@ -58,7 +58,7 @@ object ControlBarController { private var previousControlBar: InlayMark? = null private val availableCommands by lazy { runBlocking { - val selfInfo = SourceMarkerServices.Instance.liveService!!.getSelf().await() + val selfInfo = SourceServices.Instance.liveService!!.getSelf().await() LiveControlCommand.values().toList().filter { @Suppress("UselessCallOnCollection") //unknown enums are null selfInfo.permissions.filterNotNull().map { it.name }.contains(it.name) @@ -116,7 +116,7 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(BREAKPOINT).onComplete { + SourceServices.Instance.liveInstrument!!.clearLiveInstruments(BREAKPOINT).onComplete { if (it.failed()) { log.error("Failed to clear live breakpoints", it.cause()) } @@ -126,7 +126,7 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(LOG).onComplete { + SourceServices.Instance.liveInstrument!!.clearLiveInstruments(LOG).onComplete { if (it.failed()) { log.error("Failed to clear live logs", it.cause()) } @@ -136,7 +136,7 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(METER).onComplete { + SourceServices.Instance.liveInstrument!!.clearLiveInstruments(METER).onComplete { if (it.failed()) { log.error("Failed to clear live meters", it.cause()) } @@ -146,7 +146,7 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(SPAN).onComplete { + SourceServices.Instance.liveInstrument!!.clearLiveInstruments(SPAN).onComplete { if (it.failed()) { log.error("Failed to clear live spans", it.cause()) } @@ -156,7 +156,7 @@ object ControlBarController { previousControlBar!!.dispose() previousControlBar = null - SourceMarkerServices.Instance.liveInstrument!!.clearLiveInstruments(null).onComplete { + SourceServices.Instance.liveInstrument!!.clearLiveInstruments(null).onComplete { if (it.failed()) { log.error("Failed to clear live instruments", it.cause()) } diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt index 367ba3b99..09daa144c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt @@ -42,7 +42,7 @@ import spp.jetbrains.sourcemarker.SourceMarkerPlugin import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import spp.jetbrains.sourcemarker.settings.isSsl import spp.jetbrains.sourcemarker.settings.serviceHostNormalized -import spp.protocol.SourceMarkerServices.Utilize +import spp.protocol.SourceServices.Utilize import spp.protocol.extend.TCPServiceFrameParser import spp.protocol.platform.PlatformAddress import spp.protocol.status.InstanceConnection diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt index fa0aa42e2..3d2a1afa4 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt @@ -79,7 +79,7 @@ import spp.protocol.ProtocolAddress.Global.RefreshTraces import spp.protocol.ProtocolAddress.Global.SetCurrentPage import spp.protocol.ProtocolAddress.Global.TraceSpanUpdated import spp.protocol.ProtocolAddress.Portal.UpdateEndpoints -import spp.protocol.SourceMarkerServices.Instance +import spp.protocol.SourceServices.Instance import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType import spp.protocol.artifact.endpoint.EndpointResult diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index b8eb3bb01..c620e7a80 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -35,8 +35,8 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointTriggerListener import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated -import spp.protocol.SourceMarkerServices.Instance -import spp.protocol.SourceMarkerServices.Provide +import spp.protocol.SourceServices.Instance +import spp.protocol.SourceServices.Provide import spp.protocol.instrument.LiveBreakpoint import spp.protocol.instrument.LiveLog import spp.protocol.instrument.event.* diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt index 52ebd5ef4..3a92c943b 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt @@ -40,7 +40,7 @@ import spp.protocol.ProtocolAddress import spp.protocol.ProtocolAddress.Global.ArtifactMetricsUpdated import spp.protocol.ProtocolAddress.Global.ArtifactTracesUpdated import spp.protocol.ProtocolAddress.Global.TraceSpanUpdated -import spp.protocol.SourceMarkerServices.Provide +import spp.protocol.SourceServices.Provide import spp.protocol.artifact.QueryTimeFrame import spp.protocol.artifact.log.Log import spp.protocol.artifact.log.LogOrderType diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt index c4fe1cbb7..155040e3a 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LogCountIndicators.kt @@ -33,7 +33,7 @@ import spp.jetbrains.marker.source.mark.api.MethodSourceMark import spp.jetbrains.sourcemarker.icons.SourceMarkerIcons import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.LOGGER_DETECTOR import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig -import spp.protocol.SourceMarkerServices.Instance +import spp.protocol.SourceServices.Instance import spp.protocol.instrument.DurationStep /** diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt index bb8f46dca..14aade941 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/LiveStatusManager.kt @@ -46,7 +46,7 @@ import spp.jetbrains.sourcemarker.mark.SourceMarkKeys.LOG_ID import spp.jetbrains.sourcemarker.service.InstrumentEventListener import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import spp.protocol.ProtocolAddress.Portal.DisplayLogs -import spp.protocol.SourceMarkerServices +import spp.protocol.SourceServices import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType import spp.protocol.artifact.log.LogResult @@ -396,7 +396,7 @@ object LiveStatusManager : SourceMarkEventListener { @JvmStatic fun showMeterStatusIcon(liveMeter: LiveMeter, sourceFileMarker: SourceFileMarker) { - SourceMarkerServices.Instance.liveView!!.addLiveViewSubscription( + SourceServices.Instance.liveView!!.addLiveViewSubscription( LiveViewSubscription( null, listOf(liveMeter.toMetricId()), diff --git a/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt b/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt index fbee19383..013d1060d 100644 --- a/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt +++ b/plugin/src/test/kotlin/spp/jetbrains/StandaloneActivityLiveView.kt @@ -49,7 +49,7 @@ import spp.jetbrains.sourcemarker.SourceMarkerPlugin.vertx import spp.jetbrains.sourcemarker.mark.SourceMarkKeys import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import spp.protocol.ProtocolAddress.Global.RefreshActivity -import spp.protocol.SourceMarkerServices +import spp.protocol.SourceServices import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType import spp.protocol.instrument.LiveSourceLocation @@ -145,7 +145,7 @@ class StandaloneActivityLiveView : LightJavaCodeInsightFixtureTestCase() { val endpointName = sourceMark.getUserData( SourceMarkKeys.ENDPOINT_DETECTOR )?.getOrFindEndpointName(sourceMark) ?: return@launch - SourceMarkerServices.Instance.liveView!!.addLiveViewSubscription( + SourceServices.Instance.liveView!!.addLiveViewSubscription( LiveViewSubscription( null, listOf(endpointName), From c1d4142eae3871993793819a405d8d3747f4e56d Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 20:35:07 -0500 Subject: [PATCH 13/42] refactor --- .../sourcemarker/service/LiveInstrumentManager.kt | 10 +++++++--- .../jetbrains/sourcemarker/service/LiveViewManager.kt | 7 +++---- .../service/breakpoint/BreakpointHitColumnInfo.kt | 9 +++++---- .../sourcemarker/service/log/LogHitColumnInfo.kt | 9 +++++---- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index c620e7a80..fd1df290b 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -35,11 +35,15 @@ import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointTriggerListener import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated +import spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved import spp.protocol.SourceServices.Instance import spp.protocol.SourceServices.Provide import spp.protocol.instrument.LiveBreakpoint import spp.protocol.instrument.LiveLog -import spp.protocol.instrument.event.* +import spp.protocol.instrument.event.LiveBreakpointHit +import spp.protocol.instrument.event.LiveInstrumentEvent +import spp.protocol.instrument.event.LiveInstrumentEventType +import spp.protocol.instrument.event.LiveLogHit /** * todo: description. @@ -93,7 +97,7 @@ class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() } private fun handleLogRemovedEvent(liveEvent: LiveInstrumentEvent) { - val logRemoved = Json.decodeValue(liveEvent.data, LiveInstrumentRemoved::class.java) + val logRemoved = deserializeLiveInstrumentRemoved(JsonObject(liveEvent.data)) ApplicationManager.getApplication().invokeLater { val inlayMark = SourceMarkSearch.findByLogId(logRemoved.liveInstrument.id!!) if (inlayMark != null) { @@ -139,7 +143,7 @@ class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() } private fun handleBreakpointRemovedEvent(liveEvent: LiveInstrumentEvent) { - val bpRemoved = Json.decodeValue(liveEvent.data, LiveInstrumentRemoved::class.java) + val bpRemoved = deserializeLiveInstrumentRemoved(JsonObject(liveEvent.data)) ApplicationManager.getApplication().invokeLater { val inlayMark = SourceMarkSearch.findByBreakpointId(bpRemoved.liveInstrument.id!!) if (inlayMark != null) { diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt index 3a92c943b..0fe32a7ad 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt @@ -25,7 +25,6 @@ import io.vertx.ext.bridge.BridgeEventType import io.vertx.ext.eventbus.bridge.tcp.impl.protocol.FrameHelper import io.vertx.kotlin.coroutines.CoroutineVerticle import io.vertx.kotlin.coroutines.dispatcher -import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.datetime.toJavaInstant import kotlinx.datetime.toKotlinInstant @@ -83,8 +82,8 @@ class LiveViewManager(val markerConfig: SourceMarkerConfig) : CoroutineVerticle( if (log.isTraceEnabled) log.trace("Received live event: {}", event) when (event.viewConfig.viewName) { - "LIVE_METER" -> GlobalScope.launch(vertx.dispatcher()) { consumeLiveMeterEvent(event) } - "LOGS" -> GlobalScope.launch(vertx.dispatcher()) { consumeLogsViewEvent(event) } + "LIVE_METER" -> launch(vertx.dispatcher()) { consumeLiveMeterEvent(event) } + "LOGS" -> launch(vertx.dispatcher()) { consumeLogsViewEvent(event) } "TRACES" -> { val sourceMark = SourceMarkSearch.findByEndpointName(event.entityId) if (sourceMark == null) { @@ -113,7 +112,7 @@ class LiveViewManager(val markerConfig: SourceMarkerConfig) : CoroutineVerticle( ) } - private suspend fun consumeLiveMeterEvent(event: LiveViewEvent) { + private fun consumeLiveMeterEvent(event: LiveViewEvent) { val meterTypeStr = event.entityId.substringAfter("spp_").substringBefore("_").toUpperCase() val meterType = MeterType.valueOf(meterTypeStr) val meterId = event.entityId.substringAfter(meterType.name.toLowerCase() + "_").replace("_", "-") diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt index ebd279b0d..7c3ee64df 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/breakpoint/BreakpointHitColumnInfo.kt @@ -19,12 +19,13 @@ package spp.jetbrains.sourcemarker.service.breakpoint import com.intellij.util.ui.ColumnInfo import io.vertx.core.json.Json +import io.vertx.core.json.JsonObject import kotlinx.datetime.Clock import spp.jetbrains.sourcemarker.PluginBundle.message +import spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved import spp.protocol.instrument.event.LiveBreakpointHit import spp.protocol.instrument.event.LiveInstrumentEvent import spp.protocol.instrument.event.LiveInstrumentEventType -import spp.protocol.instrument.event.LiveInstrumentRemoved import spp.protocol.utils.toPrettyDuration /** @@ -41,14 +42,14 @@ class BreakpointHitColumnInfo(name: String) : ColumnInfo item.toString() } } else { - val item = Json.decodeValue(event.data, LiveInstrumentRemoved::class.java) + val item = deserializeLiveInstrumentRemoved(JsonObject(event.data)) return when (name) { "Breakpoint Data" -> item.cause!!.message ?: item.cause!!.exceptionType "Time" -> (Clock.System.now().toEpochMilliseconds() - item.occurredAt.toEpochMilliseconds()) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt index 5e0535459..4bb12dc8e 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/log/LogHitColumnInfo.kt @@ -19,11 +19,12 @@ package spp.jetbrains.sourcemarker.service.log import com.intellij.util.ui.ColumnInfo import io.vertx.core.json.Json +import io.vertx.core.json.JsonObject import kotlinx.datetime.Clock import spp.jetbrains.sourcemarker.PluginBundle.message +import spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved import spp.protocol.instrument.event.LiveInstrumentEvent import spp.protocol.instrument.event.LiveInstrumentEventType -import spp.protocol.instrument.event.LiveInstrumentRemoved import spp.protocol.instrument.event.LiveLogHit import spp.protocol.utils.toPrettyDuration @@ -41,14 +42,14 @@ class LogHitColumnInfo(name: String) : ColumnInfo(n val obj1 = if (t.eventType == LiveInstrumentEventType.LOG_HIT) { Json.decodeValue(t.data, LiveLogHit::class.java) } else if (t.eventType == LiveInstrumentEventType.LOG_REMOVED) { - Json.decodeValue(t.data, LiveInstrumentRemoved::class.java) + deserializeLiveInstrumentRemoved(JsonObject(t.data)) } else { throw IllegalArgumentException(t.eventType.name) } val obj2 = if (t2.eventType == LiveInstrumentEventType.LOG_HIT) { Json.decodeValue(t2.data, LiveLogHit::class.java) } else if (t2.eventType == LiveInstrumentEventType.LOG_REMOVED) { - Json.decodeValue(t2.data, LiveInstrumentRemoved::class.java) + deserializeLiveInstrumentRemoved(JsonObject(t2.data)) } else { throw IllegalArgumentException(t2.eventType.name) } @@ -69,7 +70,7 @@ class LogHitColumnInfo(name: String) : ColumnInfo(n else -> item.toString() } } else { - val item = Json.decodeValue(event.data, LiveInstrumentRemoved::class.java) + val item = deserializeLiveInstrumentRemoved(JsonObject(event.data)) return when (name) { "Message" -> item.cause!!.message ?: item.cause!!.exceptionType "Time" -> (Clock.System.now().toEpochMilliseconds() - item.occurredAt.toEpochMilliseconds()) From d254f174348e51e016cb555091f422b236437acf Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 20:35:35 -0500 Subject: [PATCH 14/42] bump --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index e75f0d2e2..2291f98b8 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:a97325afb6") + implementation("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index 60aafe845..5265e9298 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -28,7 +28,7 @@ repositories { dependencies { val intellijVersion = "213.6777.52" - compileOnly("com.github.sourceplusplus.protocol:protocol:a97325afb6") + compileOnly("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index f3727e2ef..883459a7e 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:a97325afb6") + compileOnly("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index 132166209..0d7487107 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:a97325afb6") + compileOnly("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 88fb6d7c3..9cccf4055 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:a97325afb6") + implementation("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") From b2b515e0afad7fd69b2edfb66a1295b817ae4155 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 20:35:50 -0500 Subject: [PATCH 15/42] bump --- plugin/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index b82b0006a..3f55a9ddf 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -63,7 +63,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:a97325afb6") + implementation("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") } implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion") From efe60d6b76ca8df51f1ababc8cba079b0d2c5292 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 1 Feb 2022 21:28:06 -0500 Subject: [PATCH 16/42] refactor --- .../jetbrains/sourcemarker/status/BreakpointStatusBar.java | 4 +++- .../java/spp/jetbrains/sourcemarker/status/LogStatusBar.java | 5 +++-- .../spp/jetbrains/sourcemarker/status/MeterStatusBar.java | 5 +++-- .../spp/jetbrains/sourcemarker/status/SpanStatusBar.java | 5 +++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java index 509731b56..f7753fa68 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/BreakpointStatusBar.java @@ -13,6 +13,7 @@ import com.intellij.util.ui.ListTableModel; import com.intellij.util.ui.UIUtil; import io.vertx.core.json.Json; +import io.vertx.core.json.JsonObject; import net.miginfocom.swing.MigLayout; import org.apache.commons.lang.StringUtils; import spp.jetbrains.marker.source.mark.api.SourceMark; @@ -53,6 +54,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved; import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.BREAKPOINT_HIT; import static spp.protocol.instrument.event.LiveInstrumentEventType.BREAKPOINT_REMOVED; @@ -174,7 +176,7 @@ private void setupAsActive() { } else if (event.getEventType() == BREAKPOINT_REMOVED) { configLabel.setIcon(PluginIcons.eyeSlash); - LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); + LiveInstrumentRemoved removed = deserializeLiveInstrumentRemoved(new JsonObject(event.getData())); if (removed.getCause() == null) { statusPanel.setStatus("Complete", COMPLETE_COLOR_PURPLE); } else { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java index e7ce2c755..d25d861d2 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/LogStatusBar.java @@ -12,7 +12,7 @@ import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import com.intellij.util.ui.UIUtil; -import io.vertx.core.json.Json; +import io.vertx.core.json.JsonObject; import net.miginfocom.swing.MigLayout; import org.jetbrains.annotations.NotNull; import spp.jetbrains.marker.source.mark.inlay.InlayMark; @@ -58,6 +58,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved; import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.LOG_HIT; import static spp.protocol.instrument.event.LiveInstrumentEventType.LOG_REMOVED; @@ -228,7 +229,7 @@ public void accept(@NotNull LiveInstrumentEvent event) { } else if (event.getEventType() == LOG_REMOVED) { removed = true; - LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); + LiveInstrumentRemoved removed = deserializeLiveInstrumentRemoved(new JsonObject(event.getData())); if (removed.getCause() != null) { commandModel.insertRow(0, event); diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java index c6d2ed712..5d9446197 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/MeterStatusBar.java @@ -11,7 +11,7 @@ import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import com.intellij.util.ui.UIUtil; -import io.vertx.core.json.Json; +import io.vertx.core.json.JsonObject; import net.miginfocom.swing.MigLayout; import spp.jetbrains.marker.source.mark.api.SourceMark; import spp.jetbrains.marker.source.mark.inlay.InlayMark; @@ -46,6 +46,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved; import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.METER_REMOVED; @@ -128,7 +129,7 @@ private void setupAsActive() { if (event.getEventType() == METER_REMOVED) { configLabel.setIcon(PluginIcons.eyeSlash); - LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); + LiveInstrumentRemoved removed = deserializeLiveInstrumentRemoved(new JsonObject(event.getData())); if (removed.getCause() == null) { statusPanel.setStatus("Complete", COMPLETE_COLOR_PURPLE); } else { diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java index 611eae4f0..f4780a969 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/status/SpanStatusBar.java @@ -11,7 +11,7 @@ import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import com.intellij.util.ui.UIUtil; -import io.vertx.core.json.Json; +import io.vertx.core.json.JsonObject; import net.miginfocom.swing.MigLayout; import spp.jetbrains.marker.source.mark.api.SourceMark; import spp.jetbrains.marker.source.mark.inlay.InlayMark; @@ -43,6 +43,7 @@ import static spp.jetbrains.marker.SourceMarker.conditionParser; import static spp.jetbrains.sourcemarker.PluginUI.*; import static spp.jetbrains.sourcemarker.status.util.ViewUtils.addRecursiveMouseListener; +import static spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved; import static spp.protocol.SourceServices.Instance.INSTANCE; import static spp.protocol.instrument.event.LiveInstrumentEventType.METER_REMOVED; @@ -125,7 +126,7 @@ private void setupAsActive() { if (event.getEventType() == METER_REMOVED) { configLabel.setIcon(PluginIcons.eyeSlash); - LiveInstrumentRemoved removed = Json.decodeValue(event.getData(), LiveInstrumentRemoved.class); + LiveInstrumentRemoved removed = deserializeLiveInstrumentRemoved(new JsonObject(event.getData())); if (removed.getCause() == null) { statusPanel.setStatus("Complete", COMPLETE_COLOR_PURPLE); } else { From f7ba079a5ca36c8bfd407a2478a312bf785c06c1 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 00:34:08 -0500 Subject: [PATCH 17/42] validate marker auth over tcp --- .../sourcemarker/SourceMarkerPlugin.kt | 2 +- .../discover/TCPServiceDiscoveryBackend.kt | 18 +++++++++++------- .../service/LiveInstrumentManager.kt | 12 ++++++++---- .../sourcemarker/service/LiveViewManager.kt | 12 ++++++------ 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt index caa43f1c1..97a640263 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt @@ -342,7 +342,7 @@ object SourceMarkerPlugin { ApplicationManager.getApplication().invokeLater { BreakpointHitWindowService.getInstance(project).showEventsWindow() } - val breakpointListener = LiveInstrumentManager(project) + val breakpointListener = LiveInstrumentManager(project, config) GlobalScope.launch(vertx.dispatcher()) { deploymentIds.add(vertx.deployVerticle(breakpointListener).await()) } diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt index 09daa144c..69bd54aaf 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt @@ -20,6 +20,7 @@ package spp.jetbrains.sourcemarker.discover import eu.geekplace.javapinning.JavaPinning import eu.geekplace.javapinning.pin.Pin import io.vertx.core.* +import io.vertx.core.eventbus.DeliveryOptions import io.vertx.core.eventbus.MessageConsumer import io.vertx.core.json.Json import io.vertx.core.json.JsonArray @@ -64,18 +65,18 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { private lateinit var vertx: Vertx private lateinit var client: NetClient + private lateinit var pluginConfig: SourceMarkerConfig private val setupPromise = Promise.promise() private val setupFuture = setupPromise.future() override fun init(vertx: Vertx, config: JsonObject) { this.vertx = vertx - - val hardcodedConfig = config.getJsonObject("hardcoded_config") - val pluginConfig = Json.decodeValue( + pluginConfig = Json.decodeValue( config.getJsonObject("sourcemarker_plugin_config").toString(), SourceMarkerConfig::class.java ) val serviceHost = pluginConfig.serviceHostNormalized!! + val hardcodedConfig = config.getJsonObject("hardcoded_config") val servicePort = hardcodedConfig.getInteger("tcp_service_port") val certificatePins = mutableListOf() certificatePins.addAll(pluginConfig.certificatePins) @@ -138,8 +139,7 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { setupPromise.complete() } } - val headers = JsonObject() - pluginConfig.serviceToken?.let { headers.put("token", it) } + val headers = JsonObject().apply { pluginConfig.serviceToken?.let { put("auth-token", it) } } FrameHelper.sendFrame( BridgeEventType.SEND.name.toLowerCase(), PlatformAddress.MARKER_CONNECTED.address, @@ -186,7 +186,9 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { override fun getRecords(resultHandler: Handler>>) { if (setupFuture.isComplete) { if (setupFuture.succeeded()) { - vertx.eventBus().request("get-records", null) { + val deliveryOptions = DeliveryOptions() + .apply { pluginConfig.serviceToken?.let { addHeader("auth-token", it) } } + vertx.eventBus().request("get-records", null, deliveryOptions) { resultHandler.handle(Future.succeededFuture(mutableListOf(Record(it.result().body())))) } } else { @@ -195,7 +197,9 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { } else { setupFuture.onComplete { if (it.succeeded()) { - vertx.eventBus().request("get-records", null) { + val deliveryOptions = DeliveryOptions() + .apply { pluginConfig.serviceToken?.let { addHeader("auth-token", it) } } + vertx.eventBus().request("get-records", null, deliveryOptions) { val records = mutableListOf() it.result().body().forEach { record -> records.add(Record(record as JsonObject)) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index fd1df290b..f9fcbcfb3 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -33,6 +33,7 @@ import spp.jetbrains.sourcemarker.mark.SourceMarkKeys import spp.jetbrains.sourcemarker.search.SourceMarkSearch import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointHitWindowService import spp.jetbrains.sourcemarker.service.breakpoint.BreakpointTriggerListener +import spp.jetbrains.sourcemarker.settings.SourceMarkerConfig import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated import spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved @@ -52,7 +53,10 @@ import spp.protocol.instrument.event.LiveLogHit * @author [Brandon Fergerson](mailto:bfergerson@apache.org) */ @Suppress("UNCHECKED_CAST") -class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() { +class LiveInstrumentManager( + private val project: Project, + private val pluginConfig: SourceMarkerConfig +) : CoroutineVerticle() { companion object { private val log = LoggerFactory.getLogger(LiveInstrumentManager::class.java) @@ -80,9 +84,9 @@ class LiveInstrumentManager(private val project: Project) : CoroutineVerticle() //register listener FrameHelper.sendFrame( BridgeEventType.REGISTER.name.toLowerCase(), - Provide.LIVE_INSTRUMENT_SUBSCRIBER, - JsonObject(), - TCPServiceDiscoveryBackend.socket!! + Provide.LIVE_INSTRUMENT_SUBSCRIBER, null, + JsonObject().apply { pluginConfig.serviceToken?.let { put("auth-token", it) } }, + null, null, TCPServiceDiscoveryBackend.socket!! ) //show live status bars diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt index 0fe32a7ad..efede97f9 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt @@ -60,7 +60,7 @@ import java.time.Instant import java.time.ZoneOffset import java.time.format.DateTimeFormatterBuilder -class LiveViewManager(val markerConfig: SourceMarkerConfig) : CoroutineVerticle() { +class LiveViewManager(private val pluginConfig: SourceMarkerConfig) : CoroutineVerticle() { private val log = LoggerFactory.getLogger(LiveViewManager::class.java) @@ -72,8 +72,8 @@ class LiveViewManager(val markerConfig: SourceMarkerConfig) : CoroutineVerticle( override suspend fun start() { //register listener var developer = "system" - if (markerConfig.serviceToken != null) { - val json = JWT.parse(markerConfig.serviceToken) + if (pluginConfig.serviceToken != null) { + val json = JWT.parse(pluginConfig.serviceToken) developer = json.getJsonObject("payload").getString("developer_id") } @@ -106,9 +106,9 @@ class LiveViewManager(val markerConfig: SourceMarkerConfig) : CoroutineVerticle( FrameHelper.sendFrame( BridgeEventType.REGISTER.name.toLowerCase(), - Provide.LIVE_VIEW_SUBSCRIBER + "." + developer, - JsonObject(), - TCPServiceDiscoveryBackend.socket!! + Provide.LIVE_VIEW_SUBSCRIBER + "." + developer, null, + JsonObject().apply { pluginConfig.serviceToken?.let { put("auth-token", it) } }, + null, null, TCPServiceDiscoveryBackend.socket!! ) } From b4b904c4b1bba2b9f3654f3e681a351d0e7effd2 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 11:03:58 -0500 Subject: [PATCH 18/42] refactor --- .../sourcemarker/discover/TCPServiceDiscoveryBackend.kt | 4 ++-- .../jetbrains/sourcemarker/service/LiveInstrumentManager.kt | 2 +- .../spp/jetbrains/sourcemarker/service/LiveViewManager.kt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt index 69bd54aaf..6011ccf12 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt @@ -128,7 +128,7 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { //setup connection val replyAddress = UUID.randomUUID().toString() val pc = InstanceConnection(SourceMarkerPlugin.INSTANCE_ID, System.currentTimeMillis()) - val consumer: MessageConsumer = vertx.eventBus().localConsumer("local.$replyAddress") + val consumer: MessageConsumer = vertx.eventBus().localConsumer(replyAddress) val promise = Promise.promise() consumer.handler { @@ -152,7 +152,7 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { private fun setupHandler(vertx: Vertx, address: String) { vertx.eventBus().localConsumer(address) { resp -> val replyAddress = UUID.randomUUID().toString() - val tempConsumer = vertx.eventBus().localConsumer("local.$replyAddress") + val tempConsumer = vertx.eventBus().localConsumer(replyAddress) tempConsumer.handler { resp.reply(it.body()) tempConsumer.unregister() diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index f9fcbcfb3..20f7de15f 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -66,7 +66,7 @@ class LiveInstrumentManager( log.debug("LiveInstrumentManager started") EditorFactory.getInstance().eventMulticaster.addEditorMouseListener(BreakpointTriggerListener, project) - vertx.eventBus().consumer("local." + Provide.LIVE_INSTRUMENT_SUBSCRIBER) { + vertx.eventBus().consumer(Provide.LIVE_INSTRUMENT_SUBSCRIBER) { val liveEvent = Json.decodeValue(it.body().toString(), LiveInstrumentEvent::class.java) log.debug("Received instrument event. Type: {}", liveEvent.eventType) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt index efede97f9..36098df3c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt @@ -77,7 +77,7 @@ class LiveViewManager(private val pluginConfig: SourceMarkerConfig) : CoroutineV developer = json.getJsonObject("payload").getString("developer_id") } - vertx.eventBus().consumer("local." + Provide.LIVE_VIEW_SUBSCRIBER + "." + developer) { + vertx.eventBus().consumer(Provide.LIVE_VIEW_SUBSCRIBER + "." + developer) { val event = Json.decodeValue(it.body().toString(), LiveViewEvent::class.java) if (log.isTraceEnabled) log.trace("Received live event: {}", event) From eafc6da838c6cff1832d4206125dd3aecc07c9ef Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 12:14:02 -0500 Subject: [PATCH 19/42] bump --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index 2291f98b8..493f804a9 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") + implementation("com.github.sourceplusplus.protocol:protocol:e6ab057003") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index 5265e9298..8941a0080 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -28,7 +28,7 @@ repositories { dependencies { val intellijVersion = "213.6777.52" - compileOnly("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") + compileOnly("com.github.sourceplusplus.protocol:protocol:e6ab057003") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index 883459a7e..dbeb1e9b7 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") + compileOnly("com.github.sourceplusplus.protocol:protocol:e6ab057003") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index 0d7487107..eebc5de5f 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") + compileOnly("com.github.sourceplusplus.protocol:protocol:e6ab057003") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 9cccf4055..66e84dd03 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") + implementation("com.github.sourceplusplus.protocol:protocol:e6ab057003") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 3f55a9ddf..ace3d77d8 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -63,7 +63,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:f9cb03d3b4") + implementation("com.github.sourceplusplus.protocol:protocol:e6ab057003") } implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion") From 42aa9d68d6ce1a4e82037a766fc2c52d49146b0f Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 15:08:05 -0500 Subject: [PATCH 20/42] refactor --- .../sourcemarker/service/LiveInstrumentManager.kt | 13 +++++++++---- .../sourcemarker/service/LiveViewManager.kt | 6 +++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt index 20f7de15f..947f344e0 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveInstrumentManager.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.project.ProjectManager import io.vertx.core.json.Json import io.vertx.core.json.JsonObject +import io.vertx.ext.auth.impl.jose.JWT import io.vertx.ext.bridge.BridgeEventType import io.vertx.ext.eventbus.bridge.tcp.impl.protocol.FrameHelper import io.vertx.kotlin.coroutines.CoroutineVerticle @@ -38,7 +39,7 @@ import spp.jetbrains.sourcemarker.status.LiveStatusManager import spp.protocol.ProtocolAddress.Global.ArtifactLogUpdated import spp.protocol.ProtocolMarshaller.deserializeLiveInstrumentRemoved import spp.protocol.SourceServices.Instance -import spp.protocol.SourceServices.Provide +import spp.protocol.SourceServices.Provide.toLiveInstrumentSubscriberAddress import spp.protocol.instrument.LiveBreakpoint import spp.protocol.instrument.LiveLog import spp.protocol.instrument.event.LiveBreakpointHit @@ -63,10 +64,14 @@ class LiveInstrumentManager( } override suspend fun start() { - log.debug("LiveInstrumentManager started") + var developer = "system" + if (pluginConfig.serviceToken != null) { + val json = JWT.parse(pluginConfig.serviceToken) + developer = json.getJsonObject("payload").getString("developer_id") + } EditorFactory.getInstance().eventMulticaster.addEditorMouseListener(BreakpointTriggerListener, project) - vertx.eventBus().consumer(Provide.LIVE_INSTRUMENT_SUBSCRIBER) { + vertx.eventBus().consumer(toLiveInstrumentSubscriberAddress(developer)) { val liveEvent = Json.decodeValue(it.body().toString(), LiveInstrumentEvent::class.java) log.debug("Received instrument event. Type: {}", liveEvent.eventType) @@ -84,7 +89,7 @@ class LiveInstrumentManager( //register listener FrameHelper.sendFrame( BridgeEventType.REGISTER.name.toLowerCase(), - Provide.LIVE_INSTRUMENT_SUBSCRIBER, null, + toLiveInstrumentSubscriberAddress(developer), null, JsonObject().apply { pluginConfig.serviceToken?.let { put("auth-token", it) } }, null, null, TCPServiceDiscoveryBackend.socket!! ) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt index 36098df3c..099464c68 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/service/LiveViewManager.kt @@ -39,7 +39,7 @@ import spp.protocol.ProtocolAddress import spp.protocol.ProtocolAddress.Global.ArtifactMetricsUpdated import spp.protocol.ProtocolAddress.Global.ArtifactTracesUpdated import spp.protocol.ProtocolAddress.Global.TraceSpanUpdated -import spp.protocol.SourceServices.Provide +import spp.protocol.SourceServices.Provide.toLiveViewSubscriberAddress import spp.protocol.artifact.QueryTimeFrame import spp.protocol.artifact.log.Log import spp.protocol.artifact.log.LogOrderType @@ -77,7 +77,7 @@ class LiveViewManager(private val pluginConfig: SourceMarkerConfig) : CoroutineV developer = json.getJsonObject("payload").getString("developer_id") } - vertx.eventBus().consumer(Provide.LIVE_VIEW_SUBSCRIBER + "." + developer) { + vertx.eventBus().consumer(toLiveViewSubscriberAddress(developer)) { val event = Json.decodeValue(it.body().toString(), LiveViewEvent::class.java) if (log.isTraceEnabled) log.trace("Received live event: {}", event) @@ -106,7 +106,7 @@ class LiveViewManager(private val pluginConfig: SourceMarkerConfig) : CoroutineV FrameHelper.sendFrame( BridgeEventType.REGISTER.name.toLowerCase(), - Provide.LIVE_VIEW_SUBSCRIBER + "." + developer, null, + toLiveViewSubscriberAddress(developer), null, JsonObject().apply { pluginConfig.serviceToken?.let { put("auth-token", it) } }, null, null, TCPServiceDiscoveryBackend.socket!! ) From 5d673134e8378bea2c0e468c72baf6fd8de05aa3 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 15:09:36 -0500 Subject: [PATCH 21/42] bump --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index 493f804a9..daf2082ba 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:e6ab057003") + implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index 8941a0080..0ad99bb32 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -28,7 +28,7 @@ repositories { dependencies { val intellijVersion = "213.6777.52" - compileOnly("com.github.sourceplusplus.protocol:protocol:e6ab057003") + compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index dbeb1e9b7..df13bff22 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:e6ab057003") + compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index eebc5de5f..c88699f0d 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:e6ab057003") + compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 66e84dd03..d0382b21a 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:e6ab057003") + implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index ace3d77d8..e8ea6f52e 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -63,7 +63,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:e6ab057003") + implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") } implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion") From 6eb1e98c6a72a6cd906e3ae93c2fc84a97861178 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 15:53:19 -0500 Subject: [PATCH 22/42] bump --- gradle.properties | 2 +- settings.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 72a6882c6..9af36fa52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,4 @@ kotlin.stdlib.default.dependency = true apolloVersion=3.0.0 vertxVersion=4.2.4 slf4jVersion=1.7.33 -jacksonVersion=2.12.5 \ No newline at end of file +jacksonVersion=2.13.1 \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index a3ed8bb2a..21412fe68 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ pluginManagement { id 'com.avast.gradle.docker-compose' version "0.15.0" apply false id 'io.gitlab.arturbosch.detekt' version "1.19.0" apply false id 'com.apollographql.apollo3' version "3.0.0" apply false - id 'com.diffplug.spotless' version '6.2.0' apply false + id 'com.diffplug.spotless' version '6.2.1' apply false } } From e9337cae87b145570953f4e21383cc2b6cbaf3d7 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 15:54:58 -0500 Subject: [PATCH 23/42] backwards compatibility issues --- gradle.properties | 3 ++- marker/build.gradle.kts | 2 ++ .../mark/api/component/jcef/SourceMarkJcefComponent.kt | 9 +++++++-- plugin/build.gradle.kts | 3 ++- .../spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9af36fa52..5f809a79c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,5 @@ kotlin.stdlib.default.dependency = true apolloVersion=3.0.0 vertxVersion=4.2.4 slf4jVersion=1.7.33 -jacksonVersion=2.13.1 \ No newline at end of file +jacksonVersion=2.13.1 +joorVersion=0.9.13 \ No newline at end of file diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index 0ad99bb32..f0851a34f 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -7,6 +7,7 @@ val kotlinVersion = ext.get("kotlinVersion") val pluginGroup: String by project val projectVersion: String by project val slf4jVersion: String by project +val joorVersion: String by project publishing { publications { @@ -28,6 +29,7 @@ repositories { dependencies { val intellijVersion = "213.6777.52" + compileOnly("org.jooq:joor:$joorVersion") compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") diff --git a/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/api/component/jcef/SourceMarkJcefComponent.kt b/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/api/component/jcef/SourceMarkJcefComponent.kt index 870442be7..74aeea829 100644 --- a/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/api/component/jcef/SourceMarkJcefComponent.kt +++ b/marker/src/main/kotlin/spp/jetbrains/marker/source/mark/api/component/jcef/SourceMarkJcefComponent.kt @@ -25,6 +25,8 @@ import com.intellij.ui.jcef.JBCefClient import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import org.joor.Reflect +import org.joor.ReflectException import spp.jetbrains.marker.source.mark.api.component.api.SourceMarkComponent import spp.jetbrains.marker.source.mark.api.component.jcef.config.SourceMarkJcefComponentConfiguration import java.awt.Dimension @@ -68,9 +70,12 @@ class SourceMarkJcefComponent( //periodically update zoom level GlobalScope.launch { - while(browser != null) { + while (browser != null) { delay(50) - browser?.zoomLevel = configuration.zoomLevel + try { + browser?.let { Reflect.on(it).call("setZoomLevel", configuration.zoomLevel) } + } catch (ignore: ReflectException) { + } } } diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index e8ea6f52e..5e0c7d771 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -8,6 +8,7 @@ plugins { id("maven-publish") } +val joorVersion: String by project val jacksonVersion: String by project val vertxVersion: String by project val kotlinVersion = ext.get("kotlinVersion") @@ -66,6 +67,7 @@ dependencies { implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") } + implementation("org.jooq:joor:$joorVersion") implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion") implementation("org.apache.commons:commons-text:1.9") implementation("com.github.sh5i:git-stein:v0.5.0") @@ -74,7 +76,6 @@ dependencies { implementation("io.vertx:vertx-lang-kotlin:$vertxVersion") implementation("io.vertx:vertx-lang-kotlin-coroutines:$vertxVersion") implementation("io.vertx:vertx-web:$vertxVersion") - //implementation("io.vertx:vertx-service-discovery:$vertxVersion") implementation(files(".ext/vertx-service-discovery-4.0.3-SNAPSHOT.jar")) implementation("io.vertx:vertx-service-proxy:$vertxVersion") implementation("io.vertx:vertx-tcp-eventbus-bridge:$vertxVersion") diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt index 97a640263..739faee8e 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt @@ -167,7 +167,7 @@ object SourceMarkerPlugin { DatabindCodec.mapper().registerModule(GuavaModule()) DatabindCodec.mapper().registerModule(Jdk8Module()) DatabindCodec.mapper().registerModule(JavaTimeModule()) - DatabindCodec.mapper().registerModule(KotlinModule()) + DatabindCodec.mapper().registerModule(KotlinModule.Builder().build()) DatabindCodec.mapper().enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING) DatabindCodec.mapper().enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING) From b6b42da1cba6e5051c82ea21e40e31f006a9eae9 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 16:00:49 -0500 Subject: [PATCH 24/42] bump --- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index d0382b21a..fcd45aabb 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -20,7 +20,7 @@ dependencies { implementation("io.vertx:vertx-lang-kotlin:$vertxVersion") implementation("io.vertx:vertx-lang-kotlin-coroutines:$vertxVersion") implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.3.2") - implementation("io.dropwizard.metrics:metrics-core:4.2.7") + implementation("io.dropwizard.metrics:metrics-core:4.2.8") implementation("eu.geekplace.javapinning:java-pinning-core:1.2.0") } diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 5e0c7d771..be94f40fe 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -84,7 +84,7 @@ dependencies { implementation("com.fasterxml.jackson.datatype:jackson-datatype-guava:2.13.1") implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.1") implementation("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion") - implementation("io.dropwizard.metrics:metrics-core:4.2.7") + implementation("io.dropwizard.metrics:metrics-core:4.2.8") implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.3.2") implementation("org.jooq:jooq:3.16.2") implementation("org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5") From 8ed4ac89b98d3d34d469857a42c03899c7516d82 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 16:58:06 -0500 Subject: [PATCH 25/42] bump --- gradle.properties | 2 +- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5f809a79c..14e471f68 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ kotlin.code.style=official pluginGroup = spp.jetbrains pluginName = Source++ -projectVersion=0.3.1 +projectVersion=0.4.0 pluginSinceBuild = 202.4357 # Plugin Verifier integration -> https://github.com/JetBrains/gradle-intellij-plugin#plugin-verifier-dsl # See https://jb.gg/intellij-platform-builds-list for available build versions diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index daf2082ba..2afe0fae7 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") + implementation("com.github.sourceplusplus.protocol:protocol:c8340e0102") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index f0851a34f..e2d60d70e 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { val intellijVersion = "213.6777.52" compileOnly("org.jooq:joor:$joorVersion") - compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") + compileOnly("com.github.sourceplusplus.protocol:protocol:c8340e0102") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index df13bff22..8e1fab712 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") + compileOnly("com.github.sourceplusplus.protocol:protocol:c8340e0102") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index c88699f0d..1027fbaa2 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:90a0782cda") + compileOnly("com.github.sourceplusplus.protocol:protocol:c8340e0102") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index fcd45aabb..0e7d663f7 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") + implementation("com.github.sourceplusplus.protocol:protocol:c8340e0102") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index be94f40fe..dc9278142 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -64,7 +64,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:90a0782cda") + implementation("com.github.sourceplusplus.protocol:protocol:c8340e0102") } implementation("org.jooq:joor:$joorVersion") From efcee420a58be9d46a82838a34ae354e9bd3511a Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Wed, 2 Feb 2022 17:44:49 -0500 Subject: [PATCH 26/42] bump --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index 2afe0fae7..e2029b886 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:c8340e0102") + implementation("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index e2d60d70e..7a6070477 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { val intellijVersion = "213.6777.52" compileOnly("org.jooq:joor:$joorVersion") - compileOnly("com.github.sourceplusplus.protocol:protocol:c8340e0102") + compileOnly("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index 8e1fab712..d47b0b7c2 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:c8340e0102") + compileOnly("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index 1027fbaa2..129dce0fd 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:c8340e0102") + compileOnly("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 0e7d663f7..52b57569f 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:c8340e0102") + implementation("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index dc9278142..44af948f3 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -64,7 +64,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:c8340e0102") + implementation("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") } implementation("org.jooq:joor:$joorVersion") From c77f09748d96e5facdf8a72d7c5213c208aa72b8 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Fri, 4 Feb 2022 22:39:56 -0500 Subject: [PATCH 27/42] moved packages --- .../src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt | 2 +- plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java | 2 +- .../sourcemarker/discover/TCPServiceDiscoveryBackend.kt | 2 +- .../spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt | 2 +- .../sourcemarker/status/util/AutoCompleteCellRenderer.kt | 2 +- .../sourcemarker/status/util/ControlBarCellRenderer.kt | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt index 155fe27eb..00077ff85 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt @@ -40,9 +40,9 @@ import org.jetbrains.uast.toUElementOfType import org.slf4j.LoggerFactory import spp.jetbrains.marker.jvm.psi.EndpointDetector import spp.jetbrains.marker.source.JVMMarkerUtils +import spp.protocol.artifact.ArtifactNameUtils import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType -import spp.protocol.utils.ArtifactNameUtils import java.util.* /** diff --git a/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java b/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java index b7dbf941b..3e868fa28 100644 --- a/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java +++ b/plugin/src/main/java/spp/jetbrains/sourcemarker/ControlBar.java @@ -12,7 +12,7 @@ import spp.jetbrains.sourcemarker.command.LiveControlCommand; import spp.jetbrains.sourcemarker.status.util.AutocompleteField; import spp.jetbrains.sourcemarker.status.util.ControlBarCellRenderer; -import spp.protocol.utils.ArtifactNameUtils; +import spp.protocol.artifact.ArtifactNameUtils; import javax.swing.*; import javax.swing.border.CompoundBorder; diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt index 6011ccf12..97da9ff3c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt @@ -46,7 +46,7 @@ import spp.jetbrains.sourcemarker.settings.serviceHostNormalized import spp.protocol.SourceServices.Utilize import spp.protocol.extend.TCPServiceFrameParser import spp.protocol.platform.PlatformAddress -import spp.protocol.status.InstanceConnection +import spp.protocol.platform.status.InstanceConnection import java.util.* /** diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt index 3d2a1afa4..3c5fb59ca 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/listeners/PortalEventListener.kt @@ -80,6 +80,7 @@ import spp.protocol.ProtocolAddress.Global.SetCurrentPage import spp.protocol.ProtocolAddress.Global.TraceSpanUpdated import spp.protocol.ProtocolAddress.Portal.UpdateEndpoints import spp.protocol.SourceServices.Instance +import spp.protocol.artifact.ArtifactNameUtils import spp.protocol.artifact.ArtifactQualifiedName import spp.protocol.artifact.ArtifactType import spp.protocol.artifact.endpoint.EndpointResult @@ -92,7 +93,6 @@ import spp.protocol.artifact.trace.TraceResult import spp.protocol.artifact.trace.TraceSpan import spp.protocol.instrument.LiveSourceLocation import spp.protocol.portal.PageType -import spp.protocol.utils.ArtifactNameUtils import spp.protocol.view.LiveViewConfig import spp.protocol.view.LiveViewSubscription import java.net.URI diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutoCompleteCellRenderer.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutoCompleteCellRenderer.kt index 9f350387d..84d481dd2 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutoCompleteCellRenderer.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/AutoCompleteCellRenderer.kt @@ -21,8 +21,8 @@ import spp.jetbrains.sourcemarker.PluginUI.BGND_FOCUS_COLOR import spp.jetbrains.sourcemarker.command.AutocompleteFieldRow import spp.jetbrains.sourcemarker.command.LiveControlCommand import spp.jetbrains.sourcemarker.element.AutocompleteRow +import spp.protocol.artifact.ArtifactNameUtils.getShortFunctionSignature import spp.protocol.artifact.ArtifactQualifiedName -import spp.protocol.utils.ArtifactNameUtils.getShortFunctionSignature import java.awt.Component import javax.swing.DefaultListCellRenderer import javax.swing.JList diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/ControlBarCellRenderer.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/ControlBarCellRenderer.kt index b96f92de2..a56920ae1 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/ControlBarCellRenderer.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/status/util/ControlBarCellRenderer.kt @@ -21,7 +21,7 @@ import spp.jetbrains.sourcemarker.PluginUI import spp.jetbrains.sourcemarker.command.AutocompleteFieldRow import spp.jetbrains.sourcemarker.command.LiveControlCommand import spp.jetbrains.sourcemarker.element.LiveControlBarRow -import spp.protocol.utils.ArtifactNameUtils.getShortFunctionSignature +import spp.protocol.artifact.ArtifactNameUtils.getShortFunctionSignature import java.awt.Component import javax.swing.DefaultListCellRenderer import javax.swing.JList From af3cc608be5ae5f45c96d51c1de4fb03d18d75d2 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Fri, 4 Feb 2022 22:59:54 -0500 Subject: [PATCH 28/42] refactor --- .../sourcemarker/discover/TCPServiceDiscoveryBackend.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt index 97da9ff3c..d70db245c 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/discover/TCPServiceDiscoveryBackend.kt @@ -142,7 +142,7 @@ class TCPServiceDiscoveryBackend : ServiceDiscoveryBackend { val headers = JsonObject().apply { pluginConfig.serviceToken?.let { put("auth-token", it) } } FrameHelper.sendFrame( BridgeEventType.SEND.name.toLowerCase(), - PlatformAddress.MARKER_CONNECTED.address, + PlatformAddress.MARKER_CONNECTED, replyAddress, headers, true, JsonObject.mapFrom(pc), socket!! ) } From 135a416321e90903db67474a9f7d10a617afa610 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 5 Feb 2022 15:57:39 -0500 Subject: [PATCH 29/42] better error message --- .../sourcemarker/SourceMarkerPlugin.kt | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt index 739faee8e..43d9c6c71 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt @@ -17,6 +17,7 @@ */ package spp.jetbrains.sourcemarker +import com.apollographql.apollo3.exception.ApolloHttpException import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature @@ -106,8 +107,8 @@ import spp.protocol.artifact.trace.TraceResult import spp.protocol.artifact.trace.TraceSpan import spp.protocol.artifact.trace.TraceSpanStackQueryResult import spp.protocol.artifact.trace.TraceStack -import spp.protocol.service.LiveService import spp.protocol.service.LiveInstrumentService +import spp.protocol.service.LiveService import spp.protocol.service.LiveViewService import spp.protocol.service.LogCountIndicatorService import spp.protocol.util.KSerializers @@ -257,6 +258,29 @@ object SourceMarkerPlugin { initMonitor(config) connectedMonitor = true } catch (ignored: CancellationException) { + } catch (throwable: ApolloHttpException) { + val pluginName = message("plugin_name") + if (throwable.statusCode == 401) { + Notifications.Bus.notify( + Notification( + pluginName, "Connection unauthorized", + "Failed to authenticate with $pluginName. " + + "Please ensure the correct configuration " + + "is set at: Settings -> Tools -> $pluginName", + NotificationType.ERROR + ) + ) + } else { + Notifications.Bus.notify( + Notification( + pluginName, "Connection failed", + "Failed to connect to $pluginName. " + + "Please ensure the correct configuration " + + "is set at: Settings -> Tools -> $pluginName", + NotificationType.ERROR + ) + ) + } } catch (throwable: Throwable) { //todo: if first time bring up config panel automatically instead of notification val pluginName = message("plugin_name") @@ -284,8 +308,8 @@ object SourceMarkerPlugin { log.error("Connection failed. Reason: {}", throwable.message) } - discoverAvailableServices(config, project) if (connectedMonitor) { + discoverAvailableServices(config, project) initPortal(config) initMarker(config, project) initMapper() @@ -465,15 +489,6 @@ object SourceMarkerPlugin { } } else { config.serviceToken = null - - log.error("Invalid access token") - Notifications.Bus.notify( - Notification( - message("plugin_name"), "Invalid access token", - "Failed to validate access token", - NotificationType.ERROR - ) - ) } } else { //try default local access From d0f1a17f9376a036938d071eb5d55fb579474c45 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 5 Feb 2022 15:58:11 -0500 Subject: [PATCH 30/42] bump --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index e2029b886..b26fe4b8b 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") + implementation("com.github.sourceplusplus.protocol:protocol:46eaa1c361") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index 7a6070477..ae0cd0e0c 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { val intellijVersion = "213.6777.52" compileOnly("org.jooq:joor:$joorVersion") - compileOnly("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") + compileOnly("com.github.sourceplusplus.protocol:protocol:46eaa1c361") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index d47b0b7c2..88385d1da 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") + compileOnly("com.github.sourceplusplus.protocol:protocol:46eaa1c361") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index 129dce0fd..940ff8f22 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") + compileOnly("com.github.sourceplusplus.protocol:protocol:46eaa1c361") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 52b57569f..6c99dad16 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") + implementation("com.github.sourceplusplus.protocol:protocol:46eaa1c361") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 10cc4d13d..3026f9743 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -65,7 +65,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:b0399b3a1b") + implementation("com.github.sourceplusplus.protocol:protocol:46eaa1c361") } implementation("org.jooq:joor:$joorVersion") From eccbd2dcd976ace5266d023c26f92562afd6e304 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 5 Feb 2022 17:08:11 -0500 Subject: [PATCH 31/42] bump --- mapper/build.gradle.kts | 2 +- marker/build.gradle.kts | 2 +- marker/jvm-marker/build.gradle.kts | 2 +- marker/py-marker/build.gradle.kts | 2 +- monitor/build.gradle.kts | 2 +- plugin/build.gradle.kts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index b26fe4b8b..47f49a325 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:46eaa1c361") + implementation("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index ae0cd0e0c..fe11bdfcc 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { val intellijVersion = "213.6777.52" compileOnly("org.jooq:joor:$joorVersion") - compileOnly("com.github.sourceplusplus.protocol:protocol:46eaa1c361") + compileOnly("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index 88385d1da..b5dbabdb7 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:46eaa1c361") + compileOnly("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index 940ff8f22..6138888da 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:46eaa1c361") + compileOnly("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index 6c99dad16..fdc9abb01 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:46eaa1c361") + implementation("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 3026f9743..fc3c945a8 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -65,7 +65,7 @@ dependencies { implementation(project(":marker:py-marker")) implementation(project(":monitor")) implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:46eaa1c361") + implementation("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") } implementation("org.jooq:joor:$joorVersion") From c592d2c4ae0081247697ba2ea4836d5b06b3b897 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 5 Feb 2022 20:58:32 -0500 Subject: [PATCH 32/42] use official lib --- ...vertx-service-discovery-4.0.3-SNAPSHOT.jar | Bin 70285 -> 0 bytes plugin/build.gradle.kts | 2 +- .../sourcemarker/SourceMarkerPlugin.kt | 23 ++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) delete mode 100644 plugin/.ext/vertx-service-discovery-4.0.3-SNAPSHOT.jar diff --git a/plugin/.ext/vertx-service-discovery-4.0.3-SNAPSHOT.jar b/plugin/.ext/vertx-service-discovery-4.0.3-SNAPSHOT.jar deleted file mode 100644 index 451d90e896e9e562d91e202b188d08c7f8e78dd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70285 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

wWQYQOgu&@n$R*db@b!B9vKko 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 diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index fc3c945a8..3b5727bc1 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -77,7 +77,7 @@ dependencies { implementation("io.vertx:vertx-lang-kotlin:$vertxVersion") implementation("io.vertx:vertx-lang-kotlin-coroutines:$vertxVersion") implementation("io.vertx:vertx-web:$vertxVersion") - implementation(files(".ext/vertx-service-discovery-4.0.3-SNAPSHOT.jar")) + implementation("io.vertx:vertx-service-discovery:$vertxVersion") implementation("io.vertx:vertx-service-proxy:$vertxVersion") implementation("io.vertx:vertx-tcp-eventbus-bridge:$vertxVersion") implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.1") diff --git a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt index 43d9c6c71..3aeced3ea 100644 --- a/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt +++ b/plugin/src/main/kotlin/spp/jetbrains/sourcemarker/SourceMarkerPlugin.kt @@ -328,15 +328,22 @@ object SourceMarkerPlugin { throw RuntimeException(e) } - val discovery: ServiceDiscovery = DiscoveryImpl( - vertx, - ServiceDiscoveryOptions().setBackendConfiguration( - JsonObject() - .put("backend-name", "tcp-service-discovery") - .put("hardcoded_config", hardcodedConfig) - .put("sourcemarker_plugin_config", JsonObject.mapFrom(config)) + val discovery: ServiceDiscovery + val originalClassLoader = Thread.currentThread().contextClassLoader + try { + Thread.currentThread().contextClassLoader = javaClass.classLoader + discovery = DiscoveryImpl( + vertx, + ServiceDiscoveryOptions().setBackendConfiguration( + JsonObject() + .put("backend-name", "tcp-service-discovery") + .put("hardcoded_config", hardcodedConfig) + .put("sourcemarker_plugin_config", JsonObject.mapFrom(config)) + ) ) - ) + } finally { + Thread.currentThread().contextClassLoader = originalClassLoader + } log.info("Discovering available services") val availableRecords = discovery.getRecords { true }.await() From 75d5491fb3de3aa75271efc56f528ced96ae646d Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 13:19:10 -0500 Subject: [PATCH 33/42] Update build.gradle.kts --- mapper/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapper/build.gradle.kts b/mapper/build.gradle.kts index 47f49a325..a723a9a54 100644 --- a/mapper/build.gradle.kts +++ b/mapper/build.gradle.kts @@ -24,7 +24,7 @@ repositories { } dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") + implementation("com.github.sourceplusplus.protocol:protocol:$projectVersion") implementation("com.github.sh5i:git-stein:v0.5.0") implementation("org.apache.commons:commons-lang3:3.12.0") implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r") From b4db81c330346e49837170837029c8c9cc70c45a Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 13:19:29 -0500 Subject: [PATCH 34/42] Update build.gradle.kts --- marker/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marker/build.gradle.kts b/marker/build.gradle.kts index fe11bdfcc..e308f9aa9 100644 --- a/marker/build.gradle.kts +++ b/marker/build.gradle.kts @@ -30,7 +30,7 @@ dependencies { val intellijVersion = "213.6777.52" compileOnly("org.jooq:joor:$joorVersion") - compileOnly("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") + compileOnly("com.github.sourceplusplus.protocol:protocol:$projectVersion") compileOnly("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") compileOnly("com.google.guava:guava:31.0.1-jre") From c5bc659c4835ec70f47c76ed03dc43e86b8c2ac1 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 13:19:40 -0500 Subject: [PATCH 35/42] Update build.gradle.kts --- marker/jvm-marker/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marker/jvm-marker/build.gradle.kts b/marker/jvm-marker/build.gradle.kts index b5dbabdb7..72cf7d187 100644 --- a/marker/jvm-marker/build.gradle.kts +++ b/marker/jvm-marker/build.gradle.kts @@ -21,7 +21,7 @@ dependencies { compileOnly(project(":marker")) compileOnly(project(":monitor")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") + compileOnly("com.github.sourceplusplus.protocol:protocol:$projectVersion") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") From 47b65637d24e87716f69a6e4611c3e2a3f808771 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 13:20:01 -0500 Subject: [PATCH 36/42] Update build.gradle.kts --- marker/py-marker/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marker/py-marker/build.gradle.kts b/marker/py-marker/build.gradle.kts index 6138888da..a21bfac40 100644 --- a/marker/py-marker/build.gradle.kts +++ b/marker/py-marker/build.gradle.kts @@ -18,7 +18,7 @@ dependencies { } else { compileOnly(project(":marker")) } - compileOnly("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") + compileOnly("com.github.sourceplusplus.protocol:protocol:$projectVersion") val intellijVersion = "213.6777.52" implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinVersion") From 7911a118db40b305d878360863317215f0f3b915 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 13:20:13 -0500 Subject: [PATCH 37/42] Update build.gradle.kts --- monitor/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor/build.gradle.kts b/monitor/build.gradle.kts index fdc9abb01..a73c656fb 100644 --- a/monitor/build.gradle.kts +++ b/monitor/build.gradle.kts @@ -10,7 +10,7 @@ val projectVersion: String by project val slf4jVersion: String by project dependencies { - implementation("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") + implementation("com.github.sourceplusplus.protocol:protocol:$projectVersion") implementation("org.slf4j:slf4j-api:$slf4jVersion") implementation("com.apollographql.apollo3:apollo-runtime:$apolloVersion") api("com.apollographql.apollo3:apollo-api:$apolloVersion") From af73fafb1e7ba7e5a146815148da70358cbf00eb Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 13:30:01 -0500 Subject: [PATCH 38/42] bump --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 21412fe68..671277dc6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,7 +7,7 @@ pluginManagement { id 'org.jetbrains.kotlin.plugin.serialization' version kotlinVersion apply false id 'com.avast.gradle.docker-compose' version "0.15.0" apply false id 'io.gitlab.arturbosch.detekt' version "1.19.0" apply false - id 'com.apollographql.apollo3' version "3.0.0" apply false + id 'com.apollographql.apollo3' version "3.1.0" apply false id 'com.diffplug.spotless' version '6.2.1' apply false } } From 79df319280dba9129194411dfad999f69013d9cc Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 14:06:12 -0500 Subject: [PATCH 39/42] Update build.gradle.kts --- plugin/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 3b5727bc1..617245ca5 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -64,8 +64,8 @@ dependencies { implementation(project(":marker:jvm-marker")) implementation(project(":marker:py-marker")) implementation(project(":monitor")) - implementation("com.github.sourceplusplus.interface-portal:portal-jvm:fc869f7181") { isTransitive = false } - implementation("com.github.sourceplusplus.protocol:protocol:2f2e39f1f1") + implementation("com.github.sourceplusplus.interface-portal:portal-jvm:$projectVersion") { isTransitive = false } + implementation("com.github.sourceplusplus.protocol:protocol:$projectVersion") } implementation("org.jooq:joor:$joorVersion") From 719c315921213f68408262733b0694e39604077a Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Mon, 7 Feb 2022 15:08:42 -0500 Subject: [PATCH 40/42] bump --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 5ce062dad..b7511be51 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ platformPlugins = java, Groovy, Kotlin, PythonCore:213.5744.223, org.intellij.sc # See https://kotlinlang.org/docs/reference/using-gradle.html#dependency-on-the-standard-library for details. kotlin.stdlib.default.dependency = true -apolloVersion=3.0.0 +apolloVersion=3.1.0 vertxVersion=4.2.4 slf4jVersion=1.7.33 jacksonVersion=2.13.1 From 13391f90dca57bff8b41e95aff3accb22fb594eb Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 8 Feb 2022 13:53:45 -0500 Subject: [PATCH 41/42] fixes #658 --- .../kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt index 00077ff85..e1bbff1f5 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt @@ -59,8 +59,12 @@ object ArtifactSearch { suspend fun detectRootPackage(project: Project): String? { var basePackages = withContext(Dispatchers.Default) { ApplicationManager.getApplication().runReadAction(Computable> { - JavaPsiFacade.getInstance(project).findPackage("") - ?.getSubPackages(ProjectScope.getProjectScope(project))!! + val foundPackage = JavaPsiFacade.getInstance(project).findPackage("") + if (foundPackage != null) { + foundPackage.getSubPackages(ProjectScope.getProjectScope(project)) + } else { + emptyArray() + } }) } From c446ab7b413620f6161492361b8ccac30cc14fc6 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Tue, 8 Feb 2022 13:55:54 -0500 Subject: [PATCH 42/42] refactor --- .../kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt index e1bbff1f5..b2a4dd60e 100644 --- a/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt +++ b/marker/jvm-marker/src/main/kotlin/spp/jetbrains/marker/jvm/ArtifactSearch.kt @@ -59,12 +59,8 @@ object ArtifactSearch { suspend fun detectRootPackage(project: Project): String? { var basePackages = withContext(Dispatchers.Default) { ApplicationManager.getApplication().runReadAction(Computable> { - val foundPackage = JavaPsiFacade.getInstance(project).findPackage("") - if (foundPackage != null) { - foundPackage.getSubPackages(ProjectScope.getProjectScope(project)) - } else { - emptyArray() - } + JavaPsiFacade.getInstance(project).findPackage("") + ?.getSubPackages(ProjectScope.getProjectScope(project)) ?: emptyArray() }) }