From dc636b8fbc126496a6c424f4ecde81624c560ffa Mon Sep 17 00:00:00 2001 From: Fabian Steeg Date: Fri, 10 Mar 2023 14:37:31 +0100 Subject: [PATCH] Reset `inputUsed` after processing to fix reusing opener A second open-http in a flux resulted in MalformedURLException, see: https://gitlab.com/oersi/oersi-etl/-/merge_requests/284 --- .../src/main/java/org/metafacture/io/HttpOpener.java | 3 +++ .../src/test/java/org/metafacture/io/HttpOpenerTest.java | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/metafacture-io/src/main/java/org/metafacture/io/HttpOpener.java b/metafacture-io/src/main/java/org/metafacture/io/HttpOpener.java index 5de3724bb..307a65482 100644 --- a/metafacture-io/src/main/java/org/metafacture/io/HttpOpener.java +++ b/metafacture-io/src/main/java/org/metafacture/io/HttpOpener.java @@ -265,6 +265,9 @@ public void process(final String input) { catch (final IOException e) { throw new MetafactureException(e); } + finally { + inputUsed = false; + } } private String getInput(final String input, final String value) { diff --git a/metafacture-io/src/test/java/org/metafacture/io/HttpOpenerTest.java b/metafacture-io/src/test/java/org/metafacture/io/HttpOpenerTest.java index f86cb19c0..3ef2974a0 100644 --- a/metafacture-io/src/test/java/org/metafacture/io/HttpOpenerTest.java +++ b/metafacture-io/src/test/java/org/metafacture/io/HttpOpenerTest.java @@ -39,6 +39,8 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; +import static org.mockito.Mockito.times; + import java.io.IOException; import java.io.Reader; import java.util.Arrays; @@ -318,11 +320,15 @@ private void shouldPerformRequest(final String input, final HttpOpener.Method me WireMock.stubFor(stub); opener.process(String.format(input, baseUrl)); + + // use the opener a second time in a workflow: + opener.process(String.format(input, baseUrl)); + opener.closeStream(); WireMock.verify(request); - Mockito.verify(receiver).process(processedObject.capture()); + Mockito.verify(receiver, times(2)).process(processedObject.capture()); Assert.assertEquals(responseBody, ResourceUtil.readAll(processedObject.getValue())); }