20
20
package org .elasticsearch .cluster .block ;
21
21
22
22
import com .carrotsearch .hppc .cursors .ObjectObjectCursor ;
23
+
23
24
import org .elasticsearch .cluster .AbstractDiffable ;
24
25
import org .elasticsearch .cluster .Diff ;
25
26
import org .elasticsearch .cluster .metadata .IndexMetaData ;
30
31
import org .elasticsearch .rest .RestStatus ;
31
32
32
33
import java .io .IOException ;
34
+ import java .util .EnumMap ;
33
35
import java .util .HashMap ;
34
36
import java .util .HashSet ;
35
37
import java .util .Map ;
@@ -53,7 +55,7 @@ public class ClusterBlocks extends AbstractDiffable<ClusterBlocks> {
53
55
54
56
private final ImmutableOpenMap <String , Set <ClusterBlock >> indicesBlocks ;
55
57
56
- private final ImmutableLevelHolder [] levelHolders ;
58
+ private final EnumMap < ClusterBlockLevel , ImmutableLevelHolder > levelHolders ;
57
59
58
60
ClusterBlocks (Set <ClusterBlock > global , ImmutableOpenMap <String , Set <ClusterBlock >> indicesBlocks ) {
59
61
this .global = global ;
@@ -70,20 +72,20 @@ public ImmutableOpenMap<String, Set<ClusterBlock>> indices() {
70
72
}
71
73
72
74
public Set <ClusterBlock > global (ClusterBlockLevel level ) {
73
- return levelHolders [ level . ordinal ()] .global ();
75
+ return levelHolders . get ( level ) .global ();
74
76
}
75
77
76
78
public ImmutableOpenMap <String , Set <ClusterBlock >> indices (ClusterBlockLevel level ) {
77
- return levelHolders [ level . ordinal ()] .indices ();
79
+ return levelHolders . get ( level ) .indices ();
78
80
}
79
81
80
82
private Set <ClusterBlock > blocksForIndex (ClusterBlockLevel level , String index ) {
81
83
return indices (level ).getOrDefault (index , emptySet ());
82
84
}
83
85
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 ) ;
87
89
for (final ClusterBlockLevel level : ClusterBlockLevel .values ()) {
88
90
Predicate <ClusterBlock > containsLevel = block -> block .contains (level );
89
91
Set <ClusterBlock > newGlobal = unmodifiableSet (global .stream ()
@@ -96,8 +98,7 @@ private static ImmutableLevelHolder[] generateLevelHolders(Set<ClusterBlock> glo
96
98
.filter (containsLevel )
97
99
.collect (toSet ())));
98
100
}
99
-
100
- levelHolders [level .ordinal ()] = new ImmutableLevelHolder (newGlobal , indicesBuilder .build ());
101
+ levelHolders .put (level , new ImmutableLevelHolder (newGlobal , indicesBuilder .build ()));
101
102
}
102
103
return levelHolders ;
103
104
}
0 commit comments