From a63e7ee257f03993a0517dbfd1f6e0c38a6951e6 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Mon, 27 Jun 2022 21:30:57 +0200 Subject: [PATCH 1/5] CB-2178 RM service refactoring and simplification --- .../rm/local/LocalResourceController.java | 26 ++----------------- .../service/rm/DBNResourceManagerRoot.java | 2 +- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java index 2d8beb1959..2524019ddd 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java @@ -39,7 +39,6 @@ import java.nio.file.Path; import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.*; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; /** @@ -56,7 +55,6 @@ public class LocalResourceController implements RMController { private static final String PROJECT_PREFIX_USER = "u_"; public static final String DEFAULT_CHANGE_ID = "0"; - private final List listeners = new CopyOnWriteArrayList<>(); private final SMCredentialsProvider credentialsProvider; private final Path rootPath; @@ -131,7 +129,7 @@ public class LocalResourceController implements RMController { } @Override - public void createProject(@NotNull RMProject project) throws DBException { + public RMProject createProject(@NotNull String id, @NotNull String name, @NotNull String description) throws DBException { throw new DBCFeatureNotSupportedException(); } @@ -219,7 +217,7 @@ public class LocalResourceController implements RMController { } catch (IOException e) { throw new DBException("Error deleting resource '" + resourcePath + "'", e); } - fireEvent( + RMEventManager.fireEvent( new RMEvent(RMEvent.Action.RESOURCE_DELETE, makeProjectFromId(projectId), rmResourcePath @@ -288,26 +286,6 @@ public class LocalResourceController implements RMController { } } - @Override - public void addRMEventListener(RMEventListener listener) { - this.listeners.add(listener); - } - - @Override - public void removeRMEventListener(RMEventListener listener) { - this.listeners.remove(listener); - } - - private void fireEvent(RMEvent event) { - for (var listener : listeners) { - try { - listener.handleRMEvent(event); - } catch (Exception e) { - log.error(e.getMessage(), e); - } - } - } - @NotNull private Path getTargetPath(@NotNull String projectId, @NotNull String resourcePath) throws DBException { Path projectPath = getProjectPath(projectId); diff --git a/server/bundles/io.cloudbeaver.service.rm/src/io/cloudbeaver/service/rm/DBNResourceManagerRoot.java b/server/bundles/io.cloudbeaver.service.rm/src/io/cloudbeaver/service/rm/DBNResourceManagerRoot.java index 4fea196437..f5aaf642ae 100644 --- a/server/bundles/io.cloudbeaver.service.rm/src/io/cloudbeaver/service/rm/DBNResourceManagerRoot.java +++ b/server/bundles/io.cloudbeaver.service.rm/src/io/cloudbeaver/service/rm/DBNResourceManagerRoot.java @@ -81,7 +81,7 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject, } List projectNodes = new ArrayList<>(); resourceController = ((WebSession) session).getRmController(); - resourceController.addRMEventListener(this); + RMEventManager.addEventListener(this); for (RMProject project : resourceController.listAccessibleProjects()) { projectNodes.add(new DBNResourceManagerProject(this, project)); } From 1f92b1348c9012a4d6c1e9207845fb43d4589498 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Tue, 28 Jun 2022 09:39:40 +0200 Subject: [PATCH 2/5] CB-2180 Datasource API refactoring --- .../src/io/cloudbeaver/service/core/impl/WebServiceCore.java | 3 +-- .../io/cloudbeaver/service/admin/impl/ConnectionSearcher.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java index 3fa497576e..e06204c72e 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java @@ -50,7 +50,6 @@ import org.jkiss.dbeaver.registry.DataSourceDescriptor; import org.jkiss.dbeaver.registry.DataSourceProviderRegistry; import org.jkiss.dbeaver.registry.network.NetworkHandlerDescriptor; import org.jkiss.dbeaver.registry.network.NetworkHandlerRegistry; -import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.dbeaver.runtime.jobs.ConnectionTestJob; import org.jkiss.dbeaver.utils.RuntimeUtils; import org.jkiss.utils.CommonUtils; @@ -473,7 +472,7 @@ public class WebServiceCore implements DBWServiceCore { WebServiceUtils.updateHandlerConfig(configuration, nhConfig); configuration.setSavePassword(true); configuration.setEnabled(true); - tunnel.initializeHandler(monitor, DBWorkbench.getPlatform(), configuration, connectionConfig); + tunnel.initializeHandler(monitor, configuration, connectionConfig); monitor.worked(1); // Get info Object implementation = tunnel.getImplementation(); diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java index 5d5dafe5e7..7c642e4444 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/ConnectionSearcher.java @@ -50,7 +50,7 @@ public class ConnectionSearcher implements DBRRunnableWithProgress { this.webSession = webSession; this.hostNames = hostNames; CBPlatform platform = CBPlatform.getInstance(); - this.tempRegistry = new DataSourceRegistry(platform, platform.getWorkspace().getActiveProject()); + this.tempRegistry = new DataSourceRegistry(platform.getWorkspace().getActiveProject()); this.availableDrivers.addAll(CBPlatform.getInstance().getApplicableDrivers()); } From 566a5dc98e50a9880a002d2b14343f934af925c1 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Tue, 28 Jun 2022 12:26:18 +0200 Subject: [PATCH 3/5] CB-2180 Datasource API refactoring. RM controller API added. --- .../model/rm/local/LocalResourceController.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java index 2524019ddd..6b319e669f 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java @@ -143,6 +143,21 @@ public class LocalResourceController implements RMController { return makeProjectFromId(projectId); } + @Override + public String getProjectsDataSources(@NotNull String projectId) throws DBException { + throw new DBCFeatureNotSupportedException(); + } + + @Override + public void saveProjectDataSources(@NotNull String projectId, @NotNull String configuration) throws DBException { + throw new DBCFeatureNotSupportedException(); + } + + @Override + public void deleteProjectDataSources(@NotNull String projectId, @NotNull String[] dataSourceIds) throws DBException { + throw new DBCFeatureNotSupportedException(); + } + @NotNull @Override public RMResource[] listResources( From 26574272a0023b6c5102308f60c5d75df618f926 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Tue, 28 Jun 2022 13:49:21 +0200 Subject: [PATCH 4/5] CB-2180 Datasource API refactoring. Legacy sample plugin removed --- .../META-INF/MANIFEST.MF | 20 ----- .../OSGI-INF/l10n/bundle.properties | 2 - .../build.properties | 6 -- .../plugin.xml | 12 --- .../pom.xml | 16 ---- .../SampleDataSourceConfigurationStorage.java | 83 ------------------- server/bundles/pom.xml | 1 - .../feature.xml | 1 - .../build.properties | 2 - .../feature.properties | 4 - .../io.cloudbeaver.sample.feature/feature.xml | 22 ----- .../io.cloudbeaver.sample.feature/pom.xml | 14 ---- server/features/pom.xml | 2 - .../CloudbeaverServer.product.launch | 1 - 14 files changed, 186 deletions(-) delete mode 100644 server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF delete mode 100644 server/bundles/io.cloudbeaver.connect.provider.sample/OSGI-INF/l10n/bundle.properties delete mode 100644 server/bundles/io.cloudbeaver.connect.provider.sample/build.properties delete mode 100644 server/bundles/io.cloudbeaver.connect.provider.sample/plugin.xml delete mode 100644 server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml delete mode 100644 server/bundles/io.cloudbeaver.connect.provider.sample/src/io/cloudbeaver/connect/provider/sample/SampleDataSourceConfigurationStorage.java delete mode 100644 server/features/io.cloudbeaver.sample.feature/build.properties delete mode 100644 server/features/io.cloudbeaver.sample.feature/feature.properties delete mode 100644 server/features/io.cloudbeaver.sample.feature/feature.xml delete mode 100644 server/features/io.cloudbeaver.sample.feature/pom.xml diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF deleted file mode 100644 index 010c0ee1c9..0000000000 --- a/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF +++ /dev/null @@ -1,20 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Vendor: %Bundle-Vendor -Bundle-Name: %Bundle-Name -Bundle-SymbolicName: io.cloudbeaver.connect.provider.sample;singleton:=true -Bundle-Version: 1.0.55.qualifier -Bundle-Release-Date: 20220627 -Bundle-RequiredExecutionEnvironment: JavaSE-11 -Bundle-ActivationPolicy: lazy -Bundle-ClassPath: . -Require-Bundle: org.eclipse.core.runtime, - org.apache.commons.logging, - org.eclipse.core.resources, - io.cloudbeaver.server, - com.google.gson, - org.jkiss.bundle.graphql.java, - org.jkiss.dbeaver.model, - org.jkiss.dbeaver.model.sql -Bundle-Localization: OSGI-INF/l10n/bundle -Automatic-Module-Name: io.cloudbeaver.connect.provider.sample diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/OSGI-INF/l10n/bundle.properties b/server/bundles/io.cloudbeaver.connect.provider.sample/OSGI-INF/l10n/bundle.properties deleted file mode 100644 index 48e85a5cff..0000000000 --- a/server/bundles/io.cloudbeaver.connect.provider.sample/OSGI-INF/l10n/bundle.properties +++ /dev/null @@ -1,2 +0,0 @@ -Bundle-Vendor = DBeaver Corp -Bundle-Name = Cloudbeaver - Connections configuration - Sample diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/build.properties b/server/bundles/io.cloudbeaver.connect.provider.sample/build.properties deleted file mode 100644 index 3d281081e5..0000000000 --- a/server/bundles/io.cloudbeaver.connect.provider.sample/build.properties +++ /dev/null @@ -1,6 +0,0 @@ -source.. = src/ -output.. = target/classes/ -bin.includes = .,\ - META-INF/,\ - OSGI-INF/,\ - plugin.xml diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/plugin.xml b/server/bundles/io.cloudbeaver.connect.provider.sample/plugin.xml deleted file mode 100644 index d4fb5ebc2a..0000000000 --- a/server/bundles/io.cloudbeaver.connect.provider.sample/plugin.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml b/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml deleted file mode 100644 index 018a295920..0000000000 --- a/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - 4.0.0 - - io.cloudbeaver - bundles - 1.0.0-SNAPSHOT - ../ - - io.cloudbeaver.connect.provider.sample - 1.0.55-SNAPSHOT - eclipse-plugin - - diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/src/io/cloudbeaver/connect/provider/sample/SampleDataSourceConfigurationStorage.java b/server/bundles/io.cloudbeaver.connect.provider.sample/src/io/cloudbeaver/connect/provider/sample/SampleDataSourceConfigurationStorage.java deleted file mode 100644 index 51ccb200ac..0000000000 --- a/server/bundles/io.cloudbeaver.connect.provider.sample/src/io/cloudbeaver/connect/provider/sample/SampleDataSourceConfigurationStorage.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * DBeaver - Universal Database Manager - * Copyright (C) 2010-2022 DBeaver Corp and others - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.cloudbeaver.connect.provider.sample; - -import org.jkiss.dbeaver.DBException; -import org.jkiss.dbeaver.Log; -import org.jkiss.dbeaver.model.DBPDataSourceConfigurationStorage; -import org.jkiss.dbeaver.model.DBPDataSourceContainer; -import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * Sample configuration storage. - * Is the main source of data in web application - */ -public class SampleDataSourceConfigurationStorage implements DBPDataSourceConfigurationStorage { - - private static final Log log = Log.getLog(SampleDataSourceConfigurationStorage.class); - - public static final String SAMPLE_CONFIG_NAME = "provided-connections.json"; - - @Override - public String getStorageId() { - return "Sample"; - } - - @Override - public boolean isValid() { - return false; - } - - @Override - public boolean isDefault() { - return false; - } - - @Override - public String getStatus() { - return "Valid"; - } - - @Override - public List loadDataSources(DBPDataSourceRegistry registry, Map options) throws DBException { - Path metadataFolder = registry.getProject().getMetadataFolder(false); - if (Files.exists(metadataFolder)) { - Path sampleConfigFile = metadataFolder.resolve(SAMPLE_CONFIG_NAME); - if (Files.exists(sampleConfigFile)) { - log.debug("Loading provided connections from [" + sampleConfigFile.toAbsolutePath() + "]"); - List dsList = registry.loadDataSourcesFromFile(this, sampleConfigFile); -// for (DBPDataSourceContainer ds : dsList) { -// log.debug("\tProvided connection: " + ds.getName()); -// } - return dsList; - } - } - return Collections.emptyList(); - } - - @Override - public String getConfigurationFileSuffix() { - return "-sample"; - } - -} diff --git a/server/bundles/pom.xml b/server/bundles/pom.xml index 7decbd7087..0926706826 100644 --- a/server/bundles/pom.xml +++ b/server/bundles/pom.xml @@ -24,7 +24,6 @@ io.cloudbeaver.service.security io.cloudbeaver.resources.drivers.base - io.cloudbeaver.connect.provider.sample io.cloudbeaver.product.ce diff --git a/server/features/io.cloudbeaver.product.ce.feature/feature.xml b/server/features/io.cloudbeaver.product.ce.feature/feature.xml index 702100e999..8fc5af261d 100644 --- a/server/features/io.cloudbeaver.product.ce.feature/feature.xml +++ b/server/features/io.cloudbeaver.product.ce.feature/feature.xml @@ -19,7 +19,6 @@ - diff --git a/server/features/io.cloudbeaver.sample.feature/build.properties b/server/features/io.cloudbeaver.sample.feature/build.properties deleted file mode 100644 index b3a611b5c9..0000000000 --- a/server/features/io.cloudbeaver.sample.feature/build.properties +++ /dev/null @@ -1,2 +0,0 @@ -bin.includes = feature.xml,\ - feature.properties diff --git a/server/features/io.cloudbeaver.sample.feature/feature.properties b/server/features/io.cloudbeaver.sample.feature/feature.properties deleted file mode 100644 index 45bf4d6243..0000000000 --- a/server/features/io.cloudbeaver.sample.feature/feature.properties +++ /dev/null @@ -1,4 +0,0 @@ -featureName=Cloudbeaver - Samples -providerName=DBeaver Corp -description=Cloudbeaver samples feature -copyright=\u00A9 DBeaver Corp, 2022 diff --git a/server/features/io.cloudbeaver.sample.feature/feature.xml b/server/features/io.cloudbeaver.sample.feature/feature.xml deleted file mode 100644 index 20e7f5c737..0000000000 --- a/server/features/io.cloudbeaver.sample.feature/feature.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - %description - - - - %copyright - - - - %license - - - - - diff --git a/server/features/io.cloudbeaver.sample.feature/pom.xml b/server/features/io.cloudbeaver.sample.feature/pom.xml deleted file mode 100644 index 1c2cf19767..0000000000 --- a/server/features/io.cloudbeaver.sample.feature/pom.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - 4.0.0 - - io.cloudbeaver - features - 1.0.0-SNAPSHOT - ../ - - io.cloudbeaver.sample.feature - 1.0.55-SNAPSHOT - eclipse-feature - diff --git a/server/features/pom.xml b/server/features/pom.xml index 0633ac55ef..1b9c342dff 100644 --- a/server/features/pom.xml +++ b/server/features/pom.xml @@ -18,8 +18,6 @@ io.cloudbeaver.server.feature io.cloudbeaver.ce.drivers.feature - io.cloudbeaver.sample.feature - io.cloudbeaver.product.ce.feature diff --git a/server/product/web-server/CloudbeaverServer.product.launch b/server/product/web-server/CloudbeaverServer.product.launch index 39d033afa8..c7943aa377 100644 --- a/server/product/web-server/CloudbeaverServer.product.launch +++ b/server/product/web-server/CloudbeaverServer.product.launch @@ -104,7 +104,6 @@ - From 74f77b9738fac32332e97b77305acdcd8b3016ec Mon Sep 17 00:00:00 2001 From: serge-rider Date: Tue, 28 Jun 2022 22:31:37 +0200 Subject: [PATCH 5/5] CB-2180 Remove legacy sample product --- server/product/pom.xml | 1 - .../DBeaverWebProvidedSample.product | 21 ------ server/product/provided-sample/pom.xml | 74 ------------------- 3 files changed, 96 deletions(-) delete mode 100644 server/product/provided-sample/DBeaverWebProvidedSample.product delete mode 100644 server/product/provided-sample/pom.xml diff --git a/server/product/pom.xml b/server/product/pom.xml index 927d308ede..befb1fe0b3 100644 --- a/server/product/pom.xml +++ b/server/product/pom.xml @@ -14,7 +14,6 @@ web-server - provided-sample diff --git a/server/product/provided-sample/DBeaverWebProvidedSample.product b/server/product/provided-sample/DBeaverWebProvidedSample.product deleted file mode 100644 index cf44d73735..0000000000 --- a/server/product/provided-sample/DBeaverWebProvidedSample.product +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/server/product/provided-sample/pom.xml b/server/product/provided-sample/pom.xml deleted file mode 100644 index 8a56561cc1..0000000000 --- a/server/product/provided-sample/pom.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - 4.0.0 - - io.cloudbeaver - cloudbeaver - 1.0.0-SNAPSHOT - ../../ - - 22.1.1-SNAPSHOT - provided-sample - eclipse-repository - Cloudbeaver Provided Sample Product - - - - - org.eclipse.tycho - target-platform-configuration - ${tycho-version} - - - - all - all - all - - - - - - - org.eclipse.tycho - tycho-p2-director-plugin - ${tycho-version} - - - - io.cloudbeaver.provided.sample.product - cloudbeaver-provided-sample-${dbeaver-version} - - - - - - materialize-products - - materialize-products - - - - archive-products - - - - - - - - - org.eclipse.tycho - tycho-p2-repository-plugin - ${tycho-version} - - false - true - - - - - -