Remove PredicateFactory.getName(), rely on bean name.

Will still remove PredicateFactory if that is the suffix.
This commit is contained in:
Spencer Gibb
2017-01-14 11:20:55 -07:00
parent a67d424328
commit efe4855e62
9 changed files with 21 additions and 48 deletions

View File

@@ -80,37 +80,37 @@ public class GatewayAutoConfiguration {
@Bean
public GatewayPredicateHandlerMapping gatewayPredicateHandlerMapping(GatewayFilteringWebHandler webHandler,
List<PredicateFactory> predicates,
Map<String, PredicateFactory> predicates,
RouteReader routeReader) {
return new GatewayPredicateHandlerMapping(webHandler, predicates, routeReader);
}
@Bean
@Bean(name = "CookiePredicateFactory")
public CookiePredicateFactory cookiePredicateFactory() {
return new CookiePredicateFactory();
}
@Bean
@Bean(name = "HeaderPredicateFactory")
public HeaderPredicateFactory headerPredicateFactory() {
return new HeaderPredicateFactory();
}
@Bean
@Bean(name = "HostPredicateFactory")
public HostPredicateFactory hostPredicateFactory() {
return new HostPredicateFactory();
}
@Bean
@Bean(name = "MethodPredicateFactory")
public MethodPredicateFactory methodPredicateFactory() {
return new MethodPredicateFactory();
}
@Bean
@Bean(name = "QueryPredicateFactory")
public QueryPredicateFactory queryPredicateFactory() {
return new QueryPredicateFactory();
}
@Bean
@Bean(name = "UrlPredicateFactory")
public UrlPredicateFactory urlPredicateFactory() {
return new UrlPredicateFactory();
}

View File

@@ -32,26 +32,31 @@ public class GatewayPredicateHandlerMapping extends AbstractHandlerMapping {
private List<Route> routes;
public GatewayPredicateHandlerMapping(WebHandler webHandler, List<PredicateFactory> predicates,
public GatewayPredicateHandlerMapping(WebHandler webHandler, Map<String, PredicateFactory> predicates,
RouteReader routeReader) {
this.webHandler = webHandler;
this.routeReader = routeReader;
for (PredicateFactory factory : predicates) {
if (this.predicates.containsKey(factory.getName())) {
this.logger.warn("A PredicateFactory named "+ factory.getName()
+ " already exists, class: " + this.predicates.get(factory.getName())
predicates.forEach((name, factory) -> {
String key = normalizeName(name);
if (this.predicates.containsKey(key)) {
this.logger.warn("A PredicateFactory named "+ key
+ " already exists, class: " + this.predicates.get(key)
+ ". It will be overwritten.");
}
this.predicates.put(factory.getName(), factory);
this.predicates.put(key, factory);
if (logger.isInfoEnabled()) {
logger.info("Loaded PredicateFactory [" + factory.getName() + "]");
logger.info("Loaded PredicateFactory [" + key + "]");
}
}
});
setOrder(-1);
}
private String normalizeName(String name) {
return name.replace(PredicateFactory.class.getSimpleName(), "");
}
@Override
protected void initApplicationContext() throws BeansException {
super.initApplicationContext();
@@ -147,7 +152,7 @@ public class GatewayPredicateHandlerMapping extends AbstractHandlerMapping {
args = Collections.emptyList();
}
logger.debug("Route " + route.getId() + " applying "+ predicate.getValue()
+ ", " + args + " to " + found.getName());
+ ", " + args + " to " + predicate.getName());
}
return found.apply(predicate.getValue(), predicate.getArgs());
}

View File

@@ -12,11 +12,6 @@ import org.springframework.web.server.ServerWebExchange;
*/
public class CookiePredicateFactory implements PredicateFactory {
@Override
public String getName() {
return "Cookie";
}
@Override
public Predicate<ServerWebExchange> apply(String name, String[] args) {
//TODO: caching can happen here

View File

@@ -11,11 +11,6 @@ import org.springframework.web.server.ServerWebExchange;
*/
public class HeaderPredicateFactory implements PredicateFactory {
@Override
public String getName() {
return "Header";
}
@Override
public Predicate<ServerWebExchange> apply(String header, String[] args) {
//TODO: caching can happen here

View File

@@ -17,11 +17,6 @@ public class HostPredicateFactory implements PredicateFactory {
this.pathMatcher = pathMatcher;
}
@Override
public String getName() {
return "Host";
}
@Override
public Predicate<ServerWebExchange> apply(String pattern, String[] args) {
//TODO: caching can happen here

View File

@@ -10,11 +10,6 @@ import org.springframework.web.server.ServerWebExchange;
*/
public class MethodPredicateFactory implements PredicateFactory {
@Override
public String getName() {
return "Method";
}
@Override
public Predicate<ServerWebExchange> apply(String method, String[] args) {
//TODO: caching can happen here

View File

@@ -9,7 +9,5 @@ import org.springframework.web.server.ServerWebExchange;
*/
public interface PredicateFactory {
String getName();
Predicate<ServerWebExchange> apply(String value, String[] args);
}

View File

@@ -10,11 +10,6 @@ import org.springframework.web.server.ServerWebExchange;
*/
public class QueryPredicateFactory implements PredicateFactory {
@Override
public String getName() {
return "Query";
}
@Override
public Predicate<ServerWebExchange> apply(String param, String[] args) {
//TODO: caching can happen here

View File

@@ -34,11 +34,6 @@ public class UrlPredicateFactory implements PredicateFactory {
this.pathHelper = pathHelper;
}
@Override
public String getName() {
return "Url";
}
@Override
public Predicate<ServerWebExchange> apply(String pattern, String[] args) {
return exchange -> {