This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 596072daa8f22fb326cce871f93925b1801236f8
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun May 24 08:51:04 2026 -0400

    CAY-2949 CayenneModeler MCP: dbimport_run tool
    
    preliminary refactoring - DataMapPrefs needs to be shared
---
 .../modeler/pref/adapters/DataMapPrefs.java        |   0
 .../modeler/pref/adapters/DataMapPrefsTest.java    | 156 +++++++++++++++++++++
 2 files changed, 156 insertions(+)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefs.java
 
b/modeler/cayenne-modeler-prefs/src/main/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefs.java
similarity index 100%
rename from 
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefs.java
rename to 
modeler/cayenne-modeler-prefs/src/main/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefs.java
diff --git 
a/modeler/cayenne-modeler-prefs/src/test/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefsTest.java
 
b/modeler/cayenne-modeler-prefs/src/test/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefsTest.java
new file mode 100644
index 000000000..2a982f83a
--- /dev/null
+++ 
b/modeler/cayenne-modeler-prefs/src/test/java/org/apache/cayenne/modeler/pref/adapters/DataMapPrefsTest.java
@@ -0,0 +1,156 @@
+/*****************************************************************
+ *   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.modeler.pref.adapters;
+
+import org.apache.cayenne.modeler.pref.dbconnector.DBConnector;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.UUID;
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class DataMapPrefsTest {
+
+    private final Preferences root = Preferences.userRoot()
+            .node("cayenne-test/" + UUID.randomUUID().toString().replace("-", 
""));
+    private final DataMapPrefs prefs = new DataMapPrefs(root);
+
+    @AfterEach
+    public void cleanup() throws BackingStoreException {
+        root.removeNode();
+    }
+
+    // --- superclassPackage ---
+
+    @Test
+    public void setSuperclassPackageStoresValue() {
+        prefs.setSuperclassPackage("com.example");
+        assertEquals("com.example", 
root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackageNullRemovesKey() {
+        prefs.setSuperclassPackage("com.example");
+        prefs.setSuperclassPackage((String) null);
+        assertNull(root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackagePrefixSuffixJoinsWithDot() {
+        prefs.setSuperclassPackage("com.example", "auto");
+        assertEquals("com.example.auto", 
root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackagePrefixOnlyNoTrailingDot() {
+        prefs.setSuperclassPackage("com.example", null);
+        assertEquals("com.example", 
root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackageSuffixOnlyNoLeadingDot() {
+        prefs.setSuperclassPackage(null, "auto");
+        assertEquals("auto", 
root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackagePrefixTrailingDotIsNormalized() {
+        prefs.setSuperclassPackage("com.example.", "auto");
+        assertEquals("com.example.auto", 
root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackageSuffixLeadingDotIsNormalized() {
+        prefs.setSuperclassPackage("com.example", ".auto");
+        assertEquals("com.example.auto", 
root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, null));
+    }
+
+    @Test
+    public void setSuperclassPackageBothNullProducesEmpty() {
+        prefs.setSuperclassPackage((String) null, null);
+        assertEquals("", root.get(DataMapPrefs.SUPERCLASS_PACKAGE_PROPERTY, 
null));
+    }
+
+    // --- connector ---
+
+    @Test
+    public void getConnectorReturnsNullWhenNoUrlSet() {
+        assertNull(prefs.getConnector());
+    }
+
+    @Test
+    public void getConnectorReturnsConnectorWhenUrlIsSet() {
+        root.put(DBConnector.URL_PROPERTY, "jdbc:h2:mem");
+        assertNotNull(prefs.getConnector());
+    }
+
+    @Test
+    public void getConnectorRoundtrip() {
+        DBConnector c = new DBConnector();
+        c.setUrl("jdbc:h2:mem:test");
+        c.setUserName("sa");
+        c.setPassword("secret");
+        c.setJdbcDriver("org.h2.Driver");
+        c.setDbAdapter("org.apache.cayenne.dba.h2.H2Adapter");
+        prefs.setConnector(c);
+
+        DBConnector loaded = prefs.getConnector();
+        assertNotNull(loaded);
+        assertEquals("jdbc:h2:mem:test", loaded.getUrl());
+        assertEquals("sa", loaded.getUserName());
+        assertEquals("secret", loaded.getPassword());
+        assertEquals("org.h2.Driver", loaded.getJdbcDriver());
+        assertEquals("org.apache.cayenne.dba.h2.H2Adapter", 
loaded.getDbAdapter());
+    }
+
+    @Test
+    public void setConnectorNullFieldsRemoveKeys() {
+        DBConnector c = new DBConnector();
+        c.setUrl("jdbc:h2:mem");
+        c.setUserName("sa");
+        prefs.setConnector(c);
+
+        DBConnector sparse = new DBConnector();
+        sparse.setUrl("jdbc:h2:mem");
+        prefs.setConnector(sparse);
+
+        assertNull(root.get(DBConnector.USER_NAME_PROPERTY, null));
+    }
+
+    // --- hasDbAdapter ---
+
+    @Test
+    public void hasDbAdapterFalseWhenNotSet() {
+        assertFalse(prefs.hasDbAdapter());
+    }
+
+    @Test
+    public void hasDbAdapterTrueWhenSet() {
+        root.put(DBConnector.DB_ADAPTER_PROPERTY, 
"org.apache.cayenne.dba.h2.H2Adapter");
+        assertTrue(prefs.hasDbAdapter());
+    }
+}

Reply via email to