This is an automated email from the ASF dual-hosted git repository.
stariy95 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new edeb05500 Unify Modeler and MCP `dbimport` tool path logic
edeb05500 is described below
commit edeb05500a3e2675183d1990e091c0c84c23e699
Author: Nikita Timofeev <[email protected]>
AuthorDate: Wed May 27 14:36:15 2026 +0400
Unify Modeler and MCP `dbimport` tool path logic
---
.../org/apache/cayenne/mcp/tools/dbimport/DbImportRunTool.java | 10 ++++++----
.../org/apache/cayenne/mcp/tools/dbimport/DbImportRunIT.java | 4 ++--
.../apache/cayenne/mcp/tools/dbimport/DbImportRunMcpIT.java | 2 +-
.../cayenne/mcp/tools/dbimport/DbImportRunValidationTest.java | 4 ++--
4 files changed, 11 insertions(+), 9 deletions(-)
diff --git
a/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunTool.java
b/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunTool.java
index e9ab9609d..a6ab4d846 100644
---
a/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunTool.java
+++
b/cayenne-mcp-server/src/main/java/org/apache/cayenne/mcp/tools/dbimport/DbImportRunTool.java
@@ -189,11 +189,12 @@ public class DbImportRunTool {
new DbImportValidation(true, false, null, null, null));
}
- // Resolve DataMap file path for preference node lookup
- Path dataMapFile = resolveDataMapFile(dataMap);
-
// Step 4 — DBConnector stored in preferences?
- String dataMapId =
PreferenceNodeIds.idForPath(dataMapFile.toAbsolutePath().toString());
+ // Keep this in sync with PrefsManager.dataMapPath(...), which keys
Modeler preferences
+ // from URL.getPath(). On Windows file:/D:/... has a leading slash
here, and hashing a
+ // java.nio Path string would point to a different preference node.
+ URL dataMapSourceUrl = dataMap.getConfigurationSource().getURL();
+ String dataMapId =
PreferenceNodeIds.idForPath(dataMapSourceUrl.getPath());
DBConnector connector = new
DataMapPrefs(prefsLocator.dataMapNode(dataMapId)).getConnector();
if (connector == null) {
return
validationFailed(DbImportErrorCode.dbconnector_not_configured,
@@ -206,6 +207,7 @@ public class DbImportRunTool {
new DbImportValidation(true, true, false, null, null));
}
+ Path dataMapFile = resolveDataMapFile(dataMap);
DbImportResolved resolved = new DbImportResolved(
dataMapFile.toAbsolutePath().toString(),
connector.getUrl(),
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 4f5100445..85c79c6ef 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
@@ -167,7 +167,7 @@ public class DbImportRunIT {
public void connectorNotConfigured() {
// Clear the connector from prefs
new DataMapPrefs(prefsLocator.dataMapNode(
-
PreferenceNodeIds.idForPath(dataMapFile.toAbsolutePath().toString())))
+ PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath())))
.setConnector(new DBConnector()); // empty connector clears
URL sentinel
DbImportRunResult result = tool.run(projectFile.toString(), "TestMap");
@@ -191,7 +191,7 @@ public class DbImportRunIT {
c.setJdbcDriver(driver);
c.setDbAdapter(adapter);
- Preferences mapPrefs =
prefsLocator.dataMapNode(PreferenceNodeIds.idForPath(dataMapFile.toAbsolutePath().toString()));
+ Preferences mapPrefs =
prefsLocator.dataMapNode(PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath()));
new DataMapPrefs(mapPrefs).setConnector(c);
}
}
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 13bbef7f3..8b99a856d 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
@@ -87,7 +87,7 @@ public class DbImportRunMcpIT {
// The in-process MCP server uses new PrefsLocator() →
Preferences.userRoot().
// Write the connector there so the server can find it when the tool
runs.
- String dataMapId =
PreferenceNodeIds.idForPath(dataMapFile.toAbsolutePath().toString());
+ String dataMapId =
PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath());
PrefsLocator locator = new PrefsLocator(Preferences.userRoot());
dataMapPrefsNode = locator.dataMapNode(dataMapId);
DBConnector connector = new DBConnector();
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 0bcc07269..d7b4a4dda 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
@@ -165,7 +165,7 @@ public class DbImportRunValidationTest {
connector.setJdbcDriver("com.nonexistent.Driver");
connector.setDbAdapter("org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter");
new DataMapPrefs(locator.dataMapNode(
-
PreferenceNodeIds.idForPath(dataMapFile.toAbsolutePath().toString())))
+ PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath())))
.setConnector(connector);
DbImportRunTool isolatedTool = new DbImportRunTool(locator);
@@ -198,7 +198,7 @@ public class DbImportRunValidationTest {
connector.setJdbcDriver("org.hsqldb.jdbc.JDBCDriver");
connector.setDbAdapter("org.apache.cayenne.dba.hsqldb.HSQLDBNoSchemaAdapter");
new DataMapPrefs(locator.dataMapNode(
-
PreferenceNodeIds.idForPath(dataMapFile.toAbsolutePath().toString())))
+ PreferenceNodeIds.idForPath(dataMapFile.toUri().getRawPath())))
.setConnector(connector);
DbImportRunTool isolatedTool = new DbImportRunTool(locator);