Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
23e6456
refactor: encapsulate json schema validator behind interface and add …
JoshuaSBrown Feb 19, 2026
b6500f3
feat: first commit for creating schema factory
JoshuaSBrown Mar 12, 2026
c7b5835
fix: remove '.cpp' from unit test core file name.
JoshuaSBrown Mar 12, 2026
b209688
Merge branch 'devel' into 1855-DAPS-add-schema-factory
JoshuaSBrown Mar 12, 2026
8eacc4e
Merge branch 'devel' into 1855-DAPS-add-schema-factory
JoshuaSBrown Mar 12, 2026
1cc88b3
fix: mock_core server build
JoshuaSBrown Mar 12, 2026
8a4c6d2
Merge branch '1854-mock-core-fix' into 1855-DAPS-add-schema-factory
JoshuaSBrown Mar 12, 2026
bf81014
fix: schema factory tests were capturing the wrong error type.
JoshuaSBrown Mar 16, 2026
1622e58
refactor: Move schema logic from client into separate client handler.
JoshuaSBrown Mar 17, 2026
f86fd6a
refactor: json error class consolidated.
JoshuaSBrown Mar 18, 2026
e9fd517
feat: add api_key to config for schema client config.
JoshuaSBrown Mar 19, 2026
a1b8c7c
Merge branch 'devel' into 1855-DAPS-add-schema-factory
JoshuaSBrown Mar 19, 2026
36fc6ce
merge: address merge conflict.
JoshuaSBrown Mar 19, 2026
0dc78af
refactor: compilation errors addressed and tests updated.
JoshuaSBrown Mar 23, 2026
ad2e92a
feat: common, proto3, add support for schema_type, metadata_format, s…
JoshuaSBrown Mar 19, 2026
96f5d0d
refactor: simplify proto message attributes.
JoshuaSBrown Mar 23, 2026
2242da5
refactor: fix missing LocalJsonErrorHandler header file.
JoshuaSBrown Mar 23, 2026
6546417
refactor: move remaining schema based logic to schema handler.
JoshuaSBrown Mar 23, 2026
4387dd8
Merge branch '1893-DAPS-proto3-add-missing-fields' into 1830-DAPS-cor…
JoshuaSBrown Mar 23, 2026
9d1a457
refactor: first attempt to integrate validator and storage abstractio…
JoshuaSBrown Mar 23, 2026
23c0d75
fix: apply corrections to schema create methods logic.
JoshuaSBrown Mar 23, 2026
67e2a85
fix: schema client handler to process revision method.
JoshuaSBrown Mar 23, 2026
2c882d7
refactor: support schema update using storage and validation abstract…
JoshuaSBrown Mar 23, 2026
3a9b44d
refactor: update metadata validation logic into schema handler.
JoshuaSBrown Mar 23, 2026
349f8ca
fix: success compiling with refactored code.
JoshuaSBrown Mar 23, 2026
420eec3
update: set defaults for schema storage and validation.
JoshuaSBrown Mar 23, 2026
3d904b0
refactor: add rollback to failed schema update call.
JoshuaSBrown Mar 24, 2026
9c0e868
Merge branch 'devel' into 1830-DAPS-core-foxx-schema-integration_2
JoshuaSBrown Mar 24, 2026
dc4664a
Merge branch '1830-DAPS-core-foxx-schema-integration_2' into 1830-DAP…
JoshuaSBrown Mar 24, 2026
5292b7a
feat: get schema api client into compliance with API spec file.
JoshuaSBrown Mar 24, 2026
b768cbc
fix: fix bug in string parsing.
JoshuaSBrown Mar 24, 2026
a0c98a9
Merge branch '1902-DAPS-core-update-test-api-schema-client' into 1830…
JoshuaSBrown Mar 24, 2026
5e1cd1c
fix: broken PR
JoshuaSBrown Mar 24, 2026
47f5aa4
Merge pull request #1904 from ORNL/1830-1902-merge
JoshuaSBrown Mar 25, 2026
b01df98
Merge branch 'devel' into 1830-DAPS-core-foxx-schema-integration_3
JoshuaSBrown Mar 25, 2026
e57647c
fix: remove merge conflict code.
JoshuaSBrown Mar 25, 2026
2d53484
Merge branch 'devel' into 1830-DAPS-core-foxx-schema-integration_3
JoshuaSBrown Mar 25, 2026
b42bf63
fix: register linkml storage engine with schema hanlder
JoshuaSBrown Mar 25, 2026
9bf3075
refactor: adjust factory registration to include linkml validator and…
JoshuaSBrown Mar 25, 2026
e54df30
merge: address merge conflict.
JoshuaSBrown Mar 27, 2026
c05502a
Merge branch 'devel' into 1905-DAPS-feature-core-add-linkml-in-schema…
JoshuaSBrown Mar 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions core/server/Config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

