killbill-memoizeit

Details

diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/filters/ProfilingContainerResponseFilter.java b/profiles/killbill/src/main/java/org/killbill/billing/server/filters/ProfilingContainerResponseFilter.java
index 0a35b4a..e5d707e 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/filters/ProfilingContainerResponseFilter.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/filters/ProfilingContainerResponseFilter.java
@@ -23,6 +23,7 @@ import org.killbill.billing.jaxrs.json.ProfilingDataJson;
 import org.killbill.billing.util.jackson.ObjectMapper;
 import org.killbill.commons.profiling.Profiling;
 import org.killbill.commons.profiling.ProfilingData;
+import org.killbill.commons.profiling.ProfilingFeature.ProfilingFeatureType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,6 +57,11 @@ public class ProfilingContainerResponseFilter implements ContainerRequestFilter,
         if (profilingHeaderRequest != null) {
             try {
                 Profiling.setPerThreadProfilingData(profilingHeaderRequest);
+                // If we need to profile JAXRS let's do it...
+                final ProfilingData profilingData = Profiling.getPerThreadProfilingData();
+                if (profilingData.getProfileFeature().isProfilingJAXRS()) {
+                    profilingData.addStart(ProfilingFeatureType.JAXRS, request.getPath());
+                }
             } catch (IllegalArgumentException e) {
                 logger.info("Profiling data output " + profilingHeaderRequest + " is not supported, profiling NOT enabled");
             }
@@ -68,7 +74,11 @@ public class ProfilingContainerResponseFilter implements ContainerRequestFilter,
         try {
             final ProfilingData rawData = Profiling.getPerThreadProfilingData();
             if (rawData != null) {
+                if (rawData.getProfileFeature().isProfilingJAXRS()) {
+                    rawData.addEnd(ProfilingFeatureType.JAXRS, request.getPath());
+                }
                 final ProfilingDataJson profilingData = new ProfilingDataJson(rawData);
+
                 final String value;
                 try {
                     value = mapper.writeValueAsString(profilingData);