From 01d808ca65152002c040d365d00cb4285d8b46b4 Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Tue, 28 Dec 2021 19:19:33 +0300 Subject: [PATCH] NPE fix --- .../navigator/impl/WebServiceNavigator.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/impl/WebServiceNavigator.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/impl/WebServiceNavigator.java index 7f948c489a..ef53ce9b37 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/impl/WebServiceNavigator.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/impl/WebServiceNavigator.java @@ -21,7 +21,10 @@ import io.cloudbeaver.DBWebException; import io.cloudbeaver.model.WebCommandContext; import io.cloudbeaver.model.WebConnectionInfo; import io.cloudbeaver.model.session.WebSession; -import io.cloudbeaver.service.navigator.*; +import io.cloudbeaver.service.navigator.DBWServiceNavigator; +import io.cloudbeaver.service.navigator.WebCatalog; +import io.cloudbeaver.service.navigator.WebNavigatorNodeInfo; +import io.cloudbeaver.service.navigator.WebStructContainers; import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import org.jkiss.dbeaver.DBException; @@ -172,12 +175,15 @@ public class WebServiceNavigator implements DBWServiceNavigator { DBPDataSource dataSource = connection.getDataSource(); DBRProgressMonitor monitor = connection.getSession().getProgressMonitor(); DBCExecutionContext executionContext = DBUtils.getDefaultContext(connection.getDataSource(), false); - DBCExecutionContextDefaults contextDefaults = executionContext.getContextDefaults(); + if (executionContext == null) { + throw new DBWebException("No default execution context for " + connection.getName()); + } + DBCExecutionContextDefaults contextDefaults = executionContext.getContextDefaults(); WebStructContainers structContainers = new WebStructContainers(); - structContainers.setSupportsCatalogChange(contextDefaults.supportsCatalogChange()); - structContainers.setSupportsSchemaChange(contextDefaults.supportsSchemaChange()); + structContainers.setSupportsCatalogChange(contextDefaults != null && contextDefaults.supportsCatalogChange()); + structContainers.setSupportsSchemaChange(contextDefaults != null && contextDefaults.supportsSchemaChange()); List nodes = this.getCatalogs( monitor, @@ -199,7 +205,7 @@ public class WebServiceNavigator implements DBWServiceNavigator { if (catalogObjectInfo != null) { WebCatalog webCatalog = new WebCatalog(catalogObjectInfo); - if (contextDefaults.supportsSchemaChange()) { + if (contextDefaults != null && contextDefaults.supportsSchemaChange()) { try { List schemasList = webCatalog.getSchemaList(); Collection objectsCollection = ((DBSObjectContainer) node).getChildren(monitor); @@ -224,7 +230,7 @@ public class WebServiceNavigator implements DBWServiceNavigator { catalogList.add(webCatalog); } - } else if(node instanceof DBSSchema && contextDefaults.supportsSchemaChange()) { + } else if(node instanceof DBSSchema && contextDefaults != null && contextDefaults.supportsSchemaChange()) { WebNavigatorNodeInfo schemaNodeInfo = this.getNodeFromObject(connection.getSession(), node); if(schemaNodeInfo != null){ @@ -235,7 +241,7 @@ public class WebServiceNavigator implements DBWServiceNavigator { return structContainers; } - protected List getCatalogs(DBRProgressMonitor monitor, DBSObject rootObject, DBCExecutionContextDefaults contextDefaults) throws DBWebException { + protected List getCatalogs(DBRProgressMonitor monitor, DBSObject rootObject, DBCExecutionContextDefaults contextDefaults) throws DBWebException { if (rootObject instanceof DBSObjectContainer) { try { Collection objectsCollection; @@ -244,7 +250,7 @@ public class WebServiceNavigator implements DBWServiceNavigator { } else { objectsCollection = ((DBSObjectContainer) rootObject).getChildren(monitor); } - return new ArrayList(objectsCollection); + return new ArrayList<>(objectsCollection); } catch (DBException e) { throw new DBWebException("Error reading context defaults", e); // return Collections.emptyList();