// Core local private includes
#include "AuthenticationManager.hpp"
#include "SchemaAPIConfig.hpp"

// DataFed Common public includes
#include "common/DynaLog.hpp"
Expand All @@ -16,6 +17,7 @@
#include <mutex>
#include <stdint.h>
#include <string>
#include <unordered_map>

namespace SDMS {
namespace Core {
Expand Down Expand Up @@ -79,6 +81,8 @@ class Config {
uint32_t metrics_purge_period;
uint32_t metrics_purge_age;

std::unordered_map<std::string, SchemaAPIConfig> schemas;

// MsgComm::SecurityContext sec_ctx;
std::unique_ptr<ICredentials> sec_ctx;

Expand Down
18 changes: 16 additions & 2 deletions core/server/client_handlers/SchemaHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
#include "LocalJsonErrorHandler.hpp"
#include "common/TraceException.hpp"
#include "schema_storage/ArangoSchemaStorage.hpp"
#include "schema_storage/ExternalSchemaStorage.hpp"
#include "schema_validators/JsonSchemaValidator.hpp"
#include "schema_validators/ExternalSchemaValidator.hpp"
#include "Config.hpp"

// Standard includes
#include <functional>
Expand All @@ -13,8 +16,19 @@ using namespace std;
namespace SDMS {
namespace Core {

SchemaHandler::SchemaHandler(DatabaseAPI &a_db_client)
SchemaHandler::SchemaHandler(DatabaseAPI &a_db_client)
: m_db_client(a_db_client) {

if ( Config::getInstance().schemas.count("linkml") ){
SchemaAPIConfig linkml_config = Config::getInstance().schemas.at("linkml");
auto schema_api_client_storage = make_unique<SchemaAPIClient>(linkml_config);
auto linkml_storage = std::make_shared<ExternalSchemaStorage>(std::move(schema_api_client_storage));
m_schema_factory.registerStorage("linkml", std::move(linkml_storage));
auto schema_api_client_validator = make_unique<SchemaAPIClient>(linkml_config);
auto linkml_schema_validator = std::make_shared<ExternalSchemaValidator>(std::move(schema_api_client_validator), "linkml");
m_schema_factory.registerValidator("linkml",
std::move(linkml_schema_validator));
}
// Assumes that we have already placed the schema in the database, arango
// storage is a shell to be consistent with the interface.
auto arango_storage = std::make_shared<ArangoSchemaStorage>();
Expand All @@ -32,7 +46,7 @@ SchemaHandler::SchemaHandler(DatabaseAPI &a_db_client)
m_schema_factory.registerValidator("json-schema",
std::move(json_schema_validator));
m_schema_factory.setDefaultSchemaType("json-schema");
}
}

// ── Schema Definition Handlers ──────────────────────────────────────────────

Expand Down
1 change: 0 additions & 1 deletion core/server/schema_storage/ExternalSchemaStorage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ class ExternalSchemaStorage : public ISchemaStorage {
*/
explicit ExternalSchemaStorage(std::unique_ptr<SchemaAPIClient> a_client);
~ExternalSchemaStorage() override = default;
// Non-copyable (owns unique_ptr)
ExternalSchemaStorage(const ExternalSchemaStorage &) = delete;
ExternalSchemaStorage &operator=(const ExternalSchemaStorage &) = delete;
std::string storeContent(const std::string &a_id,
Expand Down
Loading