merge "JSON-27" into "default" branch

ENGINE-9
Roker 6 years ago
commit 7451b3f01b

@ -2,6 +2,7 @@
#define JSON_ADAPTER_CONTEXT_HH
#include <string>
#include "json_spirit/json_spirit_value.h"
class Context
{
@ -9,6 +10,7 @@ public:
virtual ~Context() = default;
virtual bool verify_security_token(const std::string& token) const = 0;
virtual void augment(json_spirit::Value& value) = 0;
};
#endif // JSON_ADAPTER_CONTEXT_HH

@ -388,6 +388,9 @@ public:
out_params.reserve( 1 + Helper::nr_of_output_params );
js::Value ret = Helper::call(fn, context, out_params, *p_params);
context->augment(ret); // used e.g. add some debug infos to the status return value
out_params.push_back( ret );
return out_params;
}

@ -449,7 +449,7 @@ std::string getSessions()
template<>
PEP_SESSION from_json(const js::Value& v)
PEP_SESSION from_json(const js::Value& /* not used */)
{
const auto id = std::this_thread::get_id();
const auto q = session_registry.find( id );
@ -866,6 +866,15 @@ bool JsonAdapter::verify_security_token(const std::string& s) const
}
void JsonAdapter::augment(json_spirit::Value& value)
{
js::Object o = value.get_obj();
PEP_SESSION session = from_json<PEP_SESSION>(value);
auto errorstack = get_errorstack(session);
o.emplace_back( "errorstack", to_json(errorstack) );
}
void JsonAdapter::registerEventListener(const std::string& address, unsigned port, const std::string& securityContext)
{
const auto key = std::make_pair(address, port);

@ -45,6 +45,8 @@ public:
// returns 'true' if 's' is the security token created by the function above.
virtual bool verify_security_token(const std::string& s) const override;
virtual void augment(json_spirit::Value& value) override;
static
unsigned apiVersion();
@ -65,6 +67,7 @@ public:
// returns the associated log stream (either std::cerr or nulllogger)
std::ostream& Log() const;
private:
struct Internal;

@ -336,6 +336,12 @@ stringlist_t* from_json<stringlist_t*>(const js::Value& v)
return sl;
}
template<>
const stringlist_t* from_json<const stringlist_t*>(const js::Value& v)
{
return const_cast<const stringlist_t*>( from_json<stringlist_t*>(v) );
}
template<>
identity_list* from_json<identity_list*>(const js::Value& v)
@ -493,9 +499,9 @@ const tm* from_json<const tm*>(const js::Value& v)
template<>
js::Value to_json<stringlist_t*>(stringlist_t* const& osl)
js::Value to_json<const stringlist_t*>(const stringlist_t* const& osl)
{
stringlist_t* sl = osl;
const stringlist_t* sl = osl;
js::Array a;
while(sl)
@ -511,6 +517,11 @@ js::Value to_json<stringlist_t*>(stringlist_t* const& osl)
return js::Value( std::move(a) );
}
template<>
js::Value to_json<stringlist_t*>(stringlist_t* const& osl)
{
return to_json<const stringlist_t*>(osl);
}
template<>
js::Value to_json<const pEp_identity*>(const pEp_identity* const& id)

Loading…
Cancel
Save