/** * Construct a new builder which allows any supported version */ public Builder(ApiKeys apiKey) { this(apiKey, apiKey.oldestVersion(), apiKey.latestVersion()); }
public boolean isVersionSupported(short apiVersion) { return apiVersion >= oldestVersion() && apiVersion <= latestVersion(); }
public ApiVersion(ApiKeys apiKey) { this(apiKey.id, apiKey.oldestVersion(), apiKey.latestVersion()); }
/** * Return the most recent version supported by both the node and the local software. */ public short latestUsableVersion(ApiKeys apiKey) { return latestUsableVersion(apiKey, apiKey.oldestVersion(), apiKey.latestVersion()); }
private String apiVersionToText(ApiVersion apiVersion) { StringBuilder bld = new StringBuilder(); ApiKeys apiKey = null; if (ApiKeys.hasId(apiVersion.apiKey)) { apiKey = ApiKeys.forId(apiVersion.apiKey); bld.append(apiKey.name).append("(").append(apiKey.id).append("): "); } else { bld.append("UNKNOWN(").append(apiVersion.apiKey).append("): "); } if (apiVersion.minVersion == apiVersion.maxVersion) { bld.append(apiVersion.minVersion); } else { bld.append(apiVersion.minVersion).append(" to ").append(apiVersion.maxVersion); } if (apiKey != null) { ApiVersion supportedVersion = supportedVersions.get(apiKey); if (apiKey.latestVersion() < supportedVersion.minVersion) { bld.append(" [unusable: node too new]"); } else if (supportedVersion.maxVersion < apiKey.oldestVersion()) { bld.append(" [unusable: node too old]"); } else { short latestUsableVersion = Utils.min(apiKey.latestVersion(), supportedVersion.maxVersion); bld.append(" [usable: ").append(latestUsableVersion).append("]"); } } return bld.toString(); }
public static Builder forConsumer(int maxWait, int minBytes, Map<TopicPartition, PartitionData> fetchData) { return new Builder(ApiKeys.FETCH.oldestVersion(), ApiKeys.FETCH.latestVersion(), CONSUMER_REPLICA_ID, maxWait, minBytes, fetchData); }
bld.append(apiKey.name).append("("). append(apiKey.id).append("): "); if (apiKey.oldestVersion() == apiKey.latestVersion()) { bld.append(apiKey.oldestVersion()); } else { bld.append(apiKey.oldestVersion()). append(" to "). append(apiKey.latestVersion());
assertEquals(ApiKeys.SASL_HANDSHAKE.oldestVersion(), versionsResponse.apiVersion(ApiKeys.SASL_HANDSHAKE.id).minVersion); assertEquals(ApiKeys.SASL_HANDSHAKE.latestVersion(), versionsResponse.apiVersion(ApiKeys.SASL_HANDSHAKE.id).maxVersion); assertEquals(ApiKeys.SASL_AUTHENTICATE.oldestVersion(), versionsResponse.apiVersion(ApiKeys.SASL_AUTHENTICATE.id).minVersion); assertEquals(ApiKeys.SASL_AUTHENTICATE.latestVersion(), versionsResponse.apiVersion(ApiKeys.SASL_AUTHENTICATE.id).maxVersion);
@Test public void shouldHaveCorrectDefaultApiVersionsResponse() { Collection<ApiVersionsResponse.ApiVersion> apiVersions = ApiVersionsResponse.defaultApiVersionsResponse().apiVersions(); assertEquals("API versions for all API keys must be maintained.", apiVersions.size(), ApiKeys.values().length); for (ApiKeys key : ApiKeys.values()) { ApiVersionsResponse.ApiVersion version = ApiVersionsResponse.defaultApiVersionsResponse().apiVersion(key.id); assertNotNull("Could not find ApiVersion for API " + key.name, version); assertEquals("Incorrect min version for Api " + key.name, version.minVersion, key.oldestVersion()); assertEquals("Incorrect max version for Api " + key.name, version.maxVersion, key.latestVersion()); // Check if versions less than min version are indeed set as null, i.e., deprecated. for (int i = 0; i < version.minVersion; ++i) { assertNull("Request version " + i + " for API " + version.apiKey + " must be null", key.requestSchemas[i]); assertNull("Response version " + i + " for API " + version.apiKey + " must be null", key.responseSchemas[i]); } // Check if versions between min and max versions are non null, i.e., valid. for (int i = version.minVersion; i <= version.maxVersion; ++i) { assertNotNull("Request version " + i + " for API " + version.apiKey + " must not be null", key.requestSchemas[i]); assertNotNull("Response version " + i + " for API " + version.apiKey + " must not be null", key.responseSchemas[i]); } } }
public ApiVersion(ApiKeys apiKey) { this(apiKey.id, apiKey.oldestVersion(), apiKey.latestVersion()); }