chia7712 commented on a change in pull request #9748:
URL: https://github.com/apache/kafka/pull/9748#discussion_r543799602



##########
File path: clients/src/main/java/org/apache/kafka/common/protocol/ApiKeys.java
##########
@@ -157,124 +38,76 @@
  * Identifiers for all the Kafka APIs
  */
 public enum ApiKeys {
-    PRODUCE(0, "Produce", ProduceRequestData.SCHEMAS, 
ProduceResponseData.SCHEMAS),
-    FETCH(1, "Fetch", FetchRequestData.SCHEMAS, FetchResponseData.SCHEMAS),
-    LIST_OFFSETS(2, "ListOffsets", ListOffsetRequestData.SCHEMAS, 
ListOffsetResponseData.SCHEMAS),
-    METADATA(3, "Metadata", MetadataRequestData.SCHEMAS, 
MetadataResponseData.SCHEMAS),
-    LEADER_AND_ISR(4, "LeaderAndIsr", true, LeaderAndIsrRequestData.SCHEMAS, 
LeaderAndIsrResponseData.SCHEMAS),
-    STOP_REPLICA(5, "StopReplica", true, StopReplicaRequestData.SCHEMAS, 
StopReplicaResponseData.SCHEMAS),
-    UPDATE_METADATA(6, "UpdateMetadata", true, 
UpdateMetadataRequestData.SCHEMAS, UpdateMetadataResponseData.SCHEMAS),
-    CONTROLLED_SHUTDOWN(7, "ControlledShutdown", true, 
ControlledShutdownRequestData.SCHEMAS,
-            ControlledShutdownResponseData.SCHEMAS),
-    OFFSET_COMMIT(8, "OffsetCommit", OffsetCommitRequestData.SCHEMAS, 
OffsetCommitResponseData.SCHEMAS),
-    OFFSET_FETCH(9, "OffsetFetch", OffsetFetchRequestData.SCHEMAS, 
OffsetFetchResponseData.SCHEMAS),
-    FIND_COORDINATOR(10, "FindCoordinator", FindCoordinatorRequestData.SCHEMAS,
-            FindCoordinatorResponseData.SCHEMAS),
-    JOIN_GROUP(11, "JoinGroup", JoinGroupRequestData.SCHEMAS, 
JoinGroupResponseData.SCHEMAS),
-    HEARTBEAT(12, "Heartbeat", HeartbeatRequestData.SCHEMAS, 
HeartbeatResponseData.SCHEMAS),
-    LEAVE_GROUP(13, "LeaveGroup", LeaveGroupRequestData.SCHEMAS, 
LeaveGroupResponseData.SCHEMAS),
-    SYNC_GROUP(14, "SyncGroup", SyncGroupRequestData.SCHEMAS, 
SyncGroupResponseData.SCHEMAS),
-    DESCRIBE_GROUPS(15, "DescribeGroups", DescribeGroupsRequestData.SCHEMAS,
-            DescribeGroupsResponseData.SCHEMAS),
-    LIST_GROUPS(16, "ListGroups", ListGroupsRequestData.SCHEMAS, 
ListGroupsResponseData.SCHEMAS),
-    SASL_HANDSHAKE(17, "SaslHandshake", SaslHandshakeRequestData.SCHEMAS, 
SaslHandshakeResponseData.SCHEMAS),
-    API_VERSIONS(18, "ApiVersions", ApiVersionsRequestData.SCHEMAS, 
ApiVersionsResponseData.SCHEMAS) {
-        @Override
-        public Struct parseResponse(short version, ByteBuffer buffer) {
-            // Fallback to version 0 for ApiVersions response. If a client 
sends an ApiVersionsRequest
-            // using a version higher than that supported by the broker, a 
version 0 response is sent
-            // to the client indicating UNSUPPORTED_VERSION.
-            return parseResponse(version, buffer, (short) 0);
-        }
-    },
-    CREATE_TOPICS(19, "CreateTopics", CreateTopicsRequestData.SCHEMAS, 
CreateTopicsResponseData.SCHEMAS, true),
-    DELETE_TOPICS(20, "DeleteTopics", DeleteTopicsRequestData.SCHEMAS, 
DeleteTopicsResponseData.SCHEMAS, true),
-    DELETE_RECORDS(21, "DeleteRecords", DeleteRecordsRequestData.SCHEMAS, 
DeleteRecordsResponseData.SCHEMAS),
-    INIT_PRODUCER_ID(22, "InitProducerId", InitProducerIdRequestData.SCHEMAS, 
InitProducerIdResponseData.SCHEMAS),
-    OFFSET_FOR_LEADER_EPOCH(23, "OffsetForLeaderEpoch", false, 
OffsetForLeaderEpochRequestData.SCHEMAS,
-        OffsetForLeaderEpochResponseData.SCHEMAS),
-    ADD_PARTITIONS_TO_TXN(24, "AddPartitionsToTxn", false, 
RecordBatch.MAGIC_VALUE_V2,
-            AddPartitionsToTxnRequestData.SCHEMAS, 
AddPartitionsToTxnResponseData.SCHEMAS),
-    ADD_OFFSETS_TO_TXN(25, "AddOffsetsToTxn", false, 
RecordBatch.MAGIC_VALUE_V2, AddOffsetsToTxnRequestData.SCHEMAS,
-            AddOffsetsToTxnResponseData.SCHEMAS),
-    END_TXN(26, "EndTxn", false, RecordBatch.MAGIC_VALUE_V2, 
EndTxnRequestData.SCHEMAS, EndTxnResponseData.SCHEMAS),
-    WRITE_TXN_MARKERS(27, "WriteTxnMarkers", true, RecordBatch.MAGIC_VALUE_V2, 
WriteTxnMarkersRequestData.SCHEMAS,
-            WriteTxnMarkersResponseData.SCHEMAS),
-    TXN_OFFSET_COMMIT(28, "TxnOffsetCommit", false, 
RecordBatch.MAGIC_VALUE_V2, TxnOffsetCommitRequestData.SCHEMAS,
-            TxnOffsetCommitResponseData.SCHEMAS),
-    DESCRIBE_ACLS(29, "DescribeAcls", DescribeAclsRequestData.SCHEMAS, 
DescribeAclsResponseData.SCHEMAS),
-    CREATE_ACLS(30, "CreateAcls", CreateAclsRequestData.SCHEMAS, 
CreateAclsResponseData.SCHEMAS, true),
-    DELETE_ACLS(31, "DeleteAcls", DeleteAclsRequestData.SCHEMAS, 
DeleteAclsResponseData.SCHEMAS, true),
-    DESCRIBE_CONFIGS(32, "DescribeConfigs", DescribeConfigsRequestData.SCHEMAS,
-             DescribeConfigsResponseData.SCHEMAS),
-    ALTER_CONFIGS(33, "AlterConfigs", AlterConfigsRequestData.SCHEMAS,
-            AlterConfigsResponseData.SCHEMAS, true),
-    ALTER_REPLICA_LOG_DIRS(34, "AlterReplicaLogDirs", 
AlterReplicaLogDirsRequestData.SCHEMAS,
-            AlterReplicaLogDirsResponseData.SCHEMAS),
-    DESCRIBE_LOG_DIRS(35, "DescribeLogDirs", 
DescribeLogDirsRequestData.SCHEMAS,
-            DescribeLogDirsResponseData.SCHEMAS),
-    SASL_AUTHENTICATE(36, "SaslAuthenticate", 
SaslAuthenticateRequestData.SCHEMAS,
-            SaslAuthenticateResponseData.SCHEMAS),
-    CREATE_PARTITIONS(37, "CreatePartitions", 
CreatePartitionsRequestData.SCHEMAS,
-            CreatePartitionsResponseData.SCHEMAS, true),
-    CREATE_DELEGATION_TOKEN(38, "CreateDelegationToken", 
CreateDelegationTokenRequestData.SCHEMAS,
-            CreateDelegationTokenResponseData.SCHEMAS, true),
-    RENEW_DELEGATION_TOKEN(39, "RenewDelegationToken", 
RenewDelegationTokenRequestData.SCHEMAS,
-            RenewDelegationTokenResponseData.SCHEMAS, true),
-    EXPIRE_DELEGATION_TOKEN(40, "ExpireDelegationToken", 
ExpireDelegationTokenRequestData.SCHEMAS,
-            ExpireDelegationTokenResponseData.SCHEMAS, true),
-    DESCRIBE_DELEGATION_TOKEN(41, "DescribeDelegationToken", 
DescribeDelegationTokenRequestData.SCHEMAS,
-            DescribeDelegationTokenResponseData.SCHEMAS),
-    DELETE_GROUPS(42, "DeleteGroups", DeleteGroupsRequestData.SCHEMAS, 
DeleteGroupsResponseData.SCHEMAS),
-    ELECT_LEADERS(43, "ElectLeaders", ElectLeadersRequestData.SCHEMAS,
-            ElectLeadersResponseData.SCHEMAS),
-    INCREMENTAL_ALTER_CONFIGS(44, "IncrementalAlterConfigs", 
IncrementalAlterConfigsRequestData.SCHEMAS,
-            IncrementalAlterConfigsResponseData.SCHEMAS, true),
-    ALTER_PARTITION_REASSIGNMENTS(45, "AlterPartitionReassignments", 
AlterPartitionReassignmentsRequestData.SCHEMAS,
-            AlterPartitionReassignmentsResponseData.SCHEMAS, true),
-    LIST_PARTITION_REASSIGNMENTS(46, "ListPartitionReassignments", 
ListPartitionReassignmentsRequestData.SCHEMAS,
-            ListPartitionReassignmentsResponseData.SCHEMAS),
-    OFFSET_DELETE(47, "OffsetDelete", OffsetDeleteRequestData.SCHEMAS, 
OffsetDeleteResponseData.SCHEMAS),
-    DESCRIBE_CLIENT_QUOTAS(48, "DescribeClientQuotas", 
DescribeClientQuotasRequestData.SCHEMAS,
-            DescribeClientQuotasResponseData.SCHEMAS),
-    ALTER_CLIENT_QUOTAS(49, "AlterClientQuotas", 
AlterClientQuotasRequestData.SCHEMAS,
-            AlterClientQuotasResponseData.SCHEMAS, true),
-    DESCRIBE_USER_SCRAM_CREDENTIALS(50, "DescribeUserScramCredentials", 
DescribeUserScramCredentialsRequestData.SCHEMAS,
-            DescribeUserScramCredentialsResponseData.SCHEMAS),
-    ALTER_USER_SCRAM_CREDENTIALS(51, "AlterUserScramCredentials", 
AlterUserScramCredentialsRequestData.SCHEMAS,
-            AlterUserScramCredentialsResponseData.SCHEMAS, true),
-    VOTE(52, "Vote", true, false,
-        VoteRequestData.SCHEMAS, VoteResponseData.SCHEMAS),
-    BEGIN_QUORUM_EPOCH(53, "BeginQuorumEpoch", true, false,
-        BeginQuorumEpochRequestData.SCHEMAS, 
BeginQuorumEpochResponseData.SCHEMAS),
-    END_QUORUM_EPOCH(54, "EndQuorumEpoch", true, false,
-        EndQuorumEpochRequestData.SCHEMAS, EndQuorumEpochResponseData.SCHEMAS),
-    DESCRIBE_QUORUM(55, "DescribeQuorum", true, false,
-        DescribeQuorumRequestData.SCHEMAS, DescribeQuorumResponseData.SCHEMAS),
-    ALTER_ISR(56, "AlterIsr", true, AlterIsrRequestData.SCHEMAS, 
AlterIsrResponseData.SCHEMAS),
-    UPDATE_FEATURES(57, "UpdateFeatures",
-        UpdateFeaturesRequestData.SCHEMAS, UpdateFeaturesResponseData.SCHEMAS, 
true),
-    ENVELOPE(58, "Envelope", true, false, EnvelopeRequestData.SCHEMAS, 
EnvelopeResponseData.SCHEMAS);
-
-    private static final ApiKeys[] ID_TO_TYPE;
-    private static final int MIN_API_KEY = 0;
-    public static final int MAX_API_KEY;
-
+    PRODUCE(ApiMessageType.PRODUCE),
+    FETCH(ApiMessageType.FETCH),
+    LIST_OFFSETS(ApiMessageType.LIST_OFFSETS),
+    METADATA(ApiMessageType.METADATA),
+    LEADER_AND_ISR(ApiMessageType.LEADER_AND_ISR, true),
+    STOP_REPLICA(ApiMessageType.STOP_REPLICA, true),
+    UPDATE_METADATA(ApiMessageType.UPDATE_METADATA, true),
+    CONTROLLED_SHUTDOWN(ApiMessageType.CONTROLLED_SHUTDOWN, true),
+    OFFSET_COMMIT(ApiMessageType.OFFSET_COMMIT),
+    OFFSET_FETCH(ApiMessageType.OFFSET_FETCH),
+    FIND_COORDINATOR(ApiMessageType.FIND_COORDINATOR),
+    JOIN_GROUP(ApiMessageType.JOIN_GROUP),
+    HEARTBEAT(ApiMessageType.HEARTBEAT),
+    LEAVE_GROUP(ApiMessageType.LEAVE_GROUP),
+    SYNC_GROUP(ApiMessageType.SYNC_GROUP),
+    DESCRIBE_GROUPS(ApiMessageType.DESCRIBE_GROUPS),
+    LIST_GROUPS(ApiMessageType.LIST_GROUPS),
+    SASL_HANDSHAKE(ApiMessageType.SASL_HANDSHAKE),
+    API_VERSIONS(ApiMessageType.API_VERSIONS),
+    CREATE_TOPICS(ApiMessageType.CREATE_TOPICS, false, true),
+    DELETE_TOPICS(ApiMessageType.DELETE_TOPICS, false, true),
+    DELETE_RECORDS(ApiMessageType.DELETE_RECORDS),
+    INIT_PRODUCER_ID(ApiMessageType.INIT_PRODUCER_ID),
+    OFFSET_FOR_LEADER_EPOCH(ApiMessageType.OFFSET_FOR_LEADER_EPOCH),
+    ADD_PARTITIONS_TO_TXN(ApiMessageType.ADD_PARTITIONS_TO_TXN, false, 
RecordBatch.MAGIC_VALUE_V2, false),
+    ADD_OFFSETS_TO_TXN(ApiMessageType.ADD_OFFSETS_TO_TXN, false, 
RecordBatch.MAGIC_VALUE_V2, false),
+    END_TXN(ApiMessageType.END_TXN, false, RecordBatch.MAGIC_VALUE_V2, false),
+    WRITE_TXN_MARKERS(ApiMessageType.WRITE_TXN_MARKERS, true, 
RecordBatch.MAGIC_VALUE_V2, false),
+    TXN_OFFSET_COMMIT(ApiMessageType.TXN_OFFSET_COMMIT, false, 
RecordBatch.MAGIC_VALUE_V2, false),
+    DESCRIBE_ACLS(ApiMessageType.DESCRIBE_ACLS),
+    CREATE_ACLS(ApiMessageType.CREATE_ACLS, false, true),
+    DELETE_ACLS(ApiMessageType.DELETE_ACLS, false, true),
+    DESCRIBE_CONFIGS(ApiMessageType.DESCRIBE_CONFIGS),
+    ALTER_CONFIGS(ApiMessageType.ALTER_CONFIGS, false, true),
+    ALTER_REPLICA_LOG_DIRS(ApiMessageType.ALTER_REPLICA_LOG_DIRS),
+    DESCRIBE_LOG_DIRS(ApiMessageType.DESCRIBE_LOG_DIRS),
+    SASL_AUTHENTICATE(ApiMessageType.SASL_AUTHENTICATE),
+    CREATE_PARTITIONS(ApiMessageType.CREATE_PARTITIONS, false, true),
+    CREATE_DELEGATION_TOKEN(ApiMessageType.CREATE_DELEGATION_TOKEN, false, 
true),
+    RENEW_DELEGATION_TOKEN(ApiMessageType.RENEW_DELEGATION_TOKEN, false, true),
+    EXPIRE_DELEGATION_TOKEN(ApiMessageType.EXPIRE_DELEGATION_TOKEN, false, 
true),
+    DESCRIBE_DELEGATION_TOKEN(ApiMessageType.DESCRIBE_DELEGATION_TOKEN),
+    DELETE_GROUPS(ApiMessageType.DELETE_GROUPS),
+    ELECT_LEADERS(ApiMessageType.ELECT_LEADERS),
+    INCREMENTAL_ALTER_CONFIGS(ApiMessageType.INCREMENTAL_ALTER_CONFIGS, false, 
true),
+    
ALTER_PARTITION_REASSIGNMENTS(ApiMessageType.ALTER_PARTITION_REASSIGNMENTS, 
false, true),
+    LIST_PARTITION_REASSIGNMENTS(ApiMessageType.LIST_PARTITION_REASSIGNMENTS),
+    OFFSET_DELETE(ApiMessageType.OFFSET_DELETE),
+    DESCRIBE_CLIENT_QUOTAS(ApiMessageType.DESCRIBE_CLIENT_QUOTAS),
+    ALTER_CLIENT_QUOTAS(ApiMessageType.ALTER_CLIENT_QUOTAS, false, true),
+    
DESCRIBE_USER_SCRAM_CREDENTIALS(ApiMessageType.DESCRIBE_USER_SCRAM_CREDENTIALS),
+    ALTER_USER_SCRAM_CREDENTIALS(ApiMessageType.ALTER_USER_SCRAM_CREDENTIALS, 
false, true),
+    VOTE(ApiMessageType.VOTE, true, RecordBatch.MAGIC_VALUE_V0, false, false),
+    BEGIN_QUORUM_EPOCH(ApiMessageType.BEGIN_QUORUM_EPOCH, true, 
RecordBatch.MAGIC_VALUE_V0, false, false),
+    END_QUORUM_EPOCH(ApiMessageType.END_QUORUM_EPOCH, true, 
RecordBatch.MAGIC_VALUE_V0, false, false),
+    DESCRIBE_QUORUM(ApiMessageType.DESCRIBE_QUORUM, true, 
RecordBatch.MAGIC_VALUE_V0, false, false),
+    ALTER_ISR(ApiMessageType.ALTER_ISR, true),
+    UPDATE_FEATURES(ApiMessageType.UPDATE_FEATURES, false, true),
+    ENVELOPE(ApiMessageType.ENVELOPE, true, RecordBatch.MAGIC_VALUE_V0, false, 
false);
+
+    private static final Map<Integer, ApiKeys> ID_TO_TYPE = new HashMap<>();
     static {
-        int maxKey = -1;
-        for (ApiKeys key : ApiKeys.values())
-            maxKey = Math.max(maxKey, key.id);
-        ApiKeys[] idToType = new ApiKeys[maxKey + 1];
         for (ApiKeys key : ApiKeys.values())
-            idToType[key.id] = key;
-        ID_TO_TYPE = idToType;
-        MAX_API_KEY = maxKey;
+            ID_TO_TYPE.put((int) key.id, key);

Review comment:
       Does it need to check duplicate id?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to