From a536a93ea3a30ac80b4fa5ff2909405481a223a4 Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Thu, 5 Mar 2026 17:54:46 +0100 Subject: [PATCH] dbeaver/pro#8601 TE + Git fixes (#4193) * dbeaver/pro#8601 Fix event handlers on RM server * dbeaver/pro#8601 Fix RM node icons * dbeaver/pro#8601 Fix RM project obtain --- .../model/rm/DBNResourceManagerResource.java | 11 ++++++----- .../src/io/cloudbeaver/server/WebAppUtils.java | 8 ++++++++ .../server/events/WSDefaultEventHandler.java | 3 +++ .../navigator/WebDefaultFeatureProvider.java | 18 +++++++++--------- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerResource.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerResource.java index 79ac3f7271..ca6b8a376f 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerResource.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerResource.java @@ -31,8 +31,6 @@ import org.jkiss.dbeaver.model.rm.RMProject; import org.jkiss.dbeaver.model.rm.RMResource; import org.jkiss.dbeaver.model.rm.RMResourceType; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; -import org.jkiss.dbeaver.registry.ResourceTypeDescriptor; -import org.jkiss.dbeaver.registry.ResourceTypeRegistry; import org.jkiss.utils.ArrayUtils; import org.jkiss.utils.CommonUtils; import org.jkiss.utils.IOUtils; @@ -44,7 +42,7 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode { private final RMResource resource; - DBNResourceManagerResource(DBNNode parentNode, RMResource resource) { + DBNResourceManagerResource(@NotNull DBNNode parentNode, @NotNull RMResource resource) { super(parentNode); this.resource = resource; } @@ -71,6 +69,7 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode { @Override public DBPImage getNodeIcon() { if (resource.isFolder()) { +/* if (getParentNode() instanceof DBNResourceManagerResource) { return DBIcon.TREE_FOLDER; } @@ -82,11 +81,12 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode { if (folderResType != null) { return folderResType.getFolderIcon(); } +*/ return DBIcon.TREE_FOLDER; } else { var fileExtension = IOUtils.getFileExtension(getNodeDisplayName()); if (!CommonUtils.isEmpty(fileExtension)) { - RMProject project = getProjectNode(); + RMProject project = getRmProject(); if (project != null) { for (RMResourceType rt : project.getResourceTypes()) { if (ArrayUtils.contains(rt.getFileExtensions(), fileExtension)) { @@ -99,7 +99,8 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode { } } - private RMProject getProjectNode() { + @Nullable + public RMProject getRmProject() { for (DBNNode node = this; node != null; node = node.getParentNode()) { if (node instanceof DBNResourceManagerProject) { return ((DBNResourceManagerProject) node).getProject(); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/WebAppUtils.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/WebAppUtils.java index c062fad708..44a6d7800f 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/WebAppUtils.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/WebAppUtils.java @@ -16,13 +16,21 @@ */ package io.cloudbeaver.server; +import org.jkiss.code.NotNull; import org.jkiss.dbeaver.runtime.DBWorkbench; public class WebAppUtils { + + public static boolean isWebApplication() { + return DBWorkbench.getPlatform().getApplication() instanceof WebApplication; + } + + @NotNull public static WebApplication getWebApplication() { return (WebApplication) DBWorkbench.getPlatform().getApplication(); } + @NotNull public static BaseWebPlatform getWebPlatform() { return (BaseWebPlatform) DBWorkbench.getPlatform(); } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/events/WSDefaultEventHandler.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/events/WSDefaultEventHandler.java index 10bea4a2ed..2ac03f4478 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/events/WSDefaultEventHandler.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/events/WSDefaultEventHandler.java @@ -31,6 +31,9 @@ public class WSDefaultEventHandler implements WSEventHand @Override public void handleEvent(@NotNull EVENT event) { + if (!WebAppUtils.isWebApplication()) { + return; + } log.debug(event.getTopicId() + " event handled"); Collection allSessions = WebAppUtils.getWebApplication() .getSessionManager() diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebDefaultFeatureProvider.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebDefaultFeatureProvider.java index 99c21a28c9..7d1d6e1741 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebDefaultFeatureProvider.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/navigator/WebDefaultFeatureProvider.java @@ -145,11 +145,6 @@ public class WebDefaultFeatureProvider implements DBWFeatureProvider { return features; } - @NotNull - private String getProjectId(@NotNull DBNNode node) { - return node.getOwnerProject().getId(); - } - private boolean canCreateConnectionFromFileName(String fileName) { String fileExtension = IOUtils.getFileExtension(fileName); if (CommonUtils.isEmpty(fileExtension)) { @@ -169,11 +164,16 @@ public class WebDefaultFeatureProvider implements DBWFeatureProvider { } private boolean hasNodePermission(@NotNull WebSession webSession, @NotNull DBNNode node, @NotNull RMProjectPermission permission) { - WebProjectImpl project = webSession.getProjectById(node.getOwnerProject().getId()); - if (project == null) { - return false; + RMProject rmProject; + if (node instanceof DBNResourceManagerResource rmr) { + rmProject = rmr.getRmProject(); + } else { + WebProjectImpl project = webSession.getProjectById(node.getOwnerProject().getId()); + if (project == null) { + return false; + } + rmProject = project.getRMProject(); } - RMProject rmProject = project.getRMProject(); return SMUtils.hasProjectPermission(webSession, rmProject, permission); }