java - Adding data to a Response object in Jersey -
i trying use aspect
add timestamp javax.ws.rs.core.response
using around advice.
i'm new java , jersey , i'm struggling this. closest have this:
object output = proceed(); method method = ((methodsignature) thisjoinpoint.getsignature()).getmethod(); type type = method.getgenericreturntype(); if (type == response.class) { system.out.println("we have response!"); response original = (response) output; output = (object)response.ok(original.getentity(string.class).tostring()+ " " + double.tostring(duration)).build(); } return output;
the kind of response produced application/json
. want add field json says time:<val of duration>
.
the easiest solution make entity classes extend interface has method gettime()
, settime()
, can set time value in interceptor shown below.
public interface timedentity { long gettime(); void settime(long time); }
your actual entity
public class entity implements timedentity { private long time; // other fields, getters , setters here.. @override public long gettime() { return time; } @override public void settime(long time) { this.time = time; } }
and interceptor
object output = proceed(); method method = ((methodsignature)thisjoinpoint.getsignature()).getmethod(); type type = method.getgenericreturntype(); if (type == response.class) { system.out.println("we have response!"); response original = (response) output; if (original != null && original.getentity() instanceof timedentity) { timedentity timedentity = (timedentity) original.getentity(); timedentity.settime(duration); } }else if (output instanceof timedentity) { timedentity timedentity = (timedentity) output; timedentity.settime(duration); } return output;
Comments
Post a Comment