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());
     }
 }

Reply via email to