[ https://issues.apache.org/jira/browse/MESOS-3405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14988044#comment-14988044 ]
Kapil Arya commented on MESOS-3405: ----------------------------------- Is it possible to have specialization such as {{JSON::Protobuf(const Labels& labels)}} and {{JSON::Protobuf(const Parameters& parameters)}} to simply some of the stuff in {{src/http.cpp}}? For a bunch of messages, we have to explicitly model the fields because we want to render Labels as: {code} { "labels": [ {"key": "k", "value": "v"}, ...] } {code} as opposed to {code} { "labels": { "labels" : [ {"key": "k", "value": "v"}, ...] } } {code} > Add JSON::protobuf for google::protobuf::RepeatedPtrField. > ---------------------------------------------------------- > > Key: MESOS-3405 > URL: https://issues.apache.org/jira/browse/MESOS-3405 > Project: Mesos > Issue Type: Task > Components: stout > Reporter: Michael Park > Assignee: Klaus Ma > > Currently, {{stout/protobuf.hpp}} provides a {{JSON::Protobuf}} utility which > converts a {{google::protobuf::Message}} into a {{JSON::Object}}. > We should add the support for {{google::protobuf::RepeatedPtrField<T>}} by > introducing overloaded functions. > {code} > namespace JSON { > Object protobuf(const google::protobuf::Message& message) > { > Object object; > /* Move the body of JSON::Protobuf constructor here. */ > return object; > } > template <typename T> > Array protobuf(const google::protobuf::RepeatedPtrField<T>& repeated) > { > static_assert(std::is_convertible<T*, google::protobuf::Message*>::value, > "T must be a google::protobuf::Message"); > JSON::Array array; > array.values.reserve(repeated.size()); > foreach (const T& elem, repeated) { > array.values.push_back(JSON::Protobuf(elem)); > } > return array; > } > } > {code} > The new {{RepeatedPtrField}} version can be used in at least the following > places: > * {{src/common/http.cpp}} > * {{src/master/http.cpp}} > * {{src/slave/containerizer/mesos/containerizer.cpp}} > * {{src/tests/reservation_endpoints_tests.cpp}} > * {{src/tests/resources_tests.cpp}}: {{ResourcesTest.ParsingFromJSON}} -- This message was sent by Atlassian JIRA (v6.3.4#6332)