From 83c56b5ac9b287d5b27098e4cbc9d0843e7bb576 Mon Sep 17 00:00:00 2001 From: Avishka-Shamendra Date: Fri, 28 Feb 2025 13:59:16 +0530 Subject: [PATCH 1/2] Fix https://github.com/wso2/api-manager/issues/3730 and https://github.com/wso2/api-manager/issues/3727 --- .../java/org/wso2/carbon/apimgt/api/model/Environment.java | 1 + .../java/org/wso2/carbon/apimgt/impl/APIConsumerImpl.java | 5 +++-- .../main/java/org/wso2/carbon/apimgt/impl/utils/APIUtil.java | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/model/Environment.java b/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/model/Environment.java index 017d6ad238fd..501b44934fbd 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/model/Environment.java +++ b/components/apimgt/org.wso2.carbon.apimgt.api/src/main/java/org/wso2/carbon/apimgt/api/model/Environment.java @@ -83,6 +83,7 @@ public Environment(Environment environment) { this.additionalProperties = new HashMap<>(environment.additionalProperties); this.visibilityRoles = environment.visibilityRoles; this.visibility = environment.visibility; + this.permissions = environment.permissions; } private GatewayVisibilityPermissionConfigurationDTO permissions = new GatewayVisibilityPermissionConfigurationDTO(); diff --git a/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIConsumerImpl.java b/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIConsumerImpl.java index 9d966c17416e..eacfa8cf2a47 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIConsumerImpl.java +++ b/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/APIConsumerImpl.java @@ -162,6 +162,7 @@ import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; @@ -4780,11 +4781,11 @@ public static boolean hasIntersection(String[] arr1, String[] arr2) { Set set = new HashSet<>(); for (String element : arr1) { - set.add(element); + set.add(element.toLowerCase(Locale.ENGLISH)); } for (String element : arr2) { - if (set.contains(element)) { + if (set.contains(element.toLowerCase(Locale.ENGLISH))) { return true; } } diff --git a/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/utils/APIUtil.java b/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/utils/APIUtil.java index c0575a24dbe8..7c9aec611ef5 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/utils/APIUtil.java +++ b/components/apimgt/org.wso2.carbon.apimgt.impl/src/main/java/org/wso2/carbon/apimgt/impl/utils/APIUtil.java @@ -5374,11 +5374,11 @@ public static boolean hasIntersection(String[] arr1, String[] arr2) { Set set = new HashSet<>(); for (String element : arr1) { - set.add(element); + set.add(element.toLowerCase(Locale.ENGLISH)); } for (String element : arr2) { - if (set.contains(element)) { + if (set.contains(element.toLowerCase(Locale.ENGLISH))) { return true; } } From ebb7e76aa15a7976946ceb1af36e0f77070029eb Mon Sep 17 00:00:00 2001 From: Avishka-Shamendra Date: Fri, 28 Feb 2025 15:41:39 +0530 Subject: [PATCH 2/2] Close unclosed resource streams --- .../apimgt/governance/rest/api/SwaggerYamlApi.java | 10 ++++++---- .../apimgt/rest/api/admin/v1/SwaggerYamlApi.java | 10 +++++++--- .../apimgt/rest/api/gateway/SwaggerYamlApi.java | 12 ++++++++---- .../apimgt/rest/api/publisher/v1/SwaggerYamlApi.java | 10 +++++++--- .../apimgt/rest/api/store/v1/SwaggerYamlApi.java | 10 +++++++--- 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/components/apimgt/org.wso2.carbon.apimgt.governance.rest.api/src/main/java/org/wso2/carbon/apimgt/governance/rest/api/SwaggerYamlApi.java b/components/apimgt/org.wso2.carbon.apimgt.governance.rest.api/src/main/java/org/wso2/carbon/apimgt/governance/rest/api/SwaggerYamlApi.java index a36f5539cd98..08298eb1fa5b 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.governance.rest.api/src/main/java/org/wso2/carbon/apimgt/governance/rest/api/SwaggerYamlApi.java +++ b/components/apimgt/org.wso2.carbon.apimgt.governance.rest.api/src/main/java/org/wso2/carbon/apimgt/governance/rest/api/SwaggerYamlApi.java @@ -28,6 +28,7 @@ import org.wso2.carbon.apimgt.rest.api.util.utils.RestApiUtil; import java.io.IOException; +import java.io.InputStream; import java.nio.charset.StandardCharsets; import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -74,10 +75,11 @@ public Response swaggerYamlGet() throws APIManagementException { if (openAPIDef == null) { synchronized (LOCK_GOV_OPENAPI_DEF) { if (openAPIDef == null) { - String definition = IOUtils - .toString(this.getClass().getClassLoader().getResourceAsStream("governance-api.yaml"), - StandardCharsets.UTF_8); - openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + try (InputStream defStream = this.getClass() + .getClassLoader().getResourceAsStream("governance-api.yaml")) { + String definition = IOUtils.toString(defStream, StandardCharsets.UTF_8); + openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + } } } } diff --git a/components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/SwaggerYamlApi.java b/components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/SwaggerYamlApi.java index cf76c0a9721c..b54a8b239403 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/SwaggerYamlApi.java +++ b/components/apimgt/org.wso2.carbon.apimgt.rest.api.admin.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/admin/v1/SwaggerYamlApi.java @@ -30,6 +30,8 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Response; import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; @Path("/swagger.yaml") @Consumes({ "text/yaml" }) @@ -62,9 +64,11 @@ public Response swaggerYamlGet() throws APIManagementException { if (openAPIDef == null) { synchronized (LOCK_ADMIN_OPENAPI_DEF) { if (openAPIDef == null) { - String definition = IOUtils - .toString(this.getClass().getResourceAsStream("/admin-api.yaml"), "UTF-8"); - openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + try (InputStream defStream = this.getClass() + .getClassLoader().getResourceAsStream("admin-api.yaml")) { + String definition = IOUtils.toString(defStream, StandardCharsets.UTF_8); + openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + } } } } diff --git a/components/apimgt/org.wso2.carbon.apimgt.rest.api.gateway/src/main/java/org/wso2/carbon/apimgt/rest/api/gateway/SwaggerYamlApi.java b/components/apimgt/org.wso2.carbon.apimgt.rest.api.gateway/src/main/java/org/wso2/carbon/apimgt/rest/api/gateway/SwaggerYamlApi.java index f78f049f4558..cfa76d040349 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.rest.api.gateway/src/main/java/org/wso2/carbon/apimgt/rest/api/gateway/SwaggerYamlApi.java +++ b/components/apimgt/org.wso2.carbon.apimgt.rest.api.gateway/src/main/java/org/wso2/carbon/apimgt/rest/api/gateway/SwaggerYamlApi.java @@ -22,10 +22,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.apimgt.api.APIManagementException; -import org.wso2.carbon.apimgt.impl.definitions.OAS2Parser; +import org.wso2.carbon.apimgt.impl.definitions.OAS3Parser; import org.wso2.carbon.apimgt.rest.api.util.utils.RestApiUtil; import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -63,9 +65,11 @@ public Response swaggerYamlGet() throws APIManagementException { if (openAPIDef == null) { synchronized (LOCK_STORE_OPENAPI_DEF) { if (openAPIDef == null) { - String definition = IOUtils - .toString(this.getClass().getResourceAsStream("/gateway-api.yaml"), "UTF-8"); - openAPIDef = new OAS2Parser().removeExamplesFromSwagger(definition); + try (InputStream defStream = this.getClass() + .getClassLoader().getResourceAsStream("gateway-api.yaml")) { + String definition = IOUtils.toString(defStream, StandardCharsets.UTF_8); + openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + } } } } diff --git a/components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/SwaggerYamlApi.java b/components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/SwaggerYamlApi.java index 8e856c0c3ddc..2c439a90fb3a 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/SwaggerYamlApi.java +++ b/components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/publisher/v1/SwaggerYamlApi.java @@ -28,6 +28,8 @@ import org.wso2.carbon.apimgt.rest.api.util.utils.RestApiUtil; import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -66,9 +68,11 @@ public Response swaggerYamlGet() throws APIManagementException { if (openAPIDef == null) { synchronized (LOCK_PUBLISHER_OPENAPI_DEF) { if (openAPIDef == null) { - String definition = IOUtils - .toString(this.getClass().getResourceAsStream("/publisher-api.yaml"), "UTF-8"); - openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + try (InputStream defStream = this.getClass() + .getClassLoader().getResourceAsStream("publisher-api.yaml")) { + String definition = IOUtils.toString(defStream, StandardCharsets.UTF_8); + openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + } } } } diff --git a/components/apimgt/org.wso2.carbon.apimgt.rest.api.store.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/store/v1/SwaggerYamlApi.java b/components/apimgt/org.wso2.carbon.apimgt.rest.api.store.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/store/v1/SwaggerYamlApi.java index 6e12e244f7d7..8516f26b1089 100644 --- a/components/apimgt/org.wso2.carbon.apimgt.rest.api.store.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/store/v1/SwaggerYamlApi.java +++ b/components/apimgt/org.wso2.carbon.apimgt.rest.api.store.v1/src/main/java/org/wso2/carbon/apimgt/rest/api/store/v1/SwaggerYamlApi.java @@ -28,6 +28,8 @@ import org.wso2.carbon.apimgt.rest.api.util.utils.RestApiUtil; import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -67,9 +69,11 @@ public Response swaggerYamlGet() throws APIManagementException { if (openAPIDef == null) { synchronized (LOCK_STORE_OPENAPI_DEF) { if (openAPIDef == null) { - String definition = IOUtils - .toString(this.getClass().getResourceAsStream("/devportal-api.yaml"), "UTF-8"); - openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + try (InputStream defStream = this.getClass() + .getClassLoader().getResourceAsStream("devportal-api.yaml")) { + String definition = IOUtils.toString(defStream, StandardCharsets.UTF_8); + openAPIDef = new OAS3Parser().removeExamplesFromOpenAPI(definition); + } } } }