package com.philemonworks.critter.action; import javax.ws.rs.core.Response; import org.apache.http.client.methods.HttpRequestBase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.philemonworks.critter.rule.RuleContext; public class Trace extends RuleIngredient implements Action { private static final Logger LOG = LoggerFactory.getLogger(Trace.class); @Override public void perform(RuleContext context) { // detect request or response to trace if (context.forwardResponse == null) { this.log(context.forwardMethod); } else { this.log(context.httpContext.getResponse().getResponse()); } } private void log(HttpRequestBase request) { StringBuilder sb = new StringBuilder(); sb.append(request.getRequestLine().toString()); LOG.trace(sb.toString()); } private void log(Response response) { StringBuilder sb = new StringBuilder(); sb.append(response.getStatus()); LOG.trace(sb.toString()); } @Override public String explain() { return "trace the incoming request or outgoing response"; } }