io.streamnative.pulsar.handlers.kop.schemaregistry.providers.SchemaProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulsar-kafka-schema-registry Show documentation
Show all versions of pulsar-kafka-schema-registry Show documentation
Kafka Compatible Schema Registry
/**
* Copyright (c) 2019 - 2024 StreamNative, Inc.. All Rights Reserved.
*/
/**
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.streamnative.pulsar.handlers.kop.schemaregistry.providers;
import io.streamnative.pulsar.handlers.kop.schemaregistry.model.ParsedSchema;
import io.streamnative.pulsar.handlers.kop.schemaregistry.model.Schema;
import io.streamnative.pulsar.handlers.kop.schemaregistry.model.rest.SchemaReference;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
* A factory for parsed schemas.
*
*/
public interface SchemaProvider {
String SCHEMA_VERSION_FETCHER_CONFIG = "schemaVersionFetcher";
default void configure(Map configs) {
}
/**
* Returns the schema type.
*
* @return the schema type
*/
String schemaType();
/**
* Parses a string representing a schema.
*
* @param schema the schema
* @param isNew whether the schema is new
* @param normalize whether to normalize the schema
* @return a parsed schema or throw an error
*/
ParsedSchema parseSchemaOrElseThrow(Schema schema, boolean isNew, boolean normalize);
/**
* Parses a string representing a schema.
*
* @param schemaString the schema
* @param references a list of schema references
* @param isNew whether the schema is new
* @param normalize whether to normalize the schema
* @return an optional parsed schema
*/
default Optional parseSchema(String schemaString,
List references,
boolean isNew,
boolean normalize) {
try {
return Optional.of(parseSchemaOrElseThrow(
Schema.builder()
.schema(schemaString)
.type(schemaType())
.references(references)
.build(), isNew, normalize));
} catch (Exception e) {
return Optional.empty();
}
}
}