Use ctx.bytes rather than getting the InputStream directly so that the contents of the InputStream are cached in the Request object. Right now if a Decorator tries to access the request body via the InputStream the InputStream will then be empty for the postJson decorator. Therefore, postJson should use the bytes field of Request so if an upstream Decorator also accesses the bytes field the value will be cached.
Use ctx.bytes rather than getting the InputStream directly so that the contents of the InputStream are cached in the Request object. Right now if a Decorator tries to access the request body via the InputStream the InputStream will then be empty for the postJson decorator. Therefore, postJson should use the bytes field of Request so if an upstream Decorator also accesses the bytes field the value will be cached.