You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2022/10/28 15:21:49 UTC
[solr] 08/12: SOLR-16427: Evaluate and fix errorprone rules - ImmutableEnumChecker
This is an automated email from the ASF dual-hosted git repository.
krisden pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git
commit 209669f4861d64e3c324143361da2da84a6b6b88
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Tue Oct 25 16:49:30 2022 -0400
SOLR-16427: Evaluate and fix errorprone rules - ImmutableEnumChecker
---
gradle/validation/error-prone.gradle | 3 +--
.../client/solrj/embedded/EmbeddedSolrServer.java | 5 ++--
.../api/collections/ReindexCollectionCmd.java | 14 +++++-----
.../src/java/org/apache/solr/cluster/Replica.java | 2 +-
.../solr/handler/admin/CollectionsHandler.java | 13 +++-------
.../solr/handler/admin/CoreAdminOperation.java | 1 +
.../solr/handler/component/HighlightComponent.java | 10 +++-----
.../apache/solr/handler/component/StatsField.java | 3 ++-
.../java/org/apache/solr/schema/IndexSchema.java | 10 ++++----
.../java/org/apache/solr/schema/NumberType.java | 3 ++-
.../solr/search/CollapsingQParserPlugin.java | 6 ++---
.../java/org/apache/solr/security/AuditEvent.java | 4 +--
.../solr/security/PermissionNameProvider.java | 1 +
.../security/RuleBasedAuthorizationPluginBase.java | 1 +
.../solr/response/TestRetrieveFieldsOptimizer.java | 30 ++++++++++------------
.../org/apache/solr/handler/sql/SolrMethod.java | 1 +
.../org/apache/solr/common/params/TermsParams.java | 4 +--
.../solr/common/util/JsonSchemaValidator.java | 2 +-
18 files changed, 53 insertions(+), 60 deletions(-)
diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle
index a9ddb63c49d..175b90f792d 100644
--- a/gradle/validation/error-prone.gradle
+++ b/gradle/validation/error-prone.gradle
@@ -77,13 +77,12 @@ allprojects { prj ->
'-Xep:ArgumentSelectionDefectChecker:OFF',
'-Xep:BadImport:OFF', // style preference that we don't want to enforce
'-Xep:CanIgnoreReturnValueSuggester:OFF',
- '-Xep:ComplexBooleanConstant:OFF',
+ '-Xep:ComplexBooleanConstant:OFF', // non trivial to fix in some cases
'-Xep:DoubleCheckedLocking:OFF',
'-Xep:EmptyCatch:OFF',
'-Xep:Finally:OFF',
'-Xep:FutureReturnValueIgnored:OFF',
'-Xep:IdentityBinaryExpression:OFF',
- '-Xep:ImmutableEnumChecker:OFF',
'-Xep:InconsistentCapitalization:OFF',
'-Xep:InlineFormatString:OFF', // this introduces redundancy in format strings
'-Xep:InputStreamSlowMultibyteRead:OFF',
diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
index 4a39487807c..3593f5eb376 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/EmbeddedSolrServer.java
@@ -72,13 +72,14 @@ public class EmbeddedSolrServer extends SolrClient {
private final RequestWriterSupplier supplier;
private boolean containerIsLocal = false;
+ @SuppressWarnings("ImmutableEnumChecker")
public enum RequestWriterSupplier {
JavaBin(() -> new BinaryRequestWriter()),
XML(() -> new RequestWriter());
- private Supplier<RequestWriter> supplier;
+ private final Supplier<RequestWriter> supplier;
- private RequestWriterSupplier(final Supplier<RequestWriter> supplier) {
+ RequestWriterSupplier(final Supplier<RequestWriter> supplier) {
this.supplier = supplier;
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
index 37dc7eb9b82..c4ffc78a5bf 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/ReindexCollectionCmd.java
@@ -22,7 +22,6 @@ import static org.apache.solr.common.params.CollectionAdminParams.FOLLOW_ALIASES
import com.google.common.annotations.VisibleForTesting;
import java.lang.invoke.MethodHandles;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
@@ -138,10 +137,9 @@ public class ReindexCollectionCmd implements CollApiCmds.CollectionApiCommand {
return states.get(p);
}
- static Map<String, State> states =
- Collections.unmodifiableMap(
- Stream.of(State.values())
- .collect(Collectors.toMap(State::toLower, Function.identity())));
+ static final Map<String, State> states =
+ Stream.of(State.values())
+ .collect(Collectors.toUnmodifiableMap(State::toLower, Function.identity()));
}
public enum Cmd {
@@ -161,9 +159,9 @@ public class ReindexCollectionCmd implements CollApiCmds.CollectionApiCommand {
return cmds.get(p);
}
- static Map<String, Cmd> cmds =
- Collections.unmodifiableMap(
- Stream.of(Cmd.values()).collect(Collectors.toMap(Cmd::toLower, Function.identity())));
+ static final Map<String, Cmd> cmds =
+ Stream.of(Cmd.values())
+ .collect(Collectors.toUnmodifiableMap(Cmd::toLower, Function.identity()));
}
private String zkHost;
diff --git a/solr/core/src/java/org/apache/solr/cluster/Replica.java b/solr/core/src/java/org/apache/solr/cluster/Replica.java
index ce3e0614894..2d6978c63f1 100644
--- a/solr/core/src/java/org/apache/solr/cluster/Replica.java
+++ b/solr/core/src/java/org/apache/solr/cluster/Replica.java
@@ -42,7 +42,7 @@ public interface Replica {
TLOG('t'),
PULL('p');
- private char suffixChar;
+ private final char suffixChar;
ReplicaType(char suffixChar) {
this.suffixChar = suffixChar;
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index 5760ff0dff7..59d331cd344 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@ -575,6 +575,7 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
results.add("status", status);
}
+ @SuppressWarnings("ImmutableEnumChecker")
public enum CollectionOperation implements CollectionOp {
CREATE_OP(
CREATE,
@@ -632,7 +633,6 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
copyPropertiesWithPrefix(req.getParams(), props, PROPERTY_PREFIX);
return copyPropertiesWithPrefix(req.getParams(), props, "router.");
}),
- @SuppressWarnings({"unchecked"})
COLSTATUS_OP(
COLSTATUS,
(req, rsp, h) -> {
@@ -854,7 +854,6 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
}),
/** List the aliases and associated properties. */
- @SuppressWarnings({"unchecked"})
LISTALIASES_OP(
LISTALIASES,
(req, rsp, h) -> {
@@ -1062,7 +1061,6 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
cp.setCollectionProperty(collection, name, val);
return null;
}),
- @SuppressWarnings({"unchecked"})
REQUESTSTATUS_OP(
REQUESTSTATUS,
(req, rsp, h) -> {
@@ -1128,14 +1126,13 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
DELETESTATUS_OP(
DELETESTATUS,
new CollectionOp() {
- @SuppressWarnings("unchecked")
@Override
public Map<String, Object> execute(
SolrQueryRequest req, SolrQueryResponse rsp, CollectionsHandler h) throws Exception {
final CoreContainer coreContainer = h.coreContainer;
final String requestId = req.getParams().get(REQUESTID);
final ZkController zkController = coreContainer.getZkController();
- Boolean flush = req.getParams().getBool(CollectionAdminParams.FLUSH, false);
+ boolean flush = req.getParams().getBool(CollectionAdminParams.FLUSH, false);
if (requestId == null && !flush) {
throw new SolrException(
@@ -1229,7 +1226,6 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
return copyPropertiesWithPrefix(req.getParams(), props, PROPERTY_PREFIX);
}),
OVERSEERSTATUS_OP(OVERSEERSTATUS, (req, rsp, h) -> new LinkedHashMap<>()),
- @SuppressWarnings({"unchecked"})
DISTRIBUTEDAPIPROCESSING_OP(
DISTRIBUTEDAPIPROCESSING,
(req, rsp, h) -> {
@@ -1241,7 +1237,6 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
return null;
}),
/** Handle list collection request. Do list collection request to zk host */
- @SuppressWarnings({"unchecked"})
LIST_OP(
LIST,
(req, rsp, h) -> {
@@ -1858,8 +1853,8 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
}
public final CollectionOp fun;
- CollectionAction action;
- long timeOut;
+ final CollectionAction action;
+ final long timeOut;
CollectionOperation(CollectionAction action, CollectionOp fun) {
this(action, DEFAULT_COLLECTION_OP_TIMEOUT, fun);
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
index 75dfa9f137a..e2a4643d77e 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminOperation.java
@@ -82,6 +82,7 @@ import org.apache.solr.util.TestInjection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@SuppressWarnings("ImmutableEnumChecker")
public enum CoreAdminOperation implements CoreAdminOp {
CREATE_OP(
CREATE,
diff --git a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
index 918a036e787..3a1684cd45d 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HighlightComponent.java
@@ -16,15 +16,13 @@
*/
package org.apache.solr.handler.component;
-import static java.util.stream.Collectors.toMap;
-
import com.google.common.base.MoreObjects;
import java.io.IOException;
import java.lang.reflect.Array;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.lucene.search.Query;
import org.apache.solr.common.SolrException;
@@ -61,9 +59,9 @@ public class HighlightComponent extends SearchComponent
ORIGINAL("original");
private static final Map<String, HighlightMethod> METHODS =
- Collections.unmodifiableMap(
- Stream.of(values())
- .collect(toMap(HighlightMethod::getMethodName, Function.identity())));
+ Stream.of(values())
+ .collect(
+ Collectors.toUnmodifiableMap(HighlightMethod::getMethodName, Function.identity()));
private final String methodName;
diff --git a/solr/core/src/java/org/apache/solr/handler/component/StatsField.java b/solr/core/src/java/org/apache/solr/handler/component/StatsField.java
index 78b506870a1..35fd161f5d0 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/StatsField.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/StatsField.java
@@ -74,7 +74,8 @@ public class StatsField {
* @lucene.internal
* @lucene.experimental
*/
- public static enum Stat {
+ @SuppressWarnings("ImmutableEnumChecker")
+ public enum Stat {
min(true),
max(true),
missing(true),
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 3907c674183..2c7a521cb2f 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -1564,6 +1564,7 @@ public class IndexSchema {
private Set<String> requestedSourceFields;
private Set<String> requestedDestinationFields;
+ @SuppressWarnings("ImmutableEnumChecker")
public enum Handler {
NAME(IndexSchema.NAME, sp -> sp.schema.getSchemaName()),
VERSION(IndexSchema.VERSION, sp -> sp.schema.getVersion()),
@@ -1687,11 +1688,10 @@ public class IndexSchema {
}
public static Map<String, String> nameMapping =
- Collections.unmodifiableMap(
- Stream.of(SchemaProps.Handler.values())
- .collect(
- Collectors.toMap(
- SchemaProps.Handler::getNameLower, SchemaProps.Handler::getRealName)));
+ Stream.of(SchemaProps.Handler.values())
+ .collect(
+ Collectors.toUnmodifiableMap(
+ SchemaProps.Handler::getNameLower, SchemaProps.Handler::getRealName));
public Map<String, Object> getNamedPropertyValues(String name, SolrParams params) {
return new SchemaProps(name, params, this).toMap(new LinkedHashMap<>());
diff --git a/solr/core/src/java/org/apache/solr/schema/NumberType.java b/solr/core/src/java/org/apache/solr/schema/NumberType.java
index bf2b1271ed2..2f12231fe98 100644
--- a/solr/core/src/java/org/apache/solr/schema/NumberType.java
+++ b/solr/core/src/java/org/apache/solr/schema/NumberType.java
@@ -18,6 +18,7 @@ package org.apache.solr.schema;
import org.apache.lucene.search.SortField;
+@SuppressWarnings("ImmutableEnumChecker")
public enum NumberType {
INTEGER(SortField.Type.INT, Integer.MIN_VALUE, Integer.MAX_VALUE),
LONG(SortField.Type.LONG, Long.MIN_VALUE, Long.MAX_VALUE),
@@ -42,7 +43,7 @@ public enum NumberType {
*/
public final Object sortMissingHigh;
- private NumberType(SortField.Type sortType, Object sortMissingLow, Object sortMissingHigh) {
+ NumberType(SortField.Type sortType, Object sortMissingLow, Object sortMissingHigh) {
this.sortType = sortType;
this.sortMissingLow = sortMissingLow;
this.sortMissingHigh = sortMissingHigh;
diff --git a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
index 3edb2073712..a44673efbb2 100644
--- a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
@@ -192,7 +192,7 @@ public class CollapsingQParserPlugin extends QParserPlugin {
}
}
- static NullPolicy DEFAULT_POLICY = IGNORE;
+ static final NullPolicy DEFAULT_POLICY = IGNORE;
}
@Override
@@ -218,12 +218,12 @@ public class CollapsingQParserPlugin extends QParserPlugin {
}
}
- public static enum GroupHeadSelectorType {
+ public enum GroupHeadSelectorType {
MIN,
MAX,
SORT,
SCORE;
- public static EnumSet<GroupHeadSelectorType> MIN_MAX = EnumSet.of(MIN, MAX);
+ public static final EnumSet<GroupHeadSelectorType> MIN_MAX = EnumSet.of(MIN, MAX);
}
/** Models all the information about how group head documents should be selected */
diff --git a/solr/core/src/java/org/apache/solr/security/AuditEvent.java b/solr/core/src/java/org/apache/solr/security/AuditEvent.java
index aa4b847807a..316e83556f0 100644
--- a/solr/core/src/java/org/apache/solr/security/AuditEvent.java
+++ b/solr/core/src/java/org/apache/solr/security/AuditEvent.java
@@ -86,9 +86,9 @@ public class AuditEvent {
ERROR("Error", "Request was not executed due to an error", Level.ERROR, 500);
public final String message;
- public String explanation;
+ public final String explanation;
public final Level level;
- public int status;
+ public final int status;
EventType(String message, String explanation, Level level, int status) {
this.message = message;
diff --git a/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java b/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
index 3427a51a5fe..3321c6ac248 100644
--- a/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
+++ b/solr/core/src/java/org/apache/solr/security/PermissionNameProvider.java
@@ -34,6 +34,7 @@ import java.util.Set;
*/
public interface PermissionNameProvider {
// 'null' means the permission applies to system-level, while '*' means any collection
+ @SuppressWarnings("ImmutableEnumChecker")
enum Name {
COLL_EDIT_PERM("collection-admin-edit", null),
COLL_READ_PERM("collection-admin-read", null),
diff --git a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPluginBase.java b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPluginBase.java
index fc917cad38a..7c7de920e1d 100644
--- a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPluginBase.java
+++ b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPluginBase.java
@@ -366,6 +366,7 @@ public abstract class RuleBasedAuthorizationPluginBase
@Override
public void close() throws IOException {}
+ @SuppressWarnings("ImmutableEnumChecker")
enum MatchStatus {
USER_REQUIRED(AuthorizationResponse.PROMPT),
NO_PERMISSIONS_FOUND(AuthorizationResponse.OK),
diff --git a/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java b/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java
index 0c04a08b4ec..e5cbeaf44d1 100644
--- a/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java
+++ b/solr/core/src/test/org/apache/solr/response/TestRetrieveFieldsOptimizer.java
@@ -25,7 +25,6 @@ import static org.apache.solr.search.SolrReturnFields.FIELD_SOURCES.MIXED_SOURCE
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.time.Instant;
-import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -38,7 +37,6 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
-import java.util.stream.Stream;
import org.apache.lucene.index.FieldInfo;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrDocument;
@@ -411,21 +409,19 @@ class RetrieveFieldType {
}
static final Map<TEST_TYPE, String> solrClassMap =
- Collections.unmodifiableMap(
- Stream.of(
- new SimpleEntry<>(TEST_TYPE.TINT, "solr.TrieIntField"),
- new SimpleEntry<>(TEST_TYPE.TLONG, "solr.TrieLongField"),
- new SimpleEntry<>(TEST_TYPE.TFLOAT, "solr.TrieFloatField"),
- new SimpleEntry<>(TEST_TYPE.TDOUBLE, "solr.TrieDoubleField"),
- new SimpleEntry<>(TEST_TYPE.TDATE, "solr.TrieDateField"),
- new SimpleEntry<>(TEST_TYPE.PINT, "solr.IntPointField"),
- new SimpleEntry<>(TEST_TYPE.PLONG, "solr.LongPointField"),
- new SimpleEntry<>(TEST_TYPE.PFLOAT, "solr.FloatPointField"),
- new SimpleEntry<>(TEST_TYPE.PDOUBLE, "solr.DoublePointField"),
- new SimpleEntry<>(TEST_TYPE.PDATE, "solr.DatePointField"),
- new SimpleEntry<>(TEST_TYPE.STRING, "solr.StrField"),
- new SimpleEntry<>(TEST_TYPE.BOOL, "solr.BoolField"))
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
+ Map.ofEntries(
+ Map.entry(TEST_TYPE.TINT, "solr.TrieIntField"),
+ Map.entry(TEST_TYPE.TLONG, "solr.TrieLongField"),
+ Map.entry(TEST_TYPE.TFLOAT, "solr.TrieFloatField"),
+ Map.entry(TEST_TYPE.TDOUBLE, "solr.TrieDoubleField"),
+ Map.entry(TEST_TYPE.TDATE, "solr.TrieDateField"),
+ Map.entry(TEST_TYPE.PINT, "solr.IntPointField"),
+ Map.entry(TEST_TYPE.PLONG, "solr.LongPointField"),
+ Map.entry(TEST_TYPE.PFLOAT, "solr.FloatPointField"),
+ Map.entry(TEST_TYPE.PDOUBLE, "solr.DoublePointField"),
+ Map.entry(TEST_TYPE.PDATE, "solr.DatePointField"),
+ Map.entry(TEST_TYPE.STRING, "solr.StrField"),
+ Map.entry(TEST_TYPE.BOOL, "solr.BoolField"));
RetrieveFieldType(IndexSchema schema, String name, TEST_TYPE type) {
this.name = name;
diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrMethod.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrMethod.java
index 0450ef935aa..b52a4bf0588 100644
--- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrMethod.java
+++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrMethod.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.apache.calcite.linq4j.tree.Types;
/** Builtin methods in the Solr adapter. */
+@SuppressWarnings("ImmutableEnumChecker")
enum SolrMethod {
SOLR_QUERYABLE_QUERY(
SolrTable.SolrQueryable.class,
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java b/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
index 283f3e7ecf1..129c7e204b8 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/TermsParams.java
@@ -76,7 +76,7 @@ public interface TermsParams {
public static final String TERMS_REGEXP_FLAG = TERMS_REGEXP_STR + ".flag";
- public static enum TermsRegexpFlag {
+ enum TermsRegexpFlag {
UNIX_LINES(Pattern.UNIX_LINES),
CASE_INSENSITIVE(Pattern.CASE_INSENSITIVE),
COMMENTS(Pattern.COMMENTS),
@@ -86,7 +86,7 @@ public interface TermsParams {
UNICODE_CASE(Pattern.UNICODE_CASE),
CANON_EQ(Pattern.CANON_EQ);
- int value;
+ final int value;
TermsRegexpFlag(int value) {
this.value = value;
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaValidator.java b/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaValidator.java
index 0501d19486f..4837736f103 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaValidator.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/JsonSchemaValidator.java
@@ -150,7 +150,7 @@ enum Type {
NULL(null),
UNKNOWN(Object.class);
- Class<?> type;
+ final Class<?> type;
Type(Class<?> type) {
this.type = type;