From d6259283f3d10e65c18cef3f508651f6808ac074 Mon Sep 17 00:00:00 2001 From: Kent Dong Date: Thu, 17 Oct 2024 13:35:07 +0800 Subject: [PATCH] fix: Fix several bugs (#357) --- .../sdk/service/WasmPluginServiceImpl.java | 17 ++++++++++++----- .../sdk/service/kubernetes/KubernetesUtil.java | 3 ++- .../main/resources/plugins/basic-auth/spec.yaml | 2 +- frontend/src/pages/layout.tsx | 5 +++-- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/WasmPluginServiceImpl.java b/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/WasmPluginServiceImpl.java index 40a7b893..b5eb7094 100644 --- a/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/WasmPluginServiceImpl.java +++ b/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/WasmPluginServiceImpl.java @@ -94,7 +94,8 @@ class WasmPluginServiceImpl implements WasmPluginService { private static final String EXAMPLE_RAW_PROPERTY_NAME = "x-example-raw"; private static final Pattern YAML_CONTENT_PATTERN = Pattern.compile("^(\\s*)(\\S.*)\\s*$"); - private static final String YAML_V3_SCHEMA_PROPERTY_KEY = "openAPIV3Schema:"; + private static final String CONFIG_SCHEMA_PROPERTY_KEY = "configSchema:"; + private static final String OPEN_API_V3_SCHEMA_PROPERTY_KEY = "openAPIV3Schema:"; private static final String YAML_EXAMPLE_PROPERTY_KEY = "example:"; private volatile List builtInPlugins = Collections.emptyList(); @@ -186,7 +187,7 @@ private void fillPluginConfigExample(Plugin plugin, String content) { private String extractConfigExample(String content) throws IOException { StringBuilder builder = new StringBuilder(); try (BufferedReader reader = new BufferedReader(new StringReader(content))) { - boolean foundSchema = false, foundExample = false; + boolean foundConfigSchema = false, foundOpenApiV3Schema = false, foundExample = false; String schemaOuterIndentation = null, exampleOuterIndentation = null, exampleInnerIndentation = null; String line; while ((line = reader.readLine()) != null) { @@ -200,10 +201,16 @@ private String extractConfigExample(String content) throws IOException { String indentation = yamlContentMatcher.group(1); String unindentedContent = yamlContentMatcher.group(2); - if (!foundSchema) { + if (!foundOpenApiV3Schema) { + if (!foundConfigSchema) { + if (unindentedContent.startsWith(CONFIG_SCHEMA_PROPERTY_KEY)) { + foundConfigSchema = true; + } + continue; + } // We only care about finding the openAPIV3Schema property now. - if (unindentedContent.startsWith(YAML_V3_SCHEMA_PROPERTY_KEY)) { - foundSchema = true; + if (unindentedContent.startsWith(OPEN_API_V3_SCHEMA_PROPERTY_KEY)) { + foundOpenApiV3Schema = true; schemaOuterIndentation = indentation; } continue; diff --git a/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/kubernetes/KubernetesUtil.java b/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/kubernetes/KubernetesUtil.java index 42cbf4af..4f30e12d 100644 --- a/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/kubernetes/KubernetesUtil.java +++ b/backend/sdk/src/main/java/com/alibaba/higress/sdk/service/kubernetes/KubernetesUtil.java @@ -97,7 +97,8 @@ public static String normalizeDomainName(String name) { } public static String joinLabelSelectors(String... selectors) { - return String.join(Separators.COMMA, selectors); + return String.join(Separators.COMMA, + Arrays.stream(selectors).filter(StringUtils::isNotBlank).toArray(String[]::new)); } public static String buildDomainLabelSelector(String domainName) { diff --git a/backend/sdk/src/main/resources/plugins/basic-auth/spec.yaml b/backend/sdk/src/main/resources/plugins/basic-auth/spec.yaml index f6104610..f4413b1e 100644 --- a/backend/sdk/src/main/resources/plugins/basic-auth/spec.yaml +++ b/backend/sdk/src/main/resources/plugins/basic-auth/spec.yaml @@ -74,7 +74,7 @@ spec: example: allows: - consumer1 - - consumer2 + - consumer2 configSchema: openAPIV3Schema: type: object diff --git a/frontend/src/pages/layout.tsx b/frontend/src/pages/layout.tsx index ba9a7114..f1721db3 100644 --- a/frontend/src/pages/layout.tsx +++ b/frontend/src/pages/layout.tsx @@ -82,8 +82,9 @@ function findRouteByPath(route: Route, pathname?: string): Route | undefined { return route; } - if (route.children) { - for (const child of route.children) { + const childRoutes = route.routes || route.children; + if (childRoutes) { + for (const child of childRoutes) { const matchedRoute = findRouteByPath(child, pathname); if (matchedRoute) { return matchedRoute;