2020package org .elasticsearch .cluster .block ;
2121
2222import com .carrotsearch .hppc .cursors .ObjectObjectCursor ;
23+
2324import org .elasticsearch .cluster .AbstractDiffable ;
2425import org .elasticsearch .cluster .Diff ;
2526import org .elasticsearch .cluster .metadata .IndexMetaData ;
3031import org .elasticsearch .rest .RestStatus ;
3132
3233import java .io .IOException ;
34+ import java .util .EnumMap ;
3335import java .util .HashMap ;
3436import java .util .HashSet ;
3537import java .util .Map ;
@@ -53,7 +55,7 @@ public class ClusterBlocks extends AbstractDiffable<ClusterBlocks> {
5355
5456 private final ImmutableOpenMap <String , Set <ClusterBlock >> indicesBlocks ;
5557
56- private final ImmutableLevelHolder [] levelHolders ;
58+ private final EnumMap < ClusterBlockLevel , ImmutableLevelHolder > levelHolders ;
5759
5860 ClusterBlocks (Set <ClusterBlock > global , ImmutableOpenMap <String , Set <ClusterBlock >> indicesBlocks ) {
5961 this .global = global ;
@@ -70,20 +72,20 @@ public ImmutableOpenMap<String, Set<ClusterBlock>> indices() {
7072 }
7173
7274 public Set <ClusterBlock > global (ClusterBlockLevel level ) {
73- return levelHolders [ level . ordinal ()] .global ();
75+ return levelHolders . get ( level ) .global ();
7476 }
7577
7678 public ImmutableOpenMap <String , Set <ClusterBlock >> indices (ClusterBlockLevel level ) {
77- return levelHolders [ level . ordinal ()] .indices ();
79+ return levelHolders . get ( level ) .indices ();
7880 }
7981
8082 private Set <ClusterBlock > blocksForIndex (ClusterBlockLevel level , String index ) {
8183 return indices (level ).getOrDefault (index , emptySet ());
8284 }
8385
84- private static ImmutableLevelHolder [] generateLevelHolders (Set <ClusterBlock > global ,
85- ImmutableOpenMap <String , Set <ClusterBlock >> indicesBlocks ) {
86- ImmutableLevelHolder [] levelHolders = new ImmutableLevelHolder [ ClusterBlockLevel .values (). length ] ;
86+ private static EnumMap < ClusterBlockLevel , ImmutableLevelHolder > generateLevelHolders (Set <ClusterBlock > global ,
87+ ImmutableOpenMap <String , Set <ClusterBlock >> indicesBlocks ) {
88+ EnumMap < ClusterBlockLevel , ImmutableLevelHolder > levelHolders = new EnumMap <>( ClusterBlockLevel .class ) ;
8789 for (final ClusterBlockLevel level : ClusterBlockLevel .values ()) {
8890 Predicate <ClusterBlock > containsLevel = block -> block .contains (level );
8991 Set <ClusterBlock > newGlobal = unmodifiableSet (global .stream ()
@@ -96,8 +98,7 @@ private static ImmutableLevelHolder[] generateLevelHolders(Set<ClusterBlock> glo
9698 .filter (containsLevel )
9799 .collect (toSet ())));
98100 }
99-
100- levelHolders [level .ordinal ()] = new ImmutableLevelHolder (newGlobal , indicesBuilder .build ());
101+ levelHolders .put (level , new ImmutableLevelHolder (newGlobal , indicesBuilder .build ()));
101102 }
102103 return levelHolders ;
103104 }
0 commit comments