|
|
|
@ -63,9 +63,9 @@ public class DefaultApiVersionStrategy implements ApiVersionStrategy { |
|
|
|
* @param versionResolvers one or more resolvers to try; the first non-null |
|
|
|
* @param versionResolvers one or more resolvers to try; the first non-null |
|
|
|
* value returned by any resolver becomes the resolved used |
|
|
|
* value returned by any resolver becomes the resolved used |
|
|
|
* @param versionParser parser for to raw version values |
|
|
|
* @param versionParser parser for to raw version values |
|
|
|
* @param versionRequired whether a version is required; if a request |
|
|
|
* @param versionRequired whether a version is required leading to |
|
|
|
* does not have a version, and a {@code defaultVersion} is not specified, |
|
|
|
* {@link MissingApiVersionException} for requests that don't have one; |
|
|
|
* validation fails with {@link MissingApiVersionException} |
|
|
|
* by default set to true unless there is a defaultVersion |
|
|
|
* @param defaultVersion a default version to assign to requests that |
|
|
|
* @param defaultVersion a default version to assign to requests that |
|
|
|
* don't specify one |
|
|
|
* don't specify one |
|
|
|
* @param detectSupportedVersions whether to use API versions that appear in |
|
|
|
* @param detectSupportedVersions whether to use API versions that appear in |
|
|
|
@ -76,16 +76,18 @@ public class DefaultApiVersionStrategy implements ApiVersionStrategy { |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public DefaultApiVersionStrategy( |
|
|
|
public DefaultApiVersionStrategy( |
|
|
|
List<ApiVersionResolver> versionResolvers, ApiVersionParser<?> versionParser, |
|
|
|
List<ApiVersionResolver> versionResolvers, ApiVersionParser<?> versionParser, |
|
|
|
boolean versionRequired, @Nullable String defaultVersion, |
|
|
|
@Nullable Boolean versionRequired, @Nullable String defaultVersion, |
|
|
|
boolean detectSupportedVersions, @Nullable Predicate<Comparable<?>> supportedVersionPredicate, |
|
|
|
boolean detectSupportedVersions, @Nullable Predicate<Comparable<?>> supportedVersionPredicate, |
|
|
|
@Nullable ApiVersionDeprecationHandler deprecationHandler) { |
|
|
|
@Nullable ApiVersionDeprecationHandler deprecationHandler) { |
|
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(versionResolvers, "At least one ApiVersionResolver is required"); |
|
|
|
Assert.notEmpty(versionResolvers, "At least one ApiVersionResolver is required"); |
|
|
|
Assert.notNull(versionParser, "ApiVersionParser is required"); |
|
|
|
Assert.notNull(versionParser, "ApiVersionParser is required"); |
|
|
|
|
|
|
|
Assert.isTrue(defaultVersion == null || versionRequired == null || !versionRequired, |
|
|
|
|
|
|
|
"versionRequired cannot be set to true if a defaultVersion is also configured"); |
|
|
|
|
|
|
|
|
|
|
|
this.versionResolvers = new ArrayList<>(versionResolvers); |
|
|
|
this.versionResolvers = new ArrayList<>(versionResolvers); |
|
|
|
this.versionParser = versionParser; |
|
|
|
this.versionParser = versionParser; |
|
|
|
this.versionRequired = (versionRequired && defaultVersion == null); |
|
|
|
this.versionRequired = (versionRequired != null ? versionRequired : defaultVersion == null); |
|
|
|
this.defaultVersion = (defaultVersion != null ? versionParser.parseVersion(defaultVersion) : null); |
|
|
|
this.defaultVersion = (defaultVersion != null ? versionParser.parseVersion(defaultVersion) : null); |
|
|
|
this.detectSupportedVersions = detectSupportedVersions; |
|
|
|
this.detectSupportedVersions = detectSupportedVersions; |
|
|
|
this.supportedVersionPredicate = initSupportedVersionPredicate(supportedVersionPredicate); |
|
|
|
this.supportedVersionPredicate = initSupportedVersionPredicate(supportedVersionPredicate); |
|
|
|
|