Skip to content

Commit d2fef0e

Browse files
authored
Merge pull request #19 from SpringCloud/A
A
2 parents 28e64c9 + 94f8ca0 commit d2fef0e

File tree

30 files changed

+199
-40
lines changed

30 files changed

+199
-40
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<groupId>cn.springcloud.gray</groupId>
1313
<artifactId>spring-cloud-gray</artifactId>
1414
<packaging>pom</packaging>
15-
<version>A.1.0.4</version>
15+
<version>A.1.0.5</version>
1616
<url>https://github.com/SpringCloud/spring-cloud-gray</url>
1717
<organization>
1818
<name>Spring Cloud中国社区</name>

spring-cloud-gray-client-netflix/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-cloud-gray</artifactId>
77
<groupId>cn.springcloud.gray</groupId>
8-
<version>A.1.0.4</version>
8+
<version>A.1.0.5</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/zuul/ZuulRequestInterceptor.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ public boolean pre(GrayRequest request) {
3939
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX)
4040
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
4141
.append(entry.getKey()).toString();
42-
context.addZuulRequestHeader(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
43-
4442
entry.getValue().forEach(v -> {
4543
context.addZuulRequestHeader(name, v);
4644
});

spring-cloud-gray-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-cloud-gray</artifactId>
77
<groupId>cn.springcloud.gray</groupId>
8-
<version>A.1.0.4</version>
8+
<version>A.1.0.5</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/GrayDecisionFactoryConfiguration.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ public HttpParameterGrayDecisionFactory httpParameterGrayDecisionFactory() {
3737
public TraceIpGrayDecisionFactory traceIpGrayDecisionFactory() {
3838
return new TraceIpGrayDecisionFactory();
3939
}
40+
41+
@Bean
42+
public HttpTrackParameterGrayDecisionFactory httpTrackParameterGrayDecisionFactory() {
43+
return new HttpTrackParameterGrayDecisionFactory();
44+
}
45+
46+
@Bean
47+
public HttpTrackHeaderGrayDecisionFactory httpTrackHeaderGrayDecisionFactory() {
48+
return new HttpTrackHeaderGrayDecisionFactory();
49+
}
50+
51+
@Bean
52+
public TrackAttributeGrayDecisionFactory trackAttributeGrayDecisionFactory() {
53+
return new TrackAttributeGrayDecisionFactory();
54+
}
4055
}
4156

4257

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package cn.springcloud.gray.decision.compare;
22

3+
import org.apache.commons.lang3.StringUtils;
4+
5+
import java.util.Collection;
36
import java.util.HashMap;
47
import java.util.Map;
58

69
public class Comparators {
710

811

9-
private static Map<CompareMode, PredicateComparator> collectionStringComparators = new HashMap<>();
12+
private static Map<CompareMode, PredicateComparator<Collection<String>>> collectionStringComparators = new HashMap<>();
13+
private static Map<CompareMode, PredicateComparator<String>> stringStringComparators = new HashMap<>();
1014

1115
static {
1216
collectionStringComparators.put(CompareMode.EQUAL, new CollectionStringEqualComparator());
@@ -15,10 +19,18 @@ public class Comparators {
1519
collectionStringComparators.put(CompareMode.CONTAINS_ALL, new CollectionStringContainAllComparator());
1620
collectionStringComparators.put(CompareMode.NOT_CONTAINS_ALL, new CollectionStringNotContainAllComparator());
1721
collectionStringComparators.put(CompareMode.NOT_CONTAINS_ANY, new CollectionStringNotContainAnyComparator());
22+
23+
stringStringComparators.put(CompareMode.EQUAL, (arg1, arg2) -> StringUtils.equals(arg1, arg2));
24+
stringStringComparators.put(CompareMode.UNEQUAL, (arg1, arg2) -> !StringUtils.equals(arg1, arg2));
1825
}
1926

2027

21-
public static PredicateComparator getCollectionStringComparator(CompareMode mode) {
28+
public static PredicateComparator<Collection<String>> getCollectionStringComparator(CompareMode mode) {
2229
return collectionStringComparators.get(mode);
2330
}
31+
32+
33+
public static PredicateComparator<String> getStringComparator(CompareMode mode) {
34+
return stringStringComparators.get(mode);
35+
}
2436
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpHeaderGrayDecisionFactory.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import cn.springcloud.gray.decision.GrayDecision;
44
import cn.springcloud.gray.decision.compare.Comparators;
5+
import cn.springcloud.gray.decision.compare.PredicateComparator;
56
import cn.springcloud.gray.request.GrayHttpRequest;
6-
import cn.springcloud.gray.request.GrayRequest;
77
import lombok.Getter;
88
import lombok.Setter;
99

@@ -23,9 +23,14 @@ public HttpHeaderGrayDecisionFactory() {
2323
public GrayDecision apply(Config configBean) {
2424
return args -> {
2525
GrayHttpRequest grayRequest = (GrayHttpRequest) args.getGrayRequest();
26+
27+
PredicateComparator<Collection<String>> predicateComparator =
28+
Comparators.getCollectionStringComparator(configBean.getCompareMode());
29+
if (predicateComparator == null) {
30+
return false;
31+
}
2632
Map<String, ? extends Collection<String>> headers = grayRequest.getHeaders();
27-
return Comparators.getCollectionStringComparator(configBean.getCompareMode())
28-
.test(headers.get(configBean.getHeader()), configBean.getValues());
33+
return predicateComparator.test(headers.get(configBean.getHeader()), configBean.getValues());
2934
};
3035
}
3136

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpMethodGrayDecisionFactory.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package cn.springcloud.gray.decision.factory;
22

33
import cn.springcloud.gray.decision.GrayDecision;
4+
import cn.springcloud.gray.decision.compare.Comparators;
5+
import cn.springcloud.gray.decision.compare.PredicateComparator;
46
import cn.springcloud.gray.request.GrayHttpRequest;
5-
import cn.springcloud.gray.request.GrayRequest;
67
import lombok.Getter;
78
import lombok.Setter;
8-
import org.apache.commons.lang3.StringUtils;
99
import org.springframework.http.HttpMethod;
1010

11-
import java.util.Objects;
12-
1311
public class HttpMethodGrayDecisionFactory extends AbstractGrayDecisionFactory<HttpMethodGrayDecisionFactory.Config> {
1412

1513

@@ -21,14 +19,18 @@ public HttpMethodGrayDecisionFactory() {
2119
public GrayDecision apply(Config configBean) {
2220
return args -> {
2321
GrayHttpRequest grayRequest = (GrayHttpRequest) args.getGrayRequest();
24-
return StringUtils.endsWithIgnoreCase(grayRequest.getMethod(), configBean.getMethod().name());
22+
PredicateComparator<String> predicateComparator = Comparators.getStringComparator(configBean.getCompareMode());
23+
if (predicateComparator == null) {
24+
return false;
25+
}
26+
return predicateComparator.test(grayRequest.getMethod(), configBean.getMethod().name());
2527
};
2628
}
2729

2830

2931
@Setter
3032
@Getter
31-
public static class Config {
33+
public static class Config extends CompareGrayDecisionFactory.CompareConfig {
3234
private HttpMethod method;
3335

3436
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpParameterGrayDecisionFactory.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
import cn.springcloud.gray.decision.GrayDecision;
44
import cn.springcloud.gray.decision.compare.Comparators;
5+
import cn.springcloud.gray.decision.compare.PredicateComparator;
56
import cn.springcloud.gray.request.GrayHttpRequest;
6-
import cn.springcloud.gray.request.GrayRequest;
77
import lombok.Getter;
88
import lombok.Setter;
99

1010
import java.util.Collection;
1111
import java.util.Collections;
1212
import java.util.List;
13-
import java.util.Map;
1413

1514
public class HttpParameterGrayDecisionFactory extends CompareGrayDecisionFactory<HttpParameterGrayDecisionFactory.Config> {
1615

@@ -23,8 +22,12 @@ public HttpParameterGrayDecisionFactory() {
2322
public GrayDecision apply(Config configBean) {
2423
return args -> {
2524
GrayHttpRequest grayRequest = (GrayHttpRequest) args.getGrayRequest();
26-
return Comparators.getCollectionStringComparator(configBean.getCompareMode())
27-
.test(grayRequest.getParameters().get(configBean.getName()), configBean.getValues());
25+
PredicateComparator<Collection<String>> predicateComparator =
26+
Comparators.getCollectionStringComparator(configBean.getCompareMode());
27+
if (predicateComparator == null) {
28+
return false;
29+
}
30+
return predicateComparator.test(grayRequest.getParameters().get(configBean.getName()), configBean.getValues());
2831
};
2932
}
3033

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package cn.springcloud.gray.decision.factory;
2+
3+
import cn.springcloud.gray.decision.GrayDecision;
4+
import cn.springcloud.gray.decision.compare.Comparators;
5+
import cn.springcloud.gray.decision.compare.PredicateComparator;
6+
import cn.springcloud.gray.request.GrayHttpTrackInfo;
7+
8+
import java.util.Collection;
9+
import java.util.Map;
10+
11+
public class HttpTrackHeaderGrayDecisionFactory extends CompareGrayDecisionFactory<HttpHeaderGrayDecisionFactory.Config> {
12+
13+
public HttpTrackHeaderGrayDecisionFactory() {
14+
super(HttpHeaderGrayDecisionFactory.Config.class);
15+
}
16+
17+
@Override
18+
public GrayDecision apply(HttpHeaderGrayDecisionFactory.Config configBean) {
19+
return args -> {
20+
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) args.getGrayRequest().getGrayTrackInfo();
21+
if (grayTrackInfo == null) {
22+
return false;
23+
}
24+
25+
Map<String, ? extends Collection<String>> headers = grayTrackInfo.getHeaders();
26+
PredicateComparator<Collection<String>> predicateComparator =
27+
Comparators.getCollectionStringComparator(configBean.getCompareMode());
28+
if (predicateComparator == null) {
29+
return false;
30+
}
31+
return predicateComparator.test(headers.get(configBean.getHeader()), configBean.getValues());
32+
};
33+
}
34+
}

0 commit comments

Comments
 (0)