From 678177ec2076ccb83e690b9330481d9eae2c37cd Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 2 Jan 2025 16:08:12 -0400 Subject: [PATCH] Simplify re-identification in `FlatFileSchemaResolver` Signed-off-by: Juan Cruz Viotti --- .../sourcemeta/jsontoolkit/jsonschema_resolver.h | 1 - src/jsonschema/resolver.cc | 15 ++++----------- .../jsonschema_flat_file_resolver_test.cc | 1 - 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/jsonschema/include/sourcemeta/jsontoolkit/jsonschema_resolver.h b/src/jsonschema/include/sourcemeta/jsontoolkit/jsonschema_resolver.h index 6bc3951f9..bd6dd9a8a 100644 --- a/src/jsonschema/include/sourcemeta/jsontoolkit/jsonschema_resolver.h +++ b/src/jsonschema/include/sourcemeta/jsontoolkit/jsonschema_resolver.h @@ -141,7 +141,6 @@ class SOURCEMETA_JSONTOOLKIT_JSONSCHEMA_EXPORT FlatFileSchemaResolver { struct Entry { const std::filesystem::path path; const std::optional default_dialect; - const std::optional default_id; }; private: diff --git a/src/jsonschema/resolver.cc b/src/jsonschema/resolver.cc index d19207ddb..59ce1d08d 100644 --- a/src/jsonschema/resolver.cc +++ b/src/jsonschema/resolver.cc @@ -95,8 +95,8 @@ auto FlatFileSchemaResolver::add( throw SchemaError(error.str()); } - const auto result{this->schemas.emplace( - identifier.value(), Entry{canonical, default_dialect, default_id})}; + const auto result{this->schemas.emplace(identifier.value(), + Entry{canonical, default_dialect})}; if (!result.second && result.first->second.path != canonical) { std::ostringstream error; error << "Cannot register the same identifier twice: " @@ -119,15 +119,8 @@ auto FlatFileSchemaResolver::operator()(std::string_view identifier) const schema.assign("$schema", JSON{result->second.default_dialect.value()}); } - const auto schema_identifier{sourcemeta::jsontoolkit::identify( - schema, *this, IdentificationStrategy::Strict, - result->second.default_dialect)}; - if (!schema_identifier.has_value() && - result->second.default_id.has_value()) { - sourcemeta::jsontoolkit::reidentify( - schema, result->second.default_id.value(), *this, - result->second.default_dialect); - } + sourcemeta::jsontoolkit::reidentify(schema, result->first, *this, + result->second.default_dialect); return schema; } diff --git a/test/jsonschema/jsonschema_flat_file_resolver_test.cc b/test/jsonschema/jsonschema_flat_file_resolver_test.cc index f303666d7..433a94bc4 100644 --- a/test/jsonschema/jsonschema_flat_file_resolver_test.cc +++ b/test/jsonschema/jsonschema_flat_file_resolver_test.cc @@ -168,5 +168,4 @@ TEST(JSONSchema_FlatFileSchemaResolver, iterators) { EXPECT_EQ(entries.size(), 1); EXPECT_EQ(entries.at(0).path, schema_path); EXPECT_FALSE(entries.at(0).default_dialect.has_value()); - EXPECT_FALSE(entries.at(0).default_id.has_value()); }