diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java index bc8488d..a9a2cf5 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/config/ConfigGateway.java @@ -83,12 +83,27 @@ public class ConfigGateway implements RouteDefinitionLocator { Map configYaml = new Yaml().load((InputStream) inputStream); if (configYaml != null) { - Map defaultFiltersYaml = (Map) configYaml.get("default-filters"); - Map restfulYaml = (Map) configYaml.get("restful"); - Map dubboYaml = (Map) configYaml.get("dubbo"); + List defaultFiltersYaml = null; + Map restfulYaml = null; + Map dubboYaml = null; + + Object unknown; + unknown = configYaml.get("default-filters"); + if (unknown != null) { + defaultFiltersYaml = (List) unknown; + } + + unknown = configYaml.get("restful"); + if (unknown != null) { + restfulYaml = (Map) unknown; + } + + unknown = configYaml.get("dubbo"); + if (unknown != null) { + dubboYaml = (Map) unknown; + } List routeList = new ArrayList(); - if (restfulYaml != null && !restfulYaml.isEmpty()) { this.getDefaultFilter(defaultFilters, defaultFiltersYaml); this.configRestful(routeList, restfulYaml); @@ -110,44 +125,43 @@ public class ConfigGateway implements RouteDefinitionLocator { /** * - * @param routeList 路由列表 + * @param routeList 路由列表 * @param restfulYaml 配置Yaml.restful对象 */ @SuppressWarnings("unchecked") private void configRestful(List routeList, Map restfulYaml) { - if (restfulYaml != null) { - Object unknownRoutes = restfulYaml.get("routes"); - if (unknownRoutes != null) { - List>> routes = (ArrayList>>) unknownRoutes; - for (LinkedHashMap> iter : routes) { + Object unknownRoutes = restfulYaml.get("routes"); + if (unknownRoutes != null) { + List>> routes = (ArrayList>>) unknownRoutes; + for (LinkedHashMap> iter : routes) { - List filters = new ArrayList<>(); - List predicates = new ArrayList<>(); - RouteDefinition rd = new RouteDefinition(); + List filters = new ArrayList<>(); + List predicates = new ArrayList<>(); + RouteDefinition rd = new RouteDefinition(); - // 设置基础属性 - this.parseAndSetBase(rd, iter); + // 设置基础属性 + this.parseAndSetBase(rd, iter); - // predicates: 下的相关属性 - this.parseAndAddPredicates(predicates, iter, "predicates"); + // predicates: 下的相关属性 + this.parseAndAddPredicates(predicates, iter, "predicates"); - // filters: 下的相关属性 - this.parseAndAddFilters(filters, iter, "filters"); + // filters: 下的相关属性 + this.parseAndAddFilters(filters, iter, "filters"); - rd.setPredicates(predicates); - rd.setFilters(filters); + rd.setPredicates(predicates); + rd.setFilters(filters); - routeList.add(rd); - } + routeList.add(rd); } } + } /** * - * @param routeList 路由列表 - * @param configDubbo 配置Yaml.dubbo对象 + * @param routeList 路由列表 + * @param configDubbo 配置Yaml.dubbo对象 */ @SuppressWarnings("unchecked") private void configHttp2Dubbo(List routeList, Map configDubbo) { @@ -194,16 +208,14 @@ public class ConfigGateway implements RouteDefinitionLocator { /** * - * @param filters {@link #defaultFilters} 全局的默认过滤列表, 可以和Spring Cloud 默认配置一起生效 + * @param filters {@link #defaultFilters} 全局的默认过滤列表, 可以和Spring Cloud + * 默认配置一起生效 * @param defaultYaml 配置Yaml.default-filters对象 */ @SuppressWarnings("unchecked") - private void getDefaultFilter(List filters, Map defaultYaml) { + private void getDefaultFilter(List filters, List defaultFiltersYaml) { // default-filters: 下的相关设置 - Object unknownDefaultFilters = defaultYaml.get("default-filters"); - - if (unknownDefaultFilters != null) { - List defaultFiltersYaml = (ArrayList) unknownDefaultFilters; + if (defaultFiltersYaml != null) { for (String filterString : defaultFiltersYaml) { filters.add(new FilterDefinition(filterString)); } @@ -212,7 +224,7 @@ public class ConfigGateway implements RouteDefinitionLocator { /*** * - * @param rd 路由列表 + * @param rd 路由列表 * @param iter Yaml.restful.routes */ private void parseAndSetBase(RouteDefinition rd, LinkedHashMap> iter) { diff --git a/usergw-service/src/main/resources/test-gateway.yaml b/usergw-service/src/main/resources/test-gateway.yaml index ff360e8..7e9c5b4 100644 --- a/usergw-service/src/main/resources/test-gateway.yaml +++ b/usergw-service/src/main/resources/test-gateway.yaml @@ -1,6 +1,6 @@ default-filters: - - AddResponseHeader=X-Response-Default-Foo, Default-Bar - + - AddResponseHeader=X-Response-Default-Foo, Test-Default-Bar + restful: routes: - id: path_route diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java index c3f0c32..7fac6a2 100644 --- a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java @@ -37,7 +37,7 @@ public class TestYaml { Assert.assertEquals(restfulYaml.getClass(), LinkedHashMap.class); - List defaultFilters = ((Map>)restfulYaml).get("default-filters"); + List defaultFilters = (List)configYaml.get("default-filters"); Assert.assertNotNull(defaultFilters); Assert.assertEquals(defaultFilters.size(), 1);