Fix the bug for parsing with only non-param gateway rules

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
This commit is contained in:
Eric Zhao 2019-05-21 16:45:05 +08:00
parent ae0b8a5c74
commit 8d0bb691b3
3 changed files with 9 additions and 4 deletions

View File

@ -62,10 +62,10 @@ public class GatewayParamParser<T> {
hasNonParamRule = true; hasNonParamRule = true;
} }
} }
if (gatewayRules.isEmpty()) { if (!hasNonParamRule && gatewayRules.isEmpty()) {
return new Object[0]; return new Object[0];
} }
if (predSet.size() != 1 || predSet.contains(false)) { if (predSet.size() > 1 || predSet.contains(false)) {
return new Object[0]; return new Object[0];
} }
int size = hasNonParamRule ? gatewayRules.size() + 1 : gatewayRules.size(); int size = hasNonParamRule ? gatewayRules.size() + 1 : gatewayRules.size();

View File

@ -70,10 +70,15 @@ public class GatewayParamParserTest {
.setCount(5) .setCount(5)
.setIntervalSec(1) .setIntervalSec(1)
); );
rules.add(new GatewayFlowRule(routeId1)
.setCount(10)
.setControlBehavior(2)
.setMaxQueueingTimeoutMs(1000)
);
GatewayRuleManager.loadRules(rules); GatewayRuleManager.loadRules(rules);
Object[] params = parser.parseParameterFor(routeId1, request, routeIdPredicate); Object[] params = parser.parseParameterFor(routeId1, request, routeIdPredicate);
assertThat(params.length).isZero(); assertThat(params.length).isEqualTo(1);
} }
@Test @Test

View File

@ -67,7 +67,7 @@ public class SpringCloudGatewayParamParserTest {
Object[] params = paramParser.parseParameterFor(routeId1, exchange, Object[] params = paramParser.parseParameterFor(routeId1, exchange,
e -> e.getResourceMode() == 0); e -> e.getResourceMode() == 0);
assertThat(params.length).isZero(); assertThat(params.length).isEqualTo(1);
} }
@Test @Test