From 43b13ebb2e5a6fdd62799c70e3f448c03dba4a44 Mon Sep 17 00:00:00 2001 From: Jared Rhizor Date: Tue, 25 May 2021 10:48:58 -0700 Subject: [PATCH] safer icon retrieval (#3592) --- .../DestinationDefinitionsHandler.java | 10 +++++++--- .../handlers/SourceDefinitionsHandler.java | 10 +++++++--- .../DestinationDefinitionsHandlerTest.java | 16 ++++------------ .../handlers/SourceDefinitionsHandlerTest.java | 18 +++++------------- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java b/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java index a9b2ef821a11..daf2ad07091a 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java +++ b/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java @@ -85,7 +85,7 @@ static DestinationDefinitionRead buildDestinationDefinitionRead(StandardDestinat .dockerImageTag(standardDestinationDefinition.getDockerImageTag()) .documentationUrl(new URI(standardDestinationDefinition.getDocumentationUrl())) .icon(loadIcon(standardDestinationDefinition.getIcon())); - } catch (URISyntaxException | NullPointerException | IOException e) { + } catch (URISyntaxException | NullPointerException e) { throw new KnownException(500, "Unable to process retrieved latest destination definitions list", e); } } @@ -161,8 +161,12 @@ public DestinationDefinitionRead updateDestinationDefinition(DestinationDefiniti return buildDestinationDefinitionRead(newDestination); } - public static String loadIcon(String name) throws IOException { - return name == null ? null : MoreResources.readResource("icons/" + name); + public static String loadIcon(String name) { + try { + return name == null ? null : MoreResources.readResource("icons/" + name); + } catch (IOException e) { + return null; + } } } diff --git a/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java b/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java index d7a3b2b17779..7a7e9b3eb676 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java +++ b/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java @@ -86,7 +86,7 @@ static SourceDefinitionRead buildSourceDefinitionRead(StandardSourceDefinition s .dockerImageTag(standardSourceDefinition.getDockerImageTag()) .documentationUrl(new URI(standardSourceDefinition.getDocumentationUrl())) .icon(loadIcon(standardSourceDefinition.getIcon())); - } catch (URISyntaxException | NullPointerException | IOException e) { + } catch (URISyntaxException | NullPointerException e) { throw new KnownException(500, "Unable to process retrieved latest source definitions list", e); } } @@ -158,8 +158,12 @@ public SourceDefinitionRead updateSourceDefinition(SourceDefinitionUpdate source return buildSourceDefinitionRead(newSource); } - public static String loadIcon(String name) throws IOException { - return name == null ? null : MoreResources.readResource("icons/" + name); + public static String loadIcon(String name) { + try { + return name == null ? null : MoreResources.readResource("icons/" + name); + } catch (IOException e) { + return null; + } } } diff --git a/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java b/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java index 2535e112b717..fdd7587f2293 100644 --- a/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java +++ b/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java @@ -102,7 +102,7 @@ void testListDestinations() throws JsonValidationException, IOException, URISynt .dockerRepository(destination.getDockerRepository()) .dockerImageTag(destination.getDockerImageTag()) .documentationUrl(new URI(destination.getDocumentationUrl())) - .icon(loadIcon(destination.getIcon())); + .icon(DestinationDefinitionsHandler.loadIcon(destination.getIcon())); final DestinationDefinitionRead expectedDestinationDefinitionRead2 = new DestinationDefinitionRead() .destinationDefinitionId(destination2.getDestinationDefinitionId()) @@ -110,7 +110,7 @@ void testListDestinations() throws JsonValidationException, IOException, URISynt .dockerRepository(destination2.getDockerRepository()) .dockerImageTag(destination2.getDockerImageTag()) .documentationUrl(new URI(destination2.getDocumentationUrl())) - .icon(loadIcon(destination2.getIcon())); + .icon(DestinationDefinitionsHandler.loadIcon(destination2.getIcon())); final DestinationDefinitionReadList actualDestinationDefinitionReadList = destinationHandler.listDestinationDefinitions(); @@ -131,7 +131,7 @@ void testGetDestination() throws JsonValidationException, ConfigNotFoundExceptio .dockerRepository(destination.getDockerRepository()) .dockerImageTag(destination.getDockerImageTag()) .documentationUrl(new URI(destination.getDocumentationUrl())) - .icon(loadIcon(destination.getIcon())); + .icon(DestinationDefinitionsHandler.loadIcon(destination.getIcon())); final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody = new DestinationDefinitionIdRequestBody() .destinationDefinitionId(destination.getDestinationDefinitionId()); @@ -159,7 +159,7 @@ void testCreateDestinationDefinition() throws URISyntaxException, IOException, J .dockerImageTag(destination.getDockerImageTag()) .documentationUrl(new URI(destination.getDocumentationUrl())) .destinationDefinitionId(destination.getDestinationDefinitionId()) - .icon(loadIcon(destination.getIcon())); + .icon(DestinationDefinitionsHandler.loadIcon(destination.getIcon())); final DestinationDefinitionRead actualRead = destinationHandler.createDestinationDefinition(create); @@ -212,12 +212,4 @@ void testHttpTimeout() throws IOException, InterruptedException { } - private static String loadIcon(String name) { - try { - return DestinationDefinitionsHandler.loadIcon(name); - } catch (IOException e) { - return "Error"; - } - } - } diff --git a/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java b/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java index d33c52108e4e..5bf8619de202 100644 --- a/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java +++ b/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java @@ -105,7 +105,7 @@ void testListSourceDefinitions() throws JsonValidationException, IOException, UR .dockerRepository(source.getDockerRepository()) .dockerImageTag(source.getDockerImageTag()) .documentationUrl(new URI(source.getDocumentationUrl())) - .icon(loadIcon(source.getIcon())); + .icon(SourceDefinitionsHandler.loadIcon(source.getIcon())); SourceDefinitionRead expectedSourceDefinitionRead2 = new SourceDefinitionRead() .sourceDefinitionId(source2.getSourceDefinitionId()) @@ -113,7 +113,7 @@ void testListSourceDefinitions() throws JsonValidationException, IOException, UR .dockerRepository(source.getDockerRepository()) .dockerImageTag(source.getDockerImageTag()) .documentationUrl(new URI(source.getDocumentationUrl())) - .icon(loadIcon(source.getIcon())); + .icon(SourceDefinitionsHandler.loadIcon(source.getIcon())); final SourceDefinitionReadList actualSourceDefinitionReadList = sourceHandler.listSourceDefinitions(); @@ -133,7 +133,7 @@ void testGetSourceDefinition() throws JsonValidationException, ConfigNotFoundExc .dockerRepository(source.getDockerRepository()) .dockerImageTag(source.getDockerImageTag()) .documentationUrl(new URI(source.getDocumentationUrl())) - .icon(loadIcon(source.getIcon())); + .icon(SourceDefinitionsHandler.loadIcon(source.getIcon())); final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody = new SourceDefinitionIdRequestBody().sourceDefinitionId(source.getSourceDefinitionId()); @@ -161,7 +161,7 @@ void testCreateSourceDefinition() throws URISyntaxException, IOException, JsonVa .dockerImageTag(source.getDockerImageTag()) .documentationUrl(new URI(source.getDocumentationUrl())) .sourceDefinitionId(source.getSourceDefinitionId()) - .icon(loadIcon(source.getIcon())); + .icon(SourceDefinitionsHandler.loadIcon(source.getIcon())); final SourceDefinitionRead actualRead = sourceHandler.createSourceDefinition(create); @@ -215,7 +215,7 @@ void testHttpTimeout() throws IOException, InterruptedException { @Test @DisplayName("Icon should contain data") void testIconHoldsData() { - final String icon = loadIcon(source.getIcon()); + final String icon = SourceDefinitionsHandler.loadIcon(source.getIcon()); assertNotNull(icon); assert (icon.length() > 3000); assert (icon.length() < 6000); @@ -223,12 +223,4 @@ void testIconHoldsData() { } - private static String loadIcon(String name) { - try { - return SourceDefinitionsHandler.loadIcon(name); - } catch (IOException e) { - return "Error"; - } - } - }