This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch past-M2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit fcbf72af6501fffa93722f606883ad65cf704d07 Author: Andrus Adamchik <[email protected]> AuthorDate: Sun May 31 15:19:54 2026 -0400 CAT-2957 Get rid of adaper for legacy HSQLDB <= 1.8 --- RELEASE-NOTES.txt | 1 + UPGRADE.md | 4 + .../merge/factory/MergerTokenFactoryProvider.java | 4 +- .../cayenne/mcp/tools/dbimport/DbImportRunIT.java | 4 +- .../mcp/tools/dbimport/DbImportRunMcpIT.java | 4 +- .../tools/dbimport/DbImportRunValidationTest.java | 4 +- .../cayenne/dba/hsqldb/HSQLDBNoSchemaAdapter.java | 97 ---------------------- .../apache/cayenne/dba/hsqldb/HSQLDBSniffer.java | 8 +- 8 files changed, 14 insertions(+), 112 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 7e76d73cf..42834e397 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -14,6 +14,7 @@ Date: Changes/New Features: CAY-2956 Get rid of a dedicated adapter for Oracle 8 +CAY-2957 Get rid of adaper for legacy HSQLDB <= 1.8 Bug Fixes: diff --git a/UPGRADE.md b/UPGRADE.md index 1882e9baf..f1391977d 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -61,6 +61,10 @@ Expression caseWhenExp = caseWhen( If you referenced `Oracle8Adapter` explicitly (e.g. in a DataNode adapter configuration or custom DI bindings), switch to `org.apache.cayenne.dba.oracle.OracleAdapter`. +* Per [CAY-2957](https://issues.apache.org/jira/browse/CAY-2957) the legacy HSQLDB adapter (HSQL <= 1.8) has been removed. + `org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter` no longer exists, and the `HSQLDBSniffer` now maps all. If you + happen to be on those older HSQL versions, update to the latest one. + ## Upgrading to 5.0.M2 * Per [CAY-2947](https://issues.apache.org/jira/browse/CAY-2947) the `cayenne-commitlog` artifact has been removed. Commit log support is now part of the diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/MergerTokenFactoryProvider.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/MergerTokenFactoryProvider.java index 00005fdad..082ad6282 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/MergerTokenFactoryProvider.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/factory/MergerTokenFactoryProvider.java @@ -43,8 +43,8 @@ public class MergerTokenFactoryProvider { } public MergerTokenFactory get(DbAdapter adapter) throws DIRuntimeException { - // walk up the class hierarchy so subclasses (e.g. HSQLDBNoSchemaAdapter) - // resolve to the factory mapped against their parent (HSQLDBAdapter) + // walk up the class hierarchy so adapter subclasses resolve to the + // factory mapped against their parent (e.g. a custom HSQLDBAdapter subclass) for (Class<?> c = adapter.unwrap().getClass(); DbAdapter.class.isAssignableFrom(c); c = c.getSuperclass()) { MergerTokenFactory factory = perAdapterValues.get(c.getName()); if (factory != null) { diff --git a/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunIT.java b/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunIT.java index 85c79c6ef..26e14dec6 100644 --- a/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunIT.java +++ b/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunIT.java @@ -18,7 +18,7 @@ ****************************************************************/ package org.apache.cayenne.mcp.tools.dbimport; -import org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter; +import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter; import org.apache.cayenne.mcp.tools.dbimport.protocol.DbImportRunResult; import org.apache.cayenne.modeler.pref.PreferenceNodeIds; import org.apache.cayenne.modeler.pref.PrefsLocator; @@ -42,7 +42,7 @@ import static org.junit.jupiter.api.Assertions.*; public class DbImportRunIT { - private static final String HSQL_ADAPTER = HSQLDBNoSchemaAdapter.class.getName(); + private static final String HSQL_ADAPTER = HSQLDBAdapter.class.getName(); private static final String HSQL_DRIVER = "org.hsqldb.jdbc.JDBCDriver"; @TempDir diff --git a/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunMcpIT.java b/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunMcpIT.java index 8b99a856d..14048bbab 100644 --- a/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunMcpIT.java +++ b/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunMcpIT.java @@ -18,7 +18,7 @@ ****************************************************************/ package org.apache.cayenne.mcp.tools.dbimport; -import org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter; +import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter; import org.apache.cayenne.mcp.TestMcpClient; import org.apache.cayenne.modeler.pref.PreferenceNodeIds; import org.apache.cayenne.modeler.pref.PrefsLocator; @@ -47,7 +47,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ public class DbImportRunMcpIT { - private static final String HSQL_ADAPTER = HSQLDBNoSchemaAdapter.class.getName(); + private static final String HSQL_ADAPTER = HSQLDBAdapter.class.getName(); private static final String HSQL_DRIVER = "org.hsqldb.jdbc.JDBCDriver"; @RegisterExtension diff --git a/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunValidationTest.java b/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunValidationTest.java index d7b4a4dda..3671173d9 100644 --- a/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunValidationTest.java +++ b/cayenne-mcp-server/src/test/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunValidationTest.java @@ -163,7 +163,7 @@ public class DbImportRunValidationTest { connector.setUserName("SA"); connector.setPassword(""); connector.setJdbcDriver("com.nonexistent.Driver"); - connector.setDbAdapter("org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter"); + connector.setDbAdapter("org.apache.cayenne.dba.hsqldb.HSQLDBAdapter"); new DataMapPrefs(locator.dataMapNode( PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath()))) .setConnector(connector); @@ -196,7 +196,7 @@ public class DbImportRunValidationTest { connector.setUserName("SA"); connector.setPassword(""); connector.setJdbcDriver("org.hsqldb.jdbc.JDBCDriver"); - connector.setDbAdapter("org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter"); + connector.setDbAdapter("org.apache.cayenne.dba.hsqldb.HSQLDBAdapter"); new DataMapPrefs(locator.dataMapNode( PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath()))) .setConnector(connector); diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBNoSchemaAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBNoSchemaAdapter.java deleted file mode 100644 index f24540feb..000000000 --- a/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBNoSchemaAdapter.java +++ /dev/null @@ -1,97 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 - * - * https://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 org.apache.cayenne.dba.hsqldb; - -import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.access.types.ExtendedTypeFactory; -import org.apache.cayenne.access.types.ValueObjectTypeRegistry; -import org.apache.cayenne.configuration.Constants; -import org.apache.cayenne.configuration.RuntimeProperties; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.map.DbEntity; -import org.apache.cayenne.resource.ResourceLocator; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * A flavor of HSQLDBAdapter that implements workarounds for some old driver limitations. - * - * @since 1.2 - */ -public class HSQLDBNoSchemaAdapter extends HSQLDBAdapter { - - public HSQLDBNoSchemaAdapter(@Inject RuntimeProperties runtimeProperties, - @Inject(Constants.DEFAULT_TYPES_LIST) List<ExtendedType> defaultExtendedTypes, - @Inject(Constants.USER_TYPES_LIST) List<ExtendedType> userExtendedTypes, - @Inject(Constants.TYPE_FACTORIES_LIST) List<ExtendedTypeFactory> extendedTypeFactories, - @Inject(Constants.RESOURCE_LOCATOR) ResourceLocator resourceLocator, - @Inject ValueObjectTypeRegistry valueObjectTypeRegistry) { - super(runtimeProperties, defaultExtendedTypes, userExtendedTypes, extendedTypeFactories, resourceLocator, valueObjectTypeRegistry); - } - - /** - * Generate unqualified name without schema. - * - * @since 1.2 - */ - @Override - protected String getTableName(DbEntity entity) { - return quotingStrategy.quotedIdentifier(entity, entity.getName()); - } - - /** - * Returns NULL. - * - * @since 1.2 - */ - @Override - protected String getSchemaName(DbEntity entity) { - return null; - } - - @Override - public Collection<String> dropTableStatements(DbEntity table) { - // hsqldb doesn't support schema namespaces, so remove if found - return Collections.singleton("DROP TABLE " + getTableName(table)); - } - - /** - * Uses unqualified entity names. - * - * @since 1.2 - */ - @Override - public String createTable(DbEntity ent) { - String sql = super.createTable(ent); - - // hsqldb doesn't support schema namespaces, so remove if found - String fqnCreate = "CREATE CACHED TABLE " + super.getTableName(ent) + " ("; - if (sql != null && sql.toUpperCase().startsWith(fqnCreate)) { - sql = "CREATE CACHED TABLE " - + getTableName(ent) - + " (" - + sql.substring(fqnCreate.length()); - } - - return sql; - } -} diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java b/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java index e4bfa0a90..dfa48aaf1 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java @@ -47,12 +47,6 @@ public class HSQLDBSniffer implements DbAdapterDetector { return null; } - boolean supportsSchema = md.getDriverMajorVersion() < 1 - || md.getDriverMajorVersion() == 1 && md.getDriverMinorVersion() <= 8; - - // TODO: is this correct? Looks like newer drivers result in HSQLDBNoSchemaAdapter (which is presumably legacy?) - return supportsSchema - ? objectFactory.newInstance(DbAdapter.class, HSQLDBAdapter.class.getName()) - : objectFactory.newInstance(DbAdapter.class, HSQLDBNoSchemaAdapter.class.getName()); + return objectFactory.newInstance(DbAdapter.class, HSQLDBAdapter.class.getName()); } }
