Added immutability flag in DiagnosticFactoryToRendererMap.
This commit is contained in:
+2
@@ -388,6 +388,8 @@ public class DefaultErrorMessages {
|
|||||||
"Separate it with a semicolon (;) if it is not intended to be an argument.");
|
"Separate it with a semicolon (;) if it is not intended to be an argument.");
|
||||||
|
|
||||||
MAP.put(NOT_AN_ANNOTATION_CLASS, "{0} is not an annotation class", TO_STRING);
|
MAP.put(NOT_AN_ANNOTATION_CLASS, "{0} is not an annotation class", TO_STRING);
|
||||||
|
|
||||||
|
MAP.setImmutable();
|
||||||
}
|
}
|
||||||
|
|
||||||
private DefaultErrorMessages() {
|
private DefaultErrorMessages() {
|
||||||
|
|||||||
+21
-6
@@ -28,35 +28,50 @@ import java.util.Map;
|
|||||||
* @author Evgeny Gerashchenko
|
* @author Evgeny Gerashchenko
|
||||||
* @since 4/13/12
|
* @since 4/13/12
|
||||||
*/
|
*/
|
||||||
public class DiagnosticFactoryToRendererMap {
|
public final class DiagnosticFactoryToRendererMap {
|
||||||
private final Map<AbstractDiagnosticFactory, DiagnosticRenderer<?>> map =
|
private final Map<AbstractDiagnosticFactory, DiagnosticRenderer<?>> map =
|
||||||
new HashMap<AbstractDiagnosticFactory, DiagnosticRenderer<?>>();
|
new HashMap<AbstractDiagnosticFactory, DiagnosticRenderer<?>>();
|
||||||
|
private boolean immutable = false;
|
||||||
|
|
||||||
public final <E extends PsiElement> void put(SimpleDiagnosticFactory<E> factory, String message) {
|
private void checkMutability() {
|
||||||
|
if (immutable) {
|
||||||
|
throw new IllegalStateException("factory to renderer map is already immutable");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public <E extends PsiElement> void put(SimpleDiagnosticFactory<E> factory, String message) {
|
||||||
|
checkMutability();
|
||||||
map.put(factory, new SimpleDiagnosticRenderer(message));
|
map.put(factory, new SimpleDiagnosticRenderer(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final <E extends PsiElement, A> void put(DiagnosticFactory1<E, A> factory, String message, Renderer<? super A> rendererA) {
|
public <E extends PsiElement, A> void put(DiagnosticFactory1<E, A> factory, String message, Renderer<? super A> rendererA) {
|
||||||
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithParameters1Renderer<A>(message, rendererA));
|
map.put(factory, new DiagnosticWithParameters1Renderer<A>(message, rendererA));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final <E extends PsiElement, A, B> void put(DiagnosticFactory2<E, A, B> factory,
|
public <E extends PsiElement, A, B> void put(DiagnosticFactory2<E, A, B> factory,
|
||||||
String message,
|
String message,
|
||||||
Renderer<? super A> rendererA,
|
Renderer<? super A> rendererA,
|
||||||
Renderer<? super B> rendererB) {
|
Renderer<? super B> rendererB) {
|
||||||
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithParameters2Renderer<A, B>(message, rendererA, rendererB));
|
map.put(factory, new DiagnosticWithParameters2Renderer<A, B>(message, rendererA, rendererB));
|
||||||
}
|
}
|
||||||
|
|
||||||
public final <E extends PsiElement, A, B, C> void put(DiagnosticFactory3<E, A, B, C> factory,
|
public <E extends PsiElement, A, B, C> void put(DiagnosticFactory3<E, A, B, C> factory,
|
||||||
String message,
|
String message,
|
||||||
Renderer<? super A> rendererA,
|
Renderer<? super A> rendererA,
|
||||||
Renderer<? super B> rendererB,
|
Renderer<? super B> rendererB,
|
||||||
Renderer<? super C> rendererC) {
|
Renderer<? super C> rendererC) {
|
||||||
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithParameters3Renderer<A, B, C>(message, rendererA, rendererB, rendererC));
|
map.put(factory, new DiagnosticWithParameters3Renderer<A, B, C>(message, rendererA, rendererB, rendererC));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public final DiagnosticRenderer<?> get(@NotNull AbstractDiagnosticFactory factory) {
|
public DiagnosticRenderer<?> get(@NotNull AbstractDiagnosticFactory factory) {
|
||||||
return map.get(factory);
|
return map.get(factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setImmutable() {
|
||||||
|
immutable = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public class IdeErrorMessages {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
// TODO
|
// TODO
|
||||||
|
MAP.setImmutable();
|
||||||
}
|
}
|
||||||
|
|
||||||
private IdeErrorMessages() {
|
private IdeErrorMessages() {
|
||||||
|
|||||||
Reference in New Issue
Block a user