public UUID getORRegisterSchemaVersionId()

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;
    }