From e74d99b794e50a54b78a41934d56f13510c9a998 Mon Sep 17 00:00:00 2001 From: Sumit Kumar Date: Thu, 13 May 2021 11:59:43 +0530 Subject: [PATCH] fix NPE (#4448) fix NPE --- .../java/com/external/plugins/MongoPlugin.java | 18 +++++++++++++++++- .../com/external/plugins/MongoPluginTest.java | 7 ++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java b/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java index 96ac1c4a82..1a335e387e 100644 --- a/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java +++ b/app/server/appsmith-plugins/mongoPlugin/src/main/java/com/external/plugins/MongoPlugin.java @@ -590,6 +590,22 @@ public class MongoPlugin extends BasePlugin { } } + private boolean hostStringHasConnectionURIHead(String host) { + if (!StringUtils.isEmpty(host) && (host.contains("mongodb://") || host.contains("mongodb+srv"))) { + return true; + } + + return false; + } + + private boolean isHostStringConnectionURI(Endpoint endpoint) { + if (endpoint != null && hostStringHasConnectionURIHead(endpoint.getHost())) { + return true; + } + + return false; + } + @Override public Set validateDatasource(DatasourceConfiguration datasourceConfiguration) { Set invalids = new HashSet<>(); @@ -641,7 +657,7 @@ public class MongoPlugin extends BasePlugin { if (!CollectionUtils.isEmpty(endpoints)) { boolean usingUri = endpoints .stream() - .anyMatch(endPoint -> endPoint.getHost().matches(MONGO_URI_REGEX)); + .anyMatch(endPoint -> isHostStringConnectionURI(endPoint)); if (usingUri) { invalids.add("It seems that you are trying to use a mongo connection string URI. Please " + diff --git a/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginTest.java b/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginTest.java index 1709486140..cb0bd64724 100644 --- a/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginTest.java +++ b/app/server/appsmith-plugins/mongoPlugin/src/test/java/com/external/plugins/MongoPluginTest.java @@ -496,7 +496,12 @@ public class MongoPluginTest { @Test public void testErrorMessageOnNonSrvUri() { DatasourceConfiguration dsConfig = createDatasourceConfiguration(); - dsConfig.getEndpoints().get(0).setHost("mongodb://user:pass@url.net:1234,url.net:1234/dbName"); + List endpoints = new ArrayList<>(); + endpoints.add(new Endpoint("url", 123L)); + endpoints.add(null); + endpoints.add(new Endpoint(null, 123L)); + endpoints.add(new Endpoint("mongodb://user:pass@url.net:1234,url.net:1234/dbName", 123L)); + dsConfig.setEndpoints(endpoints); dsConfig.setProperties(List.of(new Property("Import from URI", "No"))); Mono> invalidsMono = Mono.just(pluginExecutor.validateDatasource(dsConfig));