From 7691ea7127d7ddbbaf83bc38c3f124cf8307c755 Mon Sep 17 00:00:00 2001 From: delchev Date: Sun, 9 Aug 2026 17:22:27 +0300 Subject: [PATCH] fix(core): move the Spring beans under modules/ into the scan roots Three beans lived under modules/, in packages outside the two roots the platform treats as its scan convention (org.eclipse.dirigible.components and .engine - the pair DataSourceSystemConfig uses for @EnableJpaRepositories and dirigible.scan.packages). build/application never noticed, because DirigibleApplication sits in org.eclipse.dirigible and its default scan covers the whole tree; any assembly that NAMES its scan packages loses them. All three are contributor-shaped, so their absence is silent. A WebSocketConfigurer that is never registered just means the endpoint 404s; a List or List injection point just receives a shorter list. No missing-bean failure, no warning - the context comes up clean and the capability is quietly gone. HanaConnectionEnhancer -> components/data/data-sources HanaDatabaseConfigurator -> components/data/data-sources ConsoleWebsocketConfig -> components/ide/ide-logs The HANA pair moves next to the injection points that consume it (DirigibleDataSourceFactory, DataSourceInitializer) and joins its SPI siblings under components/; both are package-private, so nothing outside their package could reference them and the move costs no pom change - data-sources already depends on core-database, api-security and Hikari, and already carries a vendor-specific dependency (database-sql-h2). ConsoleWebsocketConfig joins the four other WebSocketConfigurers, every one of which already lives under components/ (ide-terminal, ide-java-lsp, ide-java-debug, data-transfer) - it was the only one stranded in modules/. ide-logs takes a dependency on commons-resources for ConsoleWebsocketHandler. The appender, handler and record deliberately stay where they are: logback configuration names ConsoleLoggingAppender by fully qualified class name, in this repo and in every downstream one, so moving that package would break configurations we do not control. Also drops the vestigial @Component from DirigibleSourceProvider. Every consumer constructs it directly, so the stereotype only advertised an injection point that never existed - and its removal is behaviour-neutral. No Spring bean stereotype remains anywhere under modules/, which restores the invariant the tree is described by ("pure libraries with no Spring wiring"). The one remaining Spring reference there is ConsoleWebsocketHandler, which extends TextWebSocketHandler but is not a bean - it is constructed by the config and called statically by the appender. Registering the beans through an @AutoConfiguration was the other option in the report, and was rejected: an auto-configuration class under org.eclipse.dirigible is itself covered by DirigibleApplication's default scan, so in the full assembly it would be registered twice - once by the scan and once from the imports file - giving two WebSocketConfigurers and a duplicated handler registration. Moving has no such ambiguity. Closes #6635 Co-Authored-By: Claude Opus 5 --- .../data/sources/manager}/HanaConnectionEnhancer.java | 2 +- .../sources/manager}/HanaDatabaseConfigurator.java | 2 +- components/ide/ide-logs/pom.xml | 11 ++++++++++- .../ide/logs/endpoint}/ConsoleWebsocketConfig.java | 3 ++- .../core/modules/DirigibleSourceProvider.java | 6 ++++-- 5 files changed, 18 insertions(+), 6 deletions(-) rename {modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana => components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager}/HanaConnectionEnhancer.java (96%) rename {modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana => components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager}/HanaDatabaseConfigurator.java (94%) rename {modules/commons/commons-resources/src/main/java/org/eclipse/dirigible/commons/logging => components/ide/ide-logs/src/main/java/org/eclipse/dirigible/components/ide/logs/endpoint}/ConsoleWebsocketConfig.java (92%) diff --git a/modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana/HanaConnectionEnhancer.java b/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/HanaConnectionEnhancer.java similarity index 96% rename from modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana/HanaConnectionEnhancer.java rename to components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/HanaConnectionEnhancer.java index aa11b733d20..f18f6797410 100644 --- a/modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana/HanaConnectionEnhancer.java +++ b/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/HanaConnectionEnhancer.java @@ -7,7 +7,7 @@ * * SPDX-FileCopyrightText: Eclipse Dirigible contributors SPDX-License-Identifier: EPL-2.0 */ -package org.eclipse.dirigible.database.sql.dialects.hana; +package org.eclipse.dirigible.components.data.sources.manager; import org.eclipse.dirigible.components.api.security.UserFacade; import org.eclipse.dirigible.components.database.ConnectionEnhancer; diff --git a/modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana/HanaDatabaseConfigurator.java b/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/HanaDatabaseConfigurator.java similarity index 94% rename from modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana/HanaDatabaseConfigurator.java rename to components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/HanaDatabaseConfigurator.java index 3d21fdbefdb..0d7f45197e1 100644 --- a/modules/database/database-sql-hana/src/main/java/org/eclipse/dirigible/database/sql/dialects/hana/HanaDatabaseConfigurator.java +++ b/components/data/data-sources/src/main/java/org/eclipse/dirigible/components/data/sources/manager/HanaDatabaseConfigurator.java @@ -7,7 +7,7 @@ * * SPDX-FileCopyrightText: Eclipse Dirigible contributors SPDX-License-Identifier: EPL-2.0 */ -package org.eclipse.dirigible.database.sql.dialects.hana; +package org.eclipse.dirigible.components.data.sources.manager; import com.zaxxer.hikari.HikariConfig; import org.eclipse.dirigible.components.database.DatabaseConfigurator; diff --git a/components/ide/ide-logs/pom.xml b/components/ide/ide-logs/pom.xml index 1266e80093f..f6aff800aa7 100644 --- a/components/ide/ide-logs/pom.xml +++ b/components/ide/ide-logs/pom.xml @@ -20,7 +20,16 @@ org.eclipse.dirigible dirigible-components-core-base - + + + + org.eclipse.dirigible + + dirigible-commons-resources + + org.eclipse.dirigible diff --git a/modules/commons/commons-resources/src/main/java/org/eclipse/dirigible/commons/logging/ConsoleWebsocketConfig.java b/components/ide/ide-logs/src/main/java/org/eclipse/dirigible/components/ide/logs/endpoint/ConsoleWebsocketConfig.java similarity index 92% rename from modules/commons/commons-resources/src/main/java/org/eclipse/dirigible/commons/logging/ConsoleWebsocketConfig.java rename to components/ide/ide-logs/src/main/java/org/eclipse/dirigible/components/ide/logs/endpoint/ConsoleWebsocketConfig.java index ff7332ad98d..0b761ee1273 100644 --- a/modules/commons/commons-resources/src/main/java/org/eclipse/dirigible/commons/logging/ConsoleWebsocketConfig.java +++ b/components/ide/ide-logs/src/main/java/org/eclipse/dirigible/components/ide/logs/endpoint/ConsoleWebsocketConfig.java @@ -7,8 +7,9 @@ * * SPDX-FileCopyrightText: Eclipse Dirigible contributors SPDX-License-Identifier: EPL-2.0 */ -package org.eclipse.dirigible.commons.logging; +package org.eclipse.dirigible.components.ide.logs.endpoint; +import org.eclipse.dirigible.commons.logging.ConsoleWebsocketHandler; import org.eclipse.dirigible.components.base.endpoint.BaseEndpoint; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.WebSocketHandler; diff --git a/modules/engines/engine-graalium/execution-core/src/main/java/org/eclipse/dirigible/graalium/core/modules/DirigibleSourceProvider.java b/modules/engines/engine-graalium/execution-core/src/main/java/org/eclipse/dirigible/graalium/core/modules/DirigibleSourceProvider.java index 41f6fb57e3a..8f6aaaae1e8 100644 --- a/modules/engines/engine-graalium/execution-core/src/main/java/org/eclipse/dirigible/graalium/core/modules/DirigibleSourceProvider.java +++ b/modules/engines/engine-graalium/execution-core/src/main/java/org/eclipse/dirigible/graalium/core/modules/DirigibleSourceProvider.java @@ -17,7 +17,6 @@ import org.eclipse.dirigible.repository.api.IResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; import java.io.File; import java.io.IOException; @@ -29,8 +28,11 @@ /** * The Class DirigibleSourceProvider. + * + *

+ * Deliberately not a Spring bean: every consumer constructs it directly, so the stereotype it used + * to carry only suggested an injection point that never existed. */ -@Component @CalledFromJS public class DirigibleSourceProvider implements JavascriptSourceProvider {