# HG changeset patch # User Sebastien Jodogne # Date 1720821822 -7200 # Node ID d851a54e49b727c1e1b15aef02c143b712a3db23 # Parent 476b1db521101593bd012f3dc99159aeaf56f616 removed "includeAllMetadata_" member from ResourceFinder diff -r 476b1db52110 -r d851a54e49b7 OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp --- a/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp Fri Jul 12 18:41:44 2024 +0200 +++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp Sat Jul 13 00:03:42 2024 +0200 @@ -150,23 +150,7 @@ else { const FindResponse::Resource& resource = response.GetResourceByIndex(0); - finder.Expand(target, resource, index, format); - - if (retrieveMetadata) - { - const std::map& metadata = resource.GetMetadata(level); - - Json::Value tmp; - - for (std::map::const_iterator - it = metadata.begin(); it != metadata.end(); ++it) - { - tmp[EnumerationToString(it->first)] = it->second; - } - - target["Metadata"] = tmp; - } - + finder.Expand(target, resource, index, format, retrieveMetadata); return true; } } @@ -312,7 +296,7 @@ } Json::Value answer; - finder.Execute(answer, context, OrthancRestApi::GetDicomFormat(call, DicomToJsonFormat_Human)); + finder.Execute(answer, context, OrthancRestApi::GetDicomFormat(call, DicomToJsonFormat_Human), false /* no "Metadata" field */); call.GetOutput().AnswerJson(answer); } else @@ -396,7 +380,7 @@ finder.SetOrthancId(resourceType, call.GetUriComponent("id", "")); Json::Value json; - if (finder.ExecuteOneResource(json, OrthancRestApi::GetContext(call), format)) + if (finder.ExecuteOneResource(json, OrthancRestApi::GetContext(call), format, false /* no "Metadata" field */)) { call.GetOutput().AnswerJson(json); } @@ -3497,7 +3481,7 @@ } Json::Value answer; - finder.Execute(answer, context, format); + finder.Execute(answer, context, format, false /* no "Metadata" field */); call.GetOutput().AnswerJson(answer); } else @@ -3668,7 +3652,7 @@ finder.AddRequestedTags(requestedTags); Json::Value answer; - finder.Execute(answer, context, format); + finder.Execute(answer, context, format, false /* no "Metadata" field */); call.GetOutput().AnswerJson(answer); } else diff -r 476b1db52110 -r d851a54e49b7 OrthancServer/Sources/OrthancWebDav.cpp --- a/OrthancServer/Sources/OrthancWebDav.cpp Fri Jul 12 18:41:44 2024 +0200 +++ b/OrthancServer/Sources/OrthancWebDav.cpp Sat Jul 13 00:03:42 2024 +0200 @@ -1670,7 +1670,7 @@ finder.SetDatabaseLookup(query); Json::Value expanded; - finder.Execute(expanded, context, DicomToJsonFormat_Human); + finder.Execute(expanded, context, DicomToJsonFormat_Human, false /* don't add "Metadata" */); if (expanded.size() != 1) { diff -r 476b1db52110 -r d851a54e49b7 OrthancServer/Sources/ResourceFinder.cpp --- a/OrthancServer/Sources/ResourceFinder.cpp Fri Jul 12 18:41:44 2024 +0200 +++ b/OrthancServer/Sources/ResourceFinder.cpp Sat Jul 13 00:03:42 2024 +0200 @@ -191,13 +191,19 @@ void ResourceFinder::Expand(Json::Value& target, const FindResponse::Resource& resource, ServerIndex& index, - DicomToJsonFormat format) const + DicomToJsonFormat format, + bool includeAllMetadata) const { /** * This method closely follows "SerializeExpandedResource()" in * "ServerContext.cpp" from Orthanc 1.12.4. **/ + if (!expand_) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + if (resource.GetLevel() != request_.GetLevel()) { throw OrthancException(ErrorCode_InternalError); @@ -407,7 +413,7 @@ target["Labels"] = labels; } - if (includeAllMetadata_) // new in Orthanc 1.12.4 + if (includeAllMetadata) // new in Orthanc 1.12.4 { const std::map& m = resource.GetMetadata(resource.GetLevel()); @@ -483,8 +489,7 @@ limitsCount_(0), expand_(expand), allowStorageAccess_(true), - hasRequestedTags_(false), - includeAllMetadata_(false) + hasRequestedTags_(false) { UpdateRequestLimits(); @@ -1003,7 +1008,8 @@ void ResourceFinder::Execute(Json::Value& target, ServerContext& context, - DicomToJsonFormat format) const + DicomToJsonFormat format, + bool includeAllMetadata) const { class Visitor : public IVisitor { @@ -1013,18 +1019,21 @@ Json::Value& target_; DicomToJsonFormat format_; bool hasRequestedTags_; + bool includeAllMetadata_; public: Visitor(const ResourceFinder& that, ServerIndex& index, Json::Value& target, DicomToJsonFormat format, - bool hasRequestedTags) : + bool hasRequestedTags, + bool includeAllMetadata) : that_(that), index_(index), target_(target), format_(format), - hasRequestedTags_(hasRequestedTags) + hasRequestedTags_(hasRequestedTags), + includeAllMetadata_(includeAllMetadata) { } @@ -1034,7 +1043,7 @@ if (that_.expand_) { Json::Value item; - that_.Expand(item, resource, index_, format_); + that_.Expand(item, resource, index_, format_, includeAllMetadata_); if (hasRequestedTags_) { @@ -1058,17 +1067,18 @@ target = Json::arrayValue; - Visitor visitor(*this, context.GetIndex(), target, format, hasRequestedTags_); + Visitor visitor(*this, context.GetIndex(), target, format, hasRequestedTags_, includeAllMetadata); Execute(visitor, context); } bool ResourceFinder::ExecuteOneResource(Json::Value& target, ServerContext& context, - DicomToJsonFormat format) const + DicomToJsonFormat format, + bool includeAllMetadata) const { Json::Value answer; - Execute(answer, context, format); + Execute(answer, context, format, includeAllMetadata); if (answer.type() != Json::arrayValue) { diff -r 476b1db52110 -r d851a54e49b7 OrthancServer/Sources/ResourceFinder.h --- a/OrthancServer/Sources/ResourceFinder.h Fri Jul 12 18:41:44 2024 +0200 +++ b/OrthancServer/Sources/ResourceFinder.h Sat Jul 13 00:03:42 2024 +0200 @@ -74,7 +74,6 @@ std::set requestedInstanceTags_; std::set requestedTagsFromFileStorage_; std::set requestedComputedTags_; - bool includeAllMetadata_; // Same as: ExpandResourceFlags_IncludeAllMetadata bool IsRequestedComputedTag(const DicomTag& tag) const { @@ -126,11 +125,6 @@ void SetDatabaseLookup(const DatabaseLookup& lookup); - void SetIncludeAllMetadata(bool include) - { - includeAllMetadata_ = include; - } - void AddRequestedTag(const DicomTag& tag); void AddRequestedTags(const std::set& tags); @@ -165,10 +159,12 @@ request_.SetRetrieveAttachments(retrieve); } + // NB: "index" is only used in this method to fill the "IsStable" information void Expand(Json::Value& target, const FindResponse::Resource& resource, ServerIndex& index, - DicomToJsonFormat format) const; + DicomToJsonFormat format, + bool includeAllMetadata /* Same as: ExpandResourceFlags_IncludeAllMetadata */) const; void Execute(FindResponse& target, ServerIndex& index) const; @@ -178,10 +174,12 @@ void Execute(Json::Value& target, ServerContext& context, - DicomToJsonFormat format) const; + DicomToJsonFormat format, + bool includeAllMetadata) const; bool ExecuteOneResource(Json::Value& target, ServerContext& context, - DicomToJsonFormat format) const; + DicomToJsonFormat format, + bool includeAllMetadata) const; }; }