use of io.confluent.kafkarest.entities.RegisteredSchema in project kafka-rest by confluentinc.
the class SchemaManagerImplTest method getSchema_avro_schemaId_subject.
@Test
public void getSchema_avro_schemaId_subject() throws Exception {
String subject = "my-subject";
ParsedSchema schema = new AvroSchema("{\"type\": \"int\"}");
int schemaId = schemaRegistryClient.register(subject, schema);
int schemaVersion = schemaRegistryClient.getVersion(subject, schema);
RegisteredSchema actual = schemaManager.getSchema(TOPIC_NAME, /* format= */
Optional.empty(), /* subject= */
Optional.of(subject), /* subjectNameStrategy= */
Optional.empty(), /* schemaId= */
Optional.of(schemaId), /* schemaVersion= */
Optional.empty(), /* rawSchema= */
Optional.empty(), /* isKey= */
true);
assertEquals(RegisteredSchema.create(subject, schemaId, schemaVersion, schema), actual);
}
use of io.confluent.kafkarest.entities.RegisteredSchema in project kafka-rest by confluentinc.
the class SchemaManagerImplTest method getSchema_avro_schemaId_subjectNameStrategy.
@Test
public void getSchema_avro_schemaId_subjectNameStrategy() throws Exception {
ParsedSchema schema = new AvroSchema("{\"type\": \"int\"}");
SubjectNameStrategy strategy = new MySubjectNameStrategy();
String subject = strategy.subjectName(TOPIC_NAME, /* isKey= */
true, /* schema= */
null);
int schemaId = schemaRegistryClient.register(subject, schema);
int schemaVersion = schemaRegistryClient.getVersion(subject, schema);
RegisteredSchema actual = schemaManager.getSchema(TOPIC_NAME, /* format= */
Optional.empty(), /* subject= */
Optional.empty(), /* subjectNameStrategy= */
Optional.of(strategy), /* schemaId= */
Optional.of(schemaId), /* schemaVersion= */
Optional.empty(), /* rawSchema= */
Optional.empty(), /* isKey= */
true);
assertEquals(RegisteredSchema.create(subject, schemaId, schemaVersion, schema), actual);
}
use of io.confluent.kafkarest.entities.RegisteredSchema in project kafka-rest by confluentinc.
the class SchemaManagerImplTest method getSchema_avro_rawSchema_subject.
@Test
public void getSchema_avro_rawSchema_subject() throws Exception {
String subject = "my-subject";
RegisteredSchema actual = schemaManager.getSchema(TOPIC_NAME, /* format= */
Optional.of(EmbeddedFormat.AVRO), /* subject= */
Optional.of(subject), /* subjectNameStrategy= */
Optional.empty(), /* schemaId= */
Optional.empty(), /* schemaVersion= */
Optional.empty(), /* rawSchema= */
Optional.of("{\"type\": \"int\"}"), /* isKey= */
true);
ParsedSchema schema = schemaRegistryClient.getSchemaById(actual.getSchemaId());
int schemaId = schemaRegistryClient.getId(subject, schema);
int schemaVersion = schemaRegistryClient.getVersion(subject, schema);
assertEquals(RegisteredSchema.create(subject, schemaId, schemaVersion, schema), actual);
}
use of io.confluent.kafkarest.entities.RegisteredSchema in project kafka-rest by confluentinc.
the class SchemaManagerImplTest method getSchema_protobuf_rawSchema.
@Test
public void getSchema_protobuf_rawSchema() throws Exception {
RegisteredSchema actual = schemaManager.getSchema(TOPIC_NAME, /* format= */
Optional.of(EmbeddedFormat.PROTOBUF), /* subject= */
Optional.empty(), /* subjectNameStrategy= */
Optional.empty(), /* schemaId= */
Optional.empty(), /* schemaVersion= */
Optional.empty(), /* rawSchema= */
Optional.of("syntax = \"proto3\"; message MyKey { string foo = 1; }"), /* isKey= */
true);
ParsedSchema schema = schemaRegistryClient.getSchemaById(actual.getSchemaId());
int schemaId = schemaRegistryClient.getId(KEY_SUBJECT, schema);
int schemaVersion = schemaRegistryClient.getVersion(KEY_SUBJECT, schema);
assertEquals(RegisteredSchema.create(KEY_SUBJECT, schemaId, schemaVersion, schema), actual);
}
use of io.confluent.kafkarest.entities.RegisteredSchema in project kafka-rest by confluentinc.
the class SchemaManagerImpl method getSchemaFromSchemaVersion.
private RegisteredSchema getSchemaFromSchemaVersion(String topicName, Optional<String> subject, Optional<SubjectNameStrategy> subjectNameStrategy, int schemaVersion, boolean isKey) {
String actualSubject = subject.orElse(getSchemaSubjectUnsafe(topicName, isKey, subjectNameStrategy));
Schema schema;
try {
schema = schemaRegistryClient.getByVersion(actualSubject, schemaVersion, /* lookupDeletedSchema= */
false);
} catch (RuntimeException e) {
throw new BadRequestException(String.format("Schema does not exist for subject: %s, version: %s", actualSubject, schemaVersion), e);
}
SchemaProvider schemaProvider;
try {
schemaProvider = EmbeddedFormat.forSchemaType(schema.getSchemaType()).getSchemaProvider();
} catch (UnsupportedOperationException e) {
throw new BadRequestException(String.format("Schema version not supported for %s", schema.getSchemaType()), e);
}
ParsedSchema parsedSchema;
try {
parsedSchema = schemaProvider.parseSchema(schema.getSchema(), schema.getReferences(), /* isNew= */
false).orElseThrow(() -> Errors.invalidSchemaException(String.format("Error when fetching schema by version. subject = %s, version = %d", actualSubject, schemaVersion)));
} catch (SchemaParseException e) {
throw new BadRequestException(String.format("Error parsing schema for %s", schema.getSchemaType()), e);
}
return RegisteredSchema.create(schema.getSubject(), schema.getId(), schemaVersion, parsedSchema);
}
Aggregations