Provide more detailed uri tag for calls to Data REST repositories
Closes gh-14872
This commit is contained in:
		
							parent
							
								
									d838787e70
								
							
						
					
					
						commit
						2110215559
					
				| 
						 | 
					@ -24,6 +24,7 @@ import io.micrometer.core.instrument.Tag;
 | 
				
			||||||
import org.springframework.http.HttpStatus;
 | 
					import org.springframework.http.HttpStatus;
 | 
				
			||||||
import org.springframework.util.StringUtils;
 | 
					import org.springframework.util.StringUtils;
 | 
				
			||||||
import org.springframework.web.servlet.HandlerMapping;
 | 
					import org.springframework.web.servlet.HandlerMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.util.pattern.PathPattern;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Factory methods for {@link Tag Tags} associated with a request-response exchange that
 | 
					 * Factory methods for {@link Tag Tags} associated with a request-response exchange that
 | 
				
			||||||
| 
						 | 
					@ -36,6 +37,8 @@ import org.springframework.web.servlet.HandlerMapping;
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public final class WebMvcTags {
 | 
					public final class WebMvcTags {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final String DATA_REST_PATH_PATTERN_ATTRIBUTE = "org.springframework.data.rest.webmvc.RepositoryRestHandlerMapping.EFFECTIVE_REPOSITORY_RESOURCE_LOOKUP_PATH";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final Tag URI_NOT_FOUND = Tag.of("uri", "NOT_FOUND");
 | 
						private static final Tag URI_NOT_FOUND = Tag.of("uri", "NOT_FOUND");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final Tag URI_REDIRECTION = Tag.of("uri", "REDIRECTION");
 | 
						private static final Tag URI_REDIRECTION = Tag.of("uri", "REDIRECTION");
 | 
				
			||||||
| 
						 | 
					@ -119,6 +122,11 @@ public final class WebMvcTags {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static String getMatchingPattern(HttpServletRequest request) {
 | 
						private static String getMatchingPattern(HttpServletRequest request) {
 | 
				
			||||||
 | 
							PathPattern dataRestPathPattern = (PathPattern) request
 | 
				
			||||||
 | 
									.getAttribute(DATA_REST_PATH_PATTERN_ATTRIBUTE);
 | 
				
			||||||
 | 
							if (dataRestPathPattern != null) {
 | 
				
			||||||
 | 
								return dataRestPathPattern.getPatternString();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return (String) request
 | 
							return (String) request
 | 
				
			||||||
				.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
 | 
									.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ import org.springframework.boot.actuate.metrics.web.servlet.WebMvcTags;
 | 
				
			||||||
import org.springframework.mock.web.MockHttpServletRequest;
 | 
					import org.springframework.mock.web.MockHttpServletRequest;
 | 
				
			||||||
import org.springframework.mock.web.MockHttpServletResponse;
 | 
					import org.springframework.mock.web.MockHttpServletResponse;
 | 
				
			||||||
import org.springframework.web.servlet.HandlerMapping;
 | 
					import org.springframework.web.servlet.HandlerMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.util.pattern.PathPatternParser;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.assertj.core.api.Assertions.assertThat;
 | 
					import static org.assertj.core.api.Assertions.assertThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +39,17 @@ public class WebMvcTagsTests {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private final MockHttpServletResponse response = new MockHttpServletResponse();
 | 
						private final MockHttpServletResponse response = new MockHttpServletResponse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						public void uriTagIsDataRestsEffectiveRepositoryLookupPathWhenAvailable() {
 | 
				
			||||||
 | 
							this.request.setAttribute(
 | 
				
			||||||
 | 
									"org.springframework.data.rest.webmvc.RepositoryRestHandlerMapping.EFFECTIVE_REPOSITORY_RESOURCE_LOOKUP_PATH",
 | 
				
			||||||
 | 
									new PathPatternParser().parse("/api/cities"));
 | 
				
			||||||
 | 
							this.request.setAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE,
 | 
				
			||||||
 | 
									"/api/{repository}");
 | 
				
			||||||
 | 
							Tag tag = WebMvcTags.uri(this.request, this.response);
 | 
				
			||||||
 | 
							assertThat(tag.getValue()).isEqualTo("/api/cities");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Test
 | 
						@Test
 | 
				
			||||||
	public void uriTagValueIsBestMatchingPatternWhenAvailable() {
 | 
						public void uriTagValueIsBestMatchingPatternWhenAvailable() {
 | 
				
			||||||
		this.request.setAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE,
 | 
							this.request.setAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue