in common/src/main/java/com/amazonaws/services/schemaregistry/common/SchemaByDefinitionFetcher.java [65:104]
public UUID getORRegisterSchemaVersionId(
@NonNull String schemaDefinition,
@NonNull String schemaName,
@NonNull String dataFormat,
@NonNull Map<String, String> metadata) throws AWSSchemaRegistryException {
UUID schemaVersionId;
final Schema schema = new Schema(schemaDefinition, dataFormat, schemaName);
try {
return schemaDefinitionToVersionCache.get(schema);
} catch (Exception ex) {
Throwable schemaRegistryException = ex.getCause();
String exceptionCauseMessage = schemaRegistryException.getCause().getMessage();
if (exceptionCauseMessage.contains(AWSSchemaRegistryConstants.SCHEMA_VERSION_NOT_FOUND_MSG)) {
if (!glueSchemaRegistryConfiguration.isSchemaAutoRegistrationEnabled()) {
throw new AWSSchemaRegistryException(AWSSchemaRegistryConstants.AUTO_REGISTRATION_IS_DISABLED_MSG,
schemaRegistryException);
}
schemaVersionId =
awsSchemaRegistryClient.registerSchemaVersion(schemaDefinition, schemaName, dataFormat, metadata);
} else if (exceptionCauseMessage.contains(AWSSchemaRegistryConstants.SCHEMA_NOT_FOUND_MSG)) {
if (!glueSchemaRegistryConfiguration.isSchemaAutoRegistrationEnabled()) {
throw new AWSSchemaRegistryException(AWSSchemaRegistryConstants.AUTO_REGISTRATION_IS_DISABLED_MSG,
schemaRegistryException);
}
schemaVersionId =
awsSchemaRegistryClient.createSchema(schemaName, dataFormat, schemaDefinition, metadata);
} else {
String msg =
String.format(
"Exception occurred while fetching or registering schema definition = %s, schema name = %s ",
schemaDefinition, schemaName);
throw new AWSSchemaRegistryException(msg, schemaRegistryException);
}
schemaDefinitionToVersionCache.put(schema, schemaVersionId);
}
return schemaVersionId;
}