Skip to content

Commit

Permalink
Polishing contribution
Browse files Browse the repository at this point in the history
Closes gh-27723
  • Loading branch information
rstoyanchev committed Nov 24, 2021
1 parent ce0aed2 commit 829bed0
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 19 deletions.
Expand Up @@ -187,7 +187,6 @@ public void setEmbeddedValueResolver(StringValueResolver resolver) {
@Override
@SuppressWarnings("deprecation")
public void afterPropertiesSet() {

this.config = new RequestMappingInfo.BuilderConfiguration();
this.config.setTrailingSlashMatch(useTrailingSlashMatch());
this.config.setContentNegotiationManager(getContentNegotiationManager());
Expand Down Expand Up @@ -247,17 +246,19 @@ public List<String> getFileExtensions() {
}

/**
* Get the configuration to build {@link RequestMappingInfo}
* instances. This is useful for programmatic registration of
* additional mappings following the same configuration as {@link
* #createRequestMappingInfo(RequestMapping, RequestCondition)}.
*
* @return builder configuration to be supplied into {@link RequestMappingInfo.Builder#options}.
* Obtain a {@link RequestMappingInfo.BuilderConfiguration} that can reflects
* the internal configuration of this {@code HandlerMapping} and can be used
* to set {@link RequestMappingInfo.Builder#options(RequestMappingInfo.BuilderConfiguration)}.
* <p>This is useful for programmatic registration of request mappings via
* {@link #registerHandlerMethod(Object, Method, RequestMappingInfo)}.
* @return the builder configuration that reflects the internal state
* @since 5.3.14
*/
public RequestMappingInfo.BuilderConfiguration getRequestMappingInfoBuilderConfiguration() {
public RequestMappingInfo.BuilderConfiguration getBuilderConfiguration() {
return this.config;
}


/**
* {@inheritDoc}
* <p>Expects a handler to have either a type-level @{@link Controller}
Expand Down Expand Up @@ -401,6 +402,19 @@ public void registerMapping(RequestMappingInfo mapping, Object handler, Method m
updateConsumesCondition(mapping, method);
}

/**
* {@inheritDoc}
* <p><strong>Note:</strong> To create the {@link RequestMappingInfo},
* please use {@link #getBuilderConfiguration()} and set the options on
* {@link RequestMappingInfo.Builder#options(RequestMappingInfo.BuilderConfiguration)}
* to match how this {@code HandlerMapping} is configured. This
* is important for example to ensure use of
* {@link org.springframework.web.util.pattern.PathPattern} or
* {@link org.springframework.util.PathMatcher} based matching.
* @param handler the bean name of the handler or the handler instance
* @param method the method to register
* @param mapping the mapping conditions associated with the handler method
*/
@Override
protected void registerHandlerMethod(Object handler, Method method, RequestMappingInfo mapping) {
super.registerHandlerMethod(handler, method, mapping);
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -80,15 +80,15 @@ static Stream<Arguments> pathPatternsArguments() {
}

@Test
void getRequestMappingInfoBuilderConfiguration() {
RequestMappingHandlerMapping handlerMapping = new RequestMappingHandlerMapping();
handlerMapping.setApplicationContext(new StaticWebApplicationContext());
void builderConfiguration() {
RequestMappingHandlerMapping mapping = new RequestMappingHandlerMapping();
mapping.setApplicationContext(new StaticWebApplicationContext());

RequestMappingInfo.BuilderConfiguration beforeAfterPropertiesSet = handlerMapping.getRequestMappingInfoBuilderConfiguration();
assertThat(beforeAfterPropertiesSet).isNotNull();
handlerMapping.afterPropertiesSet();
RequestMappingInfo.BuilderConfiguration afterPropertiesSet = handlerMapping.getRequestMappingInfoBuilderConfiguration();
assertThat(afterPropertiesSet).isNotNull().isNotSameAs(beforeAfterPropertiesSet);
RequestMappingInfo.BuilderConfiguration config = mapping.getBuilderConfiguration();
assertThat(config).isNotNull();

mapping.afterPropertiesSet();
assertThat(mapping.getBuilderConfiguration()).isNotNull().isNotSameAs(config);
}

@Test
Expand All @@ -99,7 +99,8 @@ void useRegisteredSuffixPatternMatch() {
handlerMapping.setApplicationContext(new StaticWebApplicationContext());

Map<String, MediaType> fileExtensions = Collections.singletonMap("json", MediaType.APPLICATION_JSON);
org.springframework.web.accept.PathExtensionContentNegotiationStrategy strategy = new org.springframework.web.accept.PathExtensionContentNegotiationStrategy(fileExtensions);
org.springframework.web.accept.PathExtensionContentNegotiationStrategy strategy =
new org.springframework.web.accept.PathExtensionContentNegotiationStrategy(fileExtensions);
ContentNegotiationManager manager = new ContentNegotiationManager(strategy);

handlerMapping.setContentNegotiationManager(manager);
Expand All @@ -115,7 +116,8 @@ void useRegisteredSuffixPatternMatch() {
@SuppressWarnings("deprecation")
void useRegisteredSuffixPatternMatchInitialization() {
Map<String, MediaType> fileExtensions = Collections.singletonMap("json", MediaType.APPLICATION_JSON);
org.springframework.web.accept.PathExtensionContentNegotiationStrategy strategy = new org.springframework.web.accept.PathExtensionContentNegotiationStrategy(fileExtensions);
org.springframework.web.accept.PathExtensionContentNegotiationStrategy strategy =
new org.springframework.web.accept.PathExtensionContentNegotiationStrategy(fileExtensions);
ContentNegotiationManager manager = new ContentNegotiationManager(strategy);

final Set<String> extensions = new HashSet<>();
Expand Down

0 comments on commit 829bed0

Please sign in to comment.