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);
|
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() { }
|
default void resetCallback() { }
|
||||||
|
|
||||||
|
|||||||
@@ -157,11 +157,15 @@ open class DelegatingBindingTrace(
|
|||||||
mutableDiagnostics.report(diagnostic)
|
mutableDiagnostics.report(diagnostic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Volatile
|
||||||
protected var diagnosticsCallback: DiagnosticSink.DiagnosticsCallback? = null
|
protected var diagnosticsCallback: DiagnosticSink.DiagnosticsCallback? = null
|
||||||
|
|
||||||
override fun setCallback(callback: DiagnosticSink.DiagnosticsCallback) {
|
override fun setCallbackIfNotSet(callback: DiagnosticSink.DiagnosticsCallback): Boolean {
|
||||||
diagnosticsCallback = callback
|
val callbackIfNotSet = mutableDiagnostics?.setCallbackIfNotSet(callback) ?: false
|
||||||
mutableDiagnostics?.setCallback(callback)
|
if (callbackIfNotSet) {
|
||||||
|
diagnosticsCallback = callback
|
||||||
|
}
|
||||||
|
return callbackIfNotSet
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resetCallback() {
|
override fun resetCallback() {
|
||||||
|
|||||||
@@ -38,7 +38,12 @@ interface Diagnostics : GenericDiagnostics<Diagnostic> {
|
|||||||
|
|
||||||
fun noSuppression(): Diagnostics
|
fun noSuppression(): Diagnostics
|
||||||
|
|
||||||
fun setCallback(callback: DiagnosticsCallback) {}
|
fun setCallback(callback: DiagnosticsCallback) {
|
||||||
|
setCallbackIfNotSet(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setCallbackIfNotSet(callback: DiagnosticsCallback): Boolean = false
|
||||||
|
|
||||||
fun resetCallback() {}
|
fun resetCallback() {}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
+5
@@ -79,6 +79,11 @@ public class DiagnosticsWithSuppression implements Diagnostics {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setCallbackIfNotSet(@NotNull DiagnosticSink.DiagnosticsCallback callback) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resetCallback() {
|
public void resetCallback() {
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -32,6 +32,7 @@ class MutableDiagnosticsWithSuppression(
|
|||||||
private val delegateDiagnostics: Diagnostics,
|
private val delegateDiagnostics: Diagnostics,
|
||||||
) : Diagnostics {
|
) : Diagnostics {
|
||||||
private val diagnosticList = ArrayList<Diagnostic>()
|
private val diagnosticList = ArrayList<Diagnostic>()
|
||||||
|
@Volatile
|
||||||
private var diagnosticsCallback: DiagnosticSink.DiagnosticsCallback? = null
|
private var diagnosticsCallback: DiagnosticSink.DiagnosticsCallback? = null
|
||||||
|
|
||||||
//NOTE: CachedValuesManager is not used because it requires Project passed to this object
|
//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 forElement(psiElement: PsiElement) = readonlyView().forElement(psiElement)
|
||||||
override fun noSuppression() = readonlyView().noSuppression()
|
override fun noSuppression() = readonlyView().noSuppression()
|
||||||
|
|
||||||
override fun setCallback(callback: DiagnosticSink.DiagnosticsCallback) {
|
override fun setCallbackIfNotSet(callback: DiagnosticSink.DiagnosticsCallback): Boolean {
|
||||||
diagnosticsCallback?.let {
|
return if (diagnosticsCallback == null) {
|
||||||
Logger.getInstance(MutableDiagnosticsWithSuppression::class.java).error("diagnostic callback has been already registered")
|
diagnosticsCallback = callback
|
||||||
return
|
delegateDiagnostics.setCallbackIfNotSet(callback)
|
||||||
}
|
true
|
||||||
diagnosticsCallback = callback
|
} else false
|
||||||
delegateDiagnostics.setCallback(callback)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun resetCallback() {
|
override fun resetCallback() {
|
||||||
|
|||||||
Reference in New Issue
Block a user