mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[Workspace Model] Get dispose stack trace only if Disposer.isDebug enabled (RootModel)
GitOrigin-RevId: 8c129c6d91aaaa0d81143927b56aa9868e3e7323
This commit is contained in:
committed by
intellij-monorepo-bot
parent
82c7b69cd3
commit
45f652e67c
+15
-3
@@ -24,6 +24,7 @@ import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeLibra
|
||||
import org.jdom.Element
|
||||
import org.jetbrains.annotations.NotNull
|
||||
import java.util.*
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
import kotlin.collections.HashMap
|
||||
|
||||
@@ -79,11 +80,22 @@ internal class RootModelViaTypedEntityImpl(internal val moduleEntityId: Persiste
|
||||
}
|
||||
}
|
||||
|
||||
private val disposed = AtomicReference<Throwable>(null)
|
||||
private var disposedStackTrace: Throwable? = null
|
||||
private val isDisposed = AtomicBoolean(false)
|
||||
|
||||
override fun dispose() {
|
||||
(filePointerProvider as? LegacyBridgeFilePointerProviderImpl)?.disposeAndClearCaches()
|
||||
val disposedStackTrace = disposed.getAndSet(Throwable())
|
||||
if (disposedStackTrace != null) throw IllegalStateException("${javaClass.name} was already disposed", disposedStackTrace)
|
||||
|
||||
val alreadyDisposed = isDisposed.getAndSet(true)
|
||||
if (alreadyDisposed) {
|
||||
val trace = disposedStackTrace
|
||||
if (trace != null) {
|
||||
throw IllegalStateException("${javaClass.name} was already disposed", trace)
|
||||
}
|
||||
else throw IllegalStateException("${javaClass.name} was already disposed")
|
||||
} else if (Disposer.isDebugMode()) {
|
||||
disposedStackTrace = Throwable()
|
||||
}
|
||||
}
|
||||
|
||||
override fun getModule(): LegacyBridgeModule = module
|
||||
|
||||
Reference in New Issue
Block a user