* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "json_exporter.h"
#include <meta/api/util.h>
#include "backend/json_output.h"
META_BEGIN_NAMESPACE()
namespace Serialization {
ReturnError JsonExporter::Export(CORE_NS::IFile& output, const IObject::ConstPtr& object, ExportOptions options)
{
auto tree = Export(object, options);
if (!tree) {
return GenericError::FAIL;
}
JsonOutput backend;
auto json = backend.Process(tree);
if (json.empty()) {
return GenericError::FAIL;
}
output.Write(json.c_str(), json.size());
return GenericError::SUCCESS;
}
ISerNode::Ptr JsonExporter::Export(const IObject::ConstPtr& object, ExportOptions options)
{
return exp_.Export(object, options);
}
void JsonExporter::SetInstanceIdMapping(BASE_NS::unordered_map<InstanceId, InstanceId> map)
{
exp_.SetInstanceIdMapping(BASE_NS::move(map));
}
void JsonExporter::SetResourceManager(CORE_NS::IResourceManager::Ptr p)
{
exp_.SetResourceManager(BASE_NS::move(p));
}
void JsonExporter::SetUserContext(IObject::Ptr p)
{
exp_.SetUserContext(BASE_NS::move(p));
}
void JsonExporter::SetMetadata(SerMetadata m)
{
exp_.SetMetadata(BASE_NS::move(m));
}
}
META_END_NAMESPACE()