diff options
Diffstat (limited to 'src/core/resource/ResourceManager.cpp')
-rw-r--r-- | src/core/resource/ResourceManager.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/core/resource/ResourceManager.cpp b/src/core/resource/ResourceManager.cpp index 2484cb2..1d32a4d 100644 --- a/src/core/resource/ResourceManager.cpp +++ b/src/core/resource/ResourceManager.cpp @@ -122,8 +122,12 @@ NodeVector<Node> ResourceManager::parse( innerScope.checkUnwound(logger); innerScope.performDeferredResolution(logger); - // Fetch the nodes that were parsed by this parser instance + // Fetch the nodes that were parsed by this parser instance and + // validate them parsedNodes = innerScope.getTopLevelNodes(); + for (auto parsedNode : parsedNodes) { + parsedNode->validate(logger); + } // Make sure the number of elements is exactly one -- we can // only store one element per top-level node. @@ -184,13 +188,18 @@ NodeVector<Node> ResourceManager::parse( return parsedNodes; } -NodeVector<Node> ResourceManager::import(ParserContext &ctx, - const std::string &path, - const std::string &mimetype, - const std::string &rel, - const RttiSet &supportedTypes) +Rooted<Node> ResourceManager::import(ParserContext &ctx, + const std::string &path, + const std::string &mimetype, + const std::string &rel, + const RttiSet &supportedTypes) { - return parse(ctx, path, mimetype, rel, supportedTypes, ParseMode::IMPORT); + NodeVector<Node> res = + parse(ctx, path, mimetype, rel, supportedTypes, ParseMode::IMPORT); + if (res.size() == 1U) { + return res[0]; + } + return nullptr; } NodeVector<Node> ResourceManager::include(ParserContext &ctx, |