Browse Source

Move to predicate package. Create Method Predicate.

pull/41/head
Spencer Gibb 8 years ago
parent
commit
283604ac15
No known key found for this signature in database
GPG Key ID: 7788A47380690861
  1. 12
      src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java
  2. 2
      src/main/java/org/springframework/cloud/gateway/handler/ServerWebExchangePredicateHandlerMapping.java
  3. 2
      src/main/java/org/springframework/cloud/gateway/handler/predicate/GatewayPredicateFactory.java
  4. 2
      src/main/java/org/springframework/cloud/gateway/handler/predicate/HostPredicateFactory.java
  5. 26
      src/main/java/org/springframework/cloud/gateway/handler/predicate/MethodPredicateFactory.java
  6. 2
      src/main/java/org/springframework/cloud/gateway/handler/predicate/UrlPredicateFactory.java
  7. 3
      src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java
  8. 4
      src/test/resources/application.yml

12
src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java

@ -8,11 +8,12 @@ import org.springframework.cloud.gateway.actuate.GatewayEndpoint; @@ -8,11 +8,12 @@ import org.springframework.cloud.gateway.actuate.GatewayEndpoint;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter;
import org.springframework.cloud.gateway.handler.GatewayFilteringWebHandler;
import org.springframework.cloud.gateway.handler.HostPredicateFactory;
import org.springframework.cloud.gateway.handler.GatewayPredicateFactory;
import org.springframework.cloud.gateway.handler.predicate.HostPredicateFactory;
import org.springframework.cloud.gateway.handler.predicate.GatewayPredicateFactory;
import org.springframework.cloud.gateway.handler.GatewayWebHandler;
import org.springframework.cloud.gateway.handler.ServerWebExchangePredicateHandlerMapping;
import org.springframework.cloud.gateway.handler.UrlPredicateFactory;
import org.springframework.cloud.gateway.handler.predicate.MethodPredicateFactory;
import org.springframework.cloud.gateway.handler.predicate.UrlPredicateFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
@ -70,6 +71,11 @@ public class GatewayAutoConfiguration { @@ -70,6 +71,11 @@ public class GatewayAutoConfiguration {
return new UrlPredicateFactory();
}
@Bean
public MethodPredicateFactory methodPredicateFactory() {
return new MethodPredicateFactory();
}
@Configuration
@ConditionalOnClass(Endpoint.class)
protected static class GatewayActuatorConfiguration {

2
src/main/java/org/springframework/cloud/gateway/handler/ServerWebExchangePredicateHandlerMapping.java

@ -8,7 +8,7 @@ import java.util.function.Predicate; @@ -8,7 +8,7 @@ import java.util.function.Predicate;
import org.springframework.beans.BeansException;
import org.springframework.cloud.gateway.config.GatewayProperties;
import org.springframework.cloud.gateway.config.GatewayProperties.Route;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.handler.predicate.GatewayPredicateFactory;
import org.springframework.web.reactive.handler.AbstractHandlerMapping;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebHandler;

2
src/main/java/org/springframework/cloud/gateway/handler/GatewayPredicateFactory.java → src/main/java/org/springframework/cloud/gateway/handler/predicate/GatewayPredicateFactory.java

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
package org.springframework.cloud.gateway.handler;
package org.springframework.cloud.gateway.handler.predicate;
import org.springframework.web.server.ServerWebExchange;

2
src/main/java/org/springframework/cloud/gateway/handler/HostPredicateFactory.java → src/main/java/org/springframework/cloud/gateway/handler/predicate/HostPredicateFactory.java

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
package org.springframework.cloud.gateway.handler;
package org.springframework.cloud.gateway.handler.predicate;
import java.util.function.Predicate;

26
src/main/java/org/springframework/cloud/gateway/handler/predicate/MethodPredicateFactory.java

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
package org.springframework.cloud.gateway.handler.predicate;
import java.util.function.Predicate;
import org.springframework.http.HttpMethod;
import org.springframework.web.server.ServerWebExchange;
/**
* @author Spencer Gibb
*/
public class MethodPredicateFactory implements GatewayPredicateFactory {
@Override
public String getName() {
return "Method";
}
@Override
public Predicate<ServerWebExchange> create(String method) {
//TODO: caching can happen here
return exchange -> {
HttpMethod requestMethod = exchange.getRequest().getMethod();
return requestMethod.matches(method);
};
}
}

2
src/main/java/org/springframework/cloud/gateway/handler/UrlPredicateFactory.java → src/main/java/org/springframework/cloud/gateway/handler/predicate/UrlPredicateFactory.java

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
package org.springframework.cloud.gateway.handler;
package org.springframework.cloud.gateway.handler.predicate;
import java.util.function.Predicate;

3
src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java

@ -8,12 +8,9 @@ import org.springframework.boot.SpringBootConfiguration; @@ -8,12 +8,9 @@ import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.gateway.config.GatewayProperties;
import org.springframework.cloud.gateway.config.GatewayProperties.Route;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.handler.HostPredicateFactory;
import org.springframework.cloud.gateway.handler.ServerWebExchangePredicateHandlerMapping;
import org.springframework.cloud.gateway.handler.UrlPredicateFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpHeaders;

4
src/test/resources/application.yml

@ -17,7 +17,9 @@ spring: @@ -17,7 +17,9 @@ spring:
- name: Host
value: '**.foo.org'
- name: Url
value: '/headers'
value: /headers
- name: Method
value: GET
# =====================================
- id: default_path_to_httpbin

Loading…
Cancel
Save