Add DiagnosticSink.setCallbackIfNotSet and deprecate DiagnosticSink.setCallback
#EA-258953 Fixed
This commit is contained in:
committed by
TeamCityServer
parent
3f8fa3149b
commit
714773fdf8
@@ -59,7 +59,18 @@ public interface DiagnosticSink {
|
||||
|
||||
void report(@NotNull Diagnostic diagnostic);
|
||||
|
||||
default void setCallback(@NotNull DiagnosticsCallback callback) { }
|
||||
/**
|
||||
* use {@link #setCallbackIfNotSet(DiagnosticsCallback)} instead
|
||||
* @param callback
|
||||
*/
|
||||
@Deprecated
|
||||
default void setCallback(@NotNull DiagnosticsCallback callback) {
|
||||
setCallbackIfNotSet(callback);
|
||||
}
|
||||
|
||||
default boolean setCallbackIfNotSet(@NotNull DiagnosticsCallback callback) {
|
||||
return false;
|
||||
}
|
||||
|
||||
default void resetCallback() { }
|
||||
|
||||
|
||||
@@ -157,11 +157,15 @@ open class DelegatingBindingTrace(
|
||||
mutableDiagnostics.report(diagnostic)
|
||||
}
|
||||
|
||||
@Volatile
|
||||
protected var diagnosticsCallback: DiagnosticSink.DiagnosticsCallback? = null
|
||||
|
||||
override fun setCallback(callback: DiagnosticSink.DiagnosticsCallback) {
|
||||
diagnosticsCallback = callback
|
||||
mutableDiagnostics?.setCallback(callback)
|
||||
override fun setCallbackIfNotSet(callback: DiagnosticSink.DiagnosticsCallback): Boolean {
|
||||
val callbackIfNotSet = mutableDiagnostics?.setCallbackIfNotSet(callback) ?: false
|
||||
if (callbackIfNotSet) {
|
||||
diagnosticsCallback = callback
|
||||
}
|
||||
return callbackIfNotSet
|
||||
}
|
||||
|
||||
override fun resetCallback() {
|
||||
|
||||
@@ -38,7 +38,12 @@ interface Diagnostics : GenericDiagnostics<Diagnostic> {
|
||||
|
||||
fun noSuppression(): Diagnostics
|
||||
|
||||
fun setCallback(callback: DiagnosticsCallback) {}
|
||||
fun setCallback(callback: DiagnosticsCallback) {
|
||||
setCallbackIfNotSet(callback)
|
||||
}
|
||||
|
||||
fun setCallbackIfNotSet(callback: DiagnosticsCallback): Boolean = false
|
||||
|
||||
fun resetCallback() {}
|
||||
|
||||
companion object {
|
||||
|
||||
+5
@@ -79,6 +79,11 @@ public class DiagnosticsWithSuppression implements Diagnostics {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setCallbackIfNotSet(@NotNull DiagnosticSink.DiagnosticsCallback callback) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetCallback() {
|
||||
|
||||
|
||||
+7
-7
@@ -32,6 +32,7 @@ class MutableDiagnosticsWithSuppression(
|
||||
private val delegateDiagnostics: Diagnostics,
|
||||
) : Diagnostics {
|
||||
private val diagnosticList = ArrayList<Diagnostic>()
|
||||
@Volatile
|
||||
private var diagnosticsCallback: DiagnosticSink.DiagnosticsCallback? = null
|
||||
|
||||
//NOTE: CachedValuesManager is not used because it requires Project passed to this object
|
||||
@@ -48,13 +49,12 @@ class MutableDiagnosticsWithSuppression(
|
||||
override fun forElement(psiElement: PsiElement) = readonlyView().forElement(psiElement)
|
||||
override fun noSuppression() = readonlyView().noSuppression()
|
||||
|
||||
override fun setCallback(callback: DiagnosticSink.DiagnosticsCallback) {
|
||||
diagnosticsCallback?.let {
|
||||
Logger.getInstance(MutableDiagnosticsWithSuppression::class.java).error("diagnostic callback has been already registered")
|
||||
return
|
||||
}
|
||||
diagnosticsCallback = callback
|
||||
delegateDiagnostics.setCallback(callback)
|
||||
override fun setCallbackIfNotSet(callback: DiagnosticSink.DiagnosticsCallback): Boolean {
|
||||
return if (diagnosticsCallback == null) {
|
||||
diagnosticsCallback = callback
|
||||
delegateDiagnostics.setCallbackIfNotSet(callback)
|
||||
true
|
||||
} else false
|
||||
}
|
||||
|
||||
override fun resetCallback() {
|
||||
|
||||
Reference in New Issue
Block a user