refactor SpringWebClient

This commit is contained in:
Porcupiney Hairs
2020-11-13 00:32:27 +05:30
parent 2525cfd786
commit f8de94e906
2 changed files with 39 additions and 116 deletions

View File

@@ -141,3 +141,42 @@ module RequestForgery {
}
}
}
/**
* A class representing all Spring Rest Template methods
* which take an URL as an argument.
*/
class SpringRestTemplateUrlMethods extends Method {
SpringRestTemplateUrlMethods() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("doExecute")
or
this.hasName("postForEntity")
or
this.hasName("postForLocation")
or
this.hasName("postForObject")
or
this.hasName("put")
or
this.hasName("exchange")
or
this.hasName("execute")
or
this.hasName("getForEntity")
or
this.hasName("getForObject")
or
this.hasName("patchForObject")
}
/**
* Gets the argument which corresponds to a URL argument
* passed as a `java.net.URL` object or as a string or the like
*/
Argument getUrlArgument(MethodAccess ma) {
// doExecute(URI url, HttpMethod method, RequestCallback requestCallback,
// ResponseExtractor<T> responseExtractor)
result = ma.getArgument(0)
}
}

View File

@@ -27,119 +27,3 @@ class SpringWebClient extends Interface {
this.hasQualifiedName("org.springframework.web.reactive.function.client", "WebClient")
}
}
/**
* An abstract class representing all Spring Rest Template methods
* which take an URL as an argument.
*/
abstract class SpringRestTemplateUrlMethods extends Method {
/**
* Gets the argument which corresponds to a URL argument
* passed as a `java.net.URL` object or as a string or the like
*/
abstract Argument getUrlArgument(MethodAccess ma);
}
/** Models `RestTemplate` class's `doExecute` method */
class RestTemplateDoExecute extends SpringRestTemplateUrlMethods {
RestTemplateDoExecute() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("doExecute")
}
override Argument getUrlArgument(MethodAccess ma) {
// doExecute(URI url, HttpMethod method, RequestCallback requestCallback,
// ResponseExtractor<T> responseExtractor)
result = ma.getArgument(0)
}
}
/** Models `RestTemplate` class's `exchange` method */
class RestTemplateExchange extends SpringRestTemplateUrlMethods {
RestTemplateExchange() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("exchange")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `execute` method */
class RestTemplateExecute extends SpringRestTemplateUrlMethods {
RestTemplateExecute() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("execute")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `getForEntity` method */
class RestTemplateGetForEntity extends SpringRestTemplateUrlMethods {
RestTemplateGetForEntity() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("getForEntity")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `getForObject` method */
class RestTemplateGetForObject extends SpringRestTemplateUrlMethods {
RestTemplateGetForObject() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("getForObject")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `patchForObject` method */
class RestTemplatePatchForObject extends SpringRestTemplateUrlMethods {
RestTemplatePatchForObject() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("patchForObject")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `postForEntity` method */
class RestTemplatePostForEntity extends SpringRestTemplateUrlMethods {
RestTemplatePostForEntity() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("postForEntity")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `postForLocation` method */
class RestTemplatePostForLocation extends SpringRestTemplateUrlMethods {
RestTemplatePostForLocation() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("postForLocation")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `postForObject` method */
class RestTemplatePostForObject extends SpringRestTemplateUrlMethods {
RestTemplatePostForObject() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("postForObject")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}
/** Models `RestTemplate` class's `put` method */
class RestTemplatePut extends SpringRestTemplateUrlMethods {
RestTemplatePut() {
this.getDeclaringType() instanceof SpringRestTemplate and
this.hasName("put")
}
override Argument getUrlArgument(MethodAccess ma) { result = ma.getArgument(0) }
}