From e76213ab70aa3844a030e7047569f56472b24dd7 Mon Sep 17 00:00:00 2001 From: yan chen Date: Mon, 29 May 2023 01:05:08 -0400 Subject: [PATCH 1/2] fixes #25 --- pom.xml | 2 +- .../openapi/validation/OpenApiValidator.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index f6d9d6b..b1c98d0 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ 4.0.0 com.mservicetech openapi-schema-validation - 2.0.6 + 2.0.7 jar openapi schema for openpai 3.* https://github.com/mservicetech/openapi-schema-validation diff --git a/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java b/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java index f22d6db..e46d2a4 100644 --- a/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java +++ b/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java @@ -63,6 +63,7 @@ public OpenApiValidator() { spec = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n")); openApiHelper = new OpenApiHelper(spec); schemaValidator = new SchemaValidator(openApiHelper.openApi3); + in.close(); } catch (Exception e) { logger.error("initial failed:" + e); } @@ -74,10 +75,14 @@ public OpenApiValidator() { * @param openapiPath The schema file name and path to use when validating request bodies */ public OpenApiValidator(String openapiPath) { - InputStream in = this.getClass().getClassLoader().getResourceAsStream(openapiPath); - spec = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n")); - openApiHelper = new OpenApiHelper(spec); - schemaValidator = new SchemaValidator(openApiHelper.openApi3); + try (InputStream in = this.getClass().getClassLoader().getResourceAsStream(openapiPath); + BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8))) { + spec = reader.lines().collect(Collectors.joining("\n")); + openApiHelper = new OpenApiHelper(spec); + schemaValidator = new SchemaValidator(openApiHelper.openApi3); + } catch (IOException e) { + logger.error("initial failed:" + e); + } } /** From f3b6a15a9c26c93011d0f9852bfc2cf1d01a9896 Mon Sep 17 00:00:00 2001 From: yan chen Date: Mon, 29 May 2023 12:53:45 -0400 Subject: [PATCH 2/2] fix the code for inputstream close to move to finally block --- .../openapi/validation/OpenApiValidator.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java b/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java index e46d2a4..e1c9784 100644 --- a/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java +++ b/src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java @@ -52,20 +52,28 @@ public class OpenApiValidator { * The default construct will try to load openapi.yml file from classpath */ public OpenApiValidator() { + InputStream in = this.getClass().getClassLoader().getResourceAsStream(OPENAPI_YAML_CONFIG);; try { - InputStream in = this.getClass().getClassLoader().getResourceAsStream(OPENAPI_YAML_CONFIG); if (in == null) { in = this.getClass().getClassLoader().getResourceAsStream(OPENAPI_YML_CONFIG); if (in==null) { - throw new IOException("cannot load openapi spec file"); + throw new IOException("Cannot load openapi spec file"); } } spec = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n")); openApiHelper = new OpenApiHelper(spec); schemaValidator = new SchemaValidator(openApiHelper.openApi3); - in.close(); - } catch (Exception e) { - logger.error("initial failed:" + e); + } catch (IOException e) { + logger.error("Initial failed:" + e); + } + finally { + try { + if( in!=null ) { + in.close(); + } + } catch(IOException e) { + logger.error(" Failed to close input stream:" + e); + } } }