001package org.javasimon.spring.webmvc; 002 003import org.javasimon.Manager; 004import org.javasimon.source.AbstractStopwatchSource; 005 006import org.springframework.web.method.HandlerMethod; 007 008/** 009 * Stopwatch source for Spring MVC handlers. 010 * 011 * @author gquintana 012 */ 013public class HandlerStopwatchSource extends AbstractStopwatchSource<HandlerLocation> { 014 /** 015 * Prefix used for Simon names. 016 */ 017 private static final String PREFIX = "org.javasimon.mvc"; 018 019 /** 020 * Suffix used for Simon names of Controllers. 021 */ 022 private static final String CONTROLLER_SUFFIX = "ctrl"; 023 024 /** 025 * Suffix used for Simon names of Views. 026 */ 027 private static final String VIEW_SUFFIX = "view"; 028 029 public HandlerStopwatchSource(Manager manager) { 030 super(manager); 031 } 032 033 @Override 034 protected String getMonitorName(HandlerLocation t) { 035 StringBuilder stringBuilder = new StringBuilder(PREFIX).append("."); 036 // Append controller type 037 if (t.getHandler() instanceof HandlerMethod) { 038 HandlerMethod handlerMethod = (HandlerMethod) t.getHandler(); 039 stringBuilder.append(handlerMethod.getBeanType().getSimpleName()) 040 .append(".").append(handlerMethod.getMethod().getName()); 041 } else { 042 stringBuilder.append(t.getHandler().getClass().getSimpleName()); 043 } 044 // Append step 045 stringBuilder.append("."); 046 switch (t.getStep()) { 047 case CONTROLLER: 048 stringBuilder.append(CONTROLLER_SUFFIX); 049 break; 050 case VIEW: 051 stringBuilder.append(VIEW_SUFFIX); 052 break; 053 } 054 return stringBuilder.toString(); 055 } 056}