From c007b12016909b9ff6d88993875c9eec40c545ac Mon Sep 17 00:00:00 2001 From: Luis Pabon Date: Thu, 8 Aug 2024 15:52:04 -0400 Subject: [PATCH 1/6] Update OpenApiReaderImplementation.java Add closing statement before returning the output of openAsString --- .../external/openapi/OpenApiReaderImplementation.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java index c028aeb4d..d31ad2d60 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java @@ -29,8 +29,11 @@ public static OpenApiReaderImplementation getInstance() { public String openAsString(String fileName) throws UnableToReadOpenApiSpecificationException { InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName); try { - return new String( - Objects.requireNonNull(stream).readAllBytes(), StandardCharsets.UTF_8); + var out = + new String( + Objects.requireNonNull(stream).readAllBytes(), StandardCharsets.UTF_8); + stream.close(); + return out; } catch (IOException | NullPointerException e) { throw new UnableToReadOpenApiSpecificationException( "Failed to open OpenAPI specification for " + fileName, e); From 977cd7c8b1e1c5b239309c9068ef2351555af0c0 Mon Sep 17 00:00:00 2001 From: Luis Pabon Date: Thu, 8 Aug 2024 15:53:53 -0400 Subject: [PATCH 2/6] Close inputStreams quietly on rule engines --- .../ruleengine/transformation/TransformationRuleEngine.java | 2 ++ .../etor/ruleengine/validation/ValidationRuleEngine.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java index bc5998991..e3a5f4f20 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; import javax.inject.Inject; +import org.apache.commons.io.IOUtils; /** Implements the RuleEngine interface. It represents a rule engine for transformations. */ public class TransformationRuleEngine implements RuleEngine { @@ -53,6 +54,7 @@ public void ensureRulesLoaded() throws RuleLoaderException { ruleLoader.loadRules(resourceStream, new TypeReference<>() {}); rules.addAll(parsedRules); rulesLoaded = true; + IOUtils.closeQuietly(resourceStream); } } } diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java index 209da7c72..d2b36c5bf 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; import javax.inject.Inject; +import org.apache.commons.io.IOUtils; /** Implements the RuleEngine interface. It represents a rule engine for validations. */ public class ValidationRuleEngine implements RuleEngine { @@ -53,6 +54,7 @@ public void ensureRulesLoaded() throws RuleLoaderException { ruleLoader.loadRules(resourceStream, new TypeReference<>() {}); rules.addAll(parsedRules); rulesLoaded = true; + IOUtils.closeQuietly(resourceStream); } } } From 9a0552e060418afbfb422f7afe2d53794cbce206 Mon Sep 17 00:00:00 2001 From: Luis Pabon Date: Fri, 9 Aug 2024 15:58:30 -0400 Subject: [PATCH 3/6] Used a managed scope on the InputStream, and added a parameter to openAsString --- .../gov/hhs/cdc/trustedintermediary/OpenApi.java | 4 +++- .../auth/AuthDomainRegistration.java | 4 +++- .../etor/EtorDomainRegistration.java | 4 +++- .../openapi/OpenApiReaderImplementation.java | 13 ++++++------- .../trustedintermediary/wrappers/OpenApiReader.java | 4 +++- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java b/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java index 4ba9939e0..6811a3fa1 100644 --- a/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java +++ b/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java @@ -5,6 +5,7 @@ import gov.hhs.cdc.trustedintermediary.external.openapi.OpenApiReaderImplementation; import gov.hhs.cdc.trustedintermediary.wrappers.YamlCombiner; import gov.hhs.cdc.trustedintermediary.wrappers.YamlCombinerException; +import java.nio.charset.StandardCharsets; import java.util.Set; /** Directs the construction of a full YAML OpenAPI specification */ @@ -37,6 +38,7 @@ public String generateApiDocumentation(final Set openApiSpecifications) String getBaselineDocumentation() throws UnableToReadOpenApiSpecificationException { String fileName = "openapi_base.yaml"; - return OpenApiReaderImplementation.getInstance().openAsString(fileName); + return OpenApiReaderImplementation.getInstance() + .openAsString(fileName, StandardCharsets.UTF_8); } } diff --git a/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java b/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java index 8bc133fca..c5fe2b9e5 100644 --- a/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java +++ b/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java @@ -10,6 +10,7 @@ import gov.hhs.cdc.trustedintermediary.external.openapi.OpenApiReaderImplementation; import gov.hhs.cdc.trustedintermediary.wrappers.InvalidTokenException; import gov.hhs.cdc.trustedintermediary.wrappers.Logger; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.function.Function; import javax.inject.Inject; @@ -41,7 +42,8 @@ public Map> domainRegistra @Override public String openApiSpecification() throws UnableToReadOpenApiSpecificationException { String fileName = "openapi_auth.yaml"; - return OpenApiReaderImplementation.getInstance().openAsString(fileName); + return OpenApiReaderImplementation.getInstance() + .openAsString(fileName, StandardCharsets.UTF_8); } DomainResponse handleAuth(DomainRequest request) { diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java index 4c4b0c897..7023092ed 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java @@ -47,6 +47,7 @@ import gov.hhs.cdc.trustedintermediary.wrappers.FhirParseException; import gov.hhs.cdc.trustedintermediary.wrappers.HapiFhir; import gov.hhs.cdc.trustedintermediary.wrappers.Logger; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -143,7 +144,8 @@ public Map> domainRegistra @Override public String openApiSpecification() throws UnableToReadOpenApiSpecificationException { String fileName = "openapi_etor.yaml"; - return OpenApiReaderImplementation.getInstance().openAsString(fileName); + return OpenApiReaderImplementation.getInstance() + .openAsString(fileName, StandardCharsets.UTF_8); } DomainResponse handleOrders(DomainRequest request) { diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java index d31ad2d60..704987691 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java @@ -4,7 +4,7 @@ import gov.hhs.cdc.trustedintermediary.wrappers.OpenApiReader; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.util.Objects; /** @@ -22,16 +22,15 @@ public static OpenApiReaderImplementation getInstance() { * Loads the stream of an OpenApi file and returns the output as a string. * * @param fileName Name of the file to load + * @param charset Charset used for the output string * @return File contents as string * @throws UnableToReadOpenApiSpecificationException If there is an issue loading the Api file */ @Override - public String openAsString(String fileName) throws UnableToReadOpenApiSpecificationException { - InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName); - try { - var out = - new String( - Objects.requireNonNull(stream).readAllBytes(), StandardCharsets.UTF_8); + public String openAsString(String fileName, Charset charset) + throws UnableToReadOpenApiSpecificationException { + try (InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName)) { + var out = new String(Objects.requireNonNull(stream).readAllBytes(), charset); stream.close(); return out; } catch (IOException | NullPointerException e) { diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java index ac0318876..eb5953800 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java @@ -1,8 +1,10 @@ package gov.hhs.cdc.trustedintermediary.wrappers; import gov.hhs.cdc.trustedintermediary.domainconnector.UnableToReadOpenApiSpecificationException; +import java.nio.charset.Charset; /** Wrapper for classes that load OpenApi documentation. */ public interface OpenApiReader { - String openAsString(String fileName) throws UnableToReadOpenApiSpecificationException; + String openAsString(String fileName, Charset charset) + throws UnableToReadOpenApiSpecificationException; } From 7f2c7e1702233daaf01059eb8260865b8884df40 Mon Sep 17 00:00:00 2001 From: Luis Pabon Date: Mon, 12 Aug 2024 10:27:43 -0400 Subject: [PATCH 4/6] Update OpenApiReaderImplementation.java Remove stream.close from scoped InputStream --- .../external/openapi/OpenApiReaderImplementation.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java index 704987691..f7709f6ba 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java @@ -30,9 +30,7 @@ public static OpenApiReaderImplementation getInstance() { public String openAsString(String fileName, Charset charset) throws UnableToReadOpenApiSpecificationException { try (InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName)) { - var out = new String(Objects.requireNonNull(stream).readAllBytes(), charset); - stream.close(); - return out; + return new String(Objects.requireNonNull(stream).readAllBytes(), charset); } catch (IOException | NullPointerException e) { throw new UnableToReadOpenApiSpecificationException( "Failed to open OpenAPI specification for " + fileName, e); From df1fbd2f8ac03e04760ada97185a24241ce4f3b1 Mon Sep 17 00:00:00 2001 From: Luis Pabon Date: Mon, 12 Aug 2024 10:30:58 -0400 Subject: [PATCH 5/6] Revert new parameter on OpenApiReader.openAsString --- .../java/gov/hhs/cdc/trustedintermediary/OpenApi.java | 4 +--- .../trustedintermediary/auth/AuthDomainRegistration.java | 4 +--- .../trustedintermediary/etor/EtorDomainRegistration.java | 4 +--- .../external/openapi/OpenApiReaderImplementation.java | 9 ++++----- .../cdc/trustedintermediary/wrappers/OpenApiReader.java | 4 +--- 5 files changed, 8 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java b/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java index 6811a3fa1..4ba9939e0 100644 --- a/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java +++ b/app/src/main/java/gov/hhs/cdc/trustedintermediary/OpenApi.java @@ -5,7 +5,6 @@ import gov.hhs.cdc.trustedintermediary.external.openapi.OpenApiReaderImplementation; import gov.hhs.cdc.trustedintermediary.wrappers.YamlCombiner; import gov.hhs.cdc.trustedintermediary.wrappers.YamlCombinerException; -import java.nio.charset.StandardCharsets; import java.util.Set; /** Directs the construction of a full YAML OpenAPI specification */ @@ -38,7 +37,6 @@ public String generateApiDocumentation(final Set openApiSpecifications) String getBaselineDocumentation() throws UnableToReadOpenApiSpecificationException { String fileName = "openapi_base.yaml"; - return OpenApiReaderImplementation.getInstance() - .openAsString(fileName, StandardCharsets.UTF_8); + return OpenApiReaderImplementation.getInstance().openAsString(fileName); } } diff --git a/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java b/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java index c5fe2b9e5..8bc133fca 100644 --- a/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java +++ b/app/src/main/java/gov/hhs/cdc/trustedintermediary/auth/AuthDomainRegistration.java @@ -10,7 +10,6 @@ import gov.hhs.cdc.trustedintermediary.external.openapi.OpenApiReaderImplementation; import gov.hhs.cdc.trustedintermediary.wrappers.InvalidTokenException; import gov.hhs.cdc.trustedintermediary.wrappers.Logger; -import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.function.Function; import javax.inject.Inject; @@ -42,8 +41,7 @@ public Map> domainRegistra @Override public String openApiSpecification() throws UnableToReadOpenApiSpecificationException { String fileName = "openapi_auth.yaml"; - return OpenApiReaderImplementation.getInstance() - .openAsString(fileName, StandardCharsets.UTF_8); + return OpenApiReaderImplementation.getInstance().openAsString(fileName); } DomainResponse handleAuth(DomainRequest request) { diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java index 7023092ed..4c4b0c897 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/EtorDomainRegistration.java @@ -47,7 +47,6 @@ import gov.hhs.cdc.trustedintermediary.wrappers.FhirParseException; import gov.hhs.cdc.trustedintermediary.wrappers.HapiFhir; import gov.hhs.cdc.trustedintermediary.wrappers.Logger; -import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -144,8 +143,7 @@ public Map> domainRegistra @Override public String openApiSpecification() throws UnableToReadOpenApiSpecificationException { String fileName = "openapi_etor.yaml"; - return OpenApiReaderImplementation.getInstance() - .openAsString(fileName, StandardCharsets.UTF_8); + return OpenApiReaderImplementation.getInstance().openAsString(fileName); } DomainResponse handleOrders(DomainRequest request) { diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java index f7709f6ba..c28e8d7e0 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java @@ -4,7 +4,7 @@ import gov.hhs.cdc.trustedintermediary.wrappers.OpenApiReader; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Objects; /** @@ -22,15 +22,14 @@ public static OpenApiReaderImplementation getInstance() { * Loads the stream of an OpenApi file and returns the output as a string. * * @param fileName Name of the file to load - * @param charset Charset used for the output string * @return File contents as string * @throws UnableToReadOpenApiSpecificationException If there is an issue loading the Api file */ @Override - public String openAsString(String fileName, Charset charset) - throws UnableToReadOpenApiSpecificationException { + public String openAsString(String fileName) throws UnableToReadOpenApiSpecificationException { try (InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName)) { - return new String(Objects.requireNonNull(stream).readAllBytes(), charset); + return new String( + Objects.requireNonNull(stream).readAllBytes(), StandardCharsets.UTF_8); } catch (IOException | NullPointerException e) { throw new UnableToReadOpenApiSpecificationException( "Failed to open OpenAPI specification for " + fileName, e); diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java index eb5953800..ac0318876 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/wrappers/OpenApiReader.java @@ -1,10 +1,8 @@ package gov.hhs.cdc.trustedintermediary.wrappers; import gov.hhs.cdc.trustedintermediary.domainconnector.UnableToReadOpenApiSpecificationException; -import java.nio.charset.Charset; /** Wrapper for classes that load OpenApi documentation. */ public interface OpenApiReader { - String openAsString(String fileName, Charset charset) - throws UnableToReadOpenApiSpecificationException; + String openAsString(String fileName) throws UnableToReadOpenApiSpecificationException; } From 6ff3051a09b6df0fe22120172f80327b13b4b291 Mon Sep 17 00:00:00 2001 From: Luis Pabon Date: Mon, 12 Aug 2024 10:42:38 -0400 Subject: [PATCH 6/6] Use try-with-resources for the InputStream uses --- .../TransformationRuleEngine.java | 18 +++++++++--------- .../validation/ValidationRuleEngine.java | 18 +++++++++--------- .../openapi/OpenApiReaderImplementation.java | 4 +--- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java index e3a5f4f20..6062fa3f8 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/transformation/TransformationRuleEngine.java @@ -7,11 +7,11 @@ import gov.hhs.cdc.trustedintermediary.wrappers.Logger; import gov.hhs.cdc.trustedintermediary.wrappers.formatter.TypeReference; import java.io.FileNotFoundException; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; -import org.apache.commons.io.IOUtils; /** Implements the RuleEngine interface. It represents a rule engine for transformations. */ public class TransformationRuleEngine implements RuleEngine { @@ -41,20 +41,20 @@ public void ensureRulesLoaded() throws RuleLoaderException { if (!rulesLoaded) { synchronized (rules) { if (!rulesLoaded) { - InputStream resourceStream = + try (InputStream stream = getClass() .getClassLoader() - .getResourceAsStream(ruleDefinitionsFileName); - if (resourceStream == null) { + .getResourceAsStream(ruleDefinitionsFileName)) { + List parsedRules = + ruleLoader.loadRules(stream, new TypeReference<>() {}); + rules.addAll(parsedRules); + rulesLoaded = true; + + } catch (IOException | NullPointerException e) { throw new RuleLoaderException( "File not found: " + ruleDefinitionsFileName, new FileNotFoundException()); } - List parsedRules = - ruleLoader.loadRules(resourceStream, new TypeReference<>() {}); - rules.addAll(parsedRules); - rulesLoaded = true; - IOUtils.closeQuietly(resourceStream); } } } diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java index d2b36c5bf..496f69f0b 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/ruleengine/validation/ValidationRuleEngine.java @@ -7,11 +7,11 @@ import gov.hhs.cdc.trustedintermediary.wrappers.Logger; import gov.hhs.cdc.trustedintermediary.wrappers.formatter.TypeReference; import java.io.FileNotFoundException; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; -import org.apache.commons.io.IOUtils; /** Implements the RuleEngine interface. It represents a rule engine for validations. */ public class ValidationRuleEngine implements RuleEngine { @@ -41,20 +41,20 @@ public void ensureRulesLoaded() throws RuleLoaderException { if (!rulesLoaded) { synchronized (rules) { if (!rulesLoaded) { - InputStream resourceStream = + try (InputStream stream = getClass() .getClassLoader() - .getResourceAsStream(ruleDefinitionsFileName); - if (resourceStream == null) { + .getResourceAsStream(ruleDefinitionsFileName)) { + List parsedRules = + ruleLoader.loadRules(stream, new TypeReference<>() {}); + rules.addAll(parsedRules); + rulesLoaded = true; + + } catch (IOException | NullPointerException e) { throw new RuleLoaderException( "File not found: " + ruleDefinitionsFileName, new FileNotFoundException()); } - List parsedRules = - ruleLoader.loadRules(resourceStream, new TypeReference<>() {}); - rules.addAll(parsedRules); - rulesLoaded = true; - IOUtils.closeQuietly(resourceStream); } } } diff --git a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java index c28e8d7e0..b4ec3834e 100644 --- a/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java +++ b/shared/src/main/java/gov/hhs/cdc/trustedintermediary/external/openapi/OpenApiReaderImplementation.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.Objects; /** * Basic implementation of a Reader for OpenApi to promote code reuse. If additional functionality @@ -28,8 +27,7 @@ public static OpenApiReaderImplementation getInstance() { @Override public String openAsString(String fileName) throws UnableToReadOpenApiSpecificationException { try (InputStream stream = getClass().getClassLoader().getResourceAsStream(fileName)) { - return new String( - Objects.requireNonNull(stream).readAllBytes(), StandardCharsets.UTF_8); + return new String(stream.readAllBytes(), StandardCharsets.UTF_8); } catch (IOException | NullPointerException e) { throw new UnableToReadOpenApiSpecificationException( "Failed to open OpenAPI specification for " + fileName, e);