Skip to content

Commit 6cdb1b6

Browse files
committed
Create empty factory for error handling
1 parent a5998d2 commit 6cdb1b6

File tree

3 files changed

+31
-57
lines changed

3 files changed

+31
-57
lines changed

schemacrawler-ai-mcpserver/src/main/java/schemacrawler/tools/ai/mcpserver/EmptyDatabaseConnectionSource.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

schemacrawler-ai-mcpserver/src/main/java/schemacrawler/tools/ai/mcpserver/McpServerInitializer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import org.springframework.lang.NonNull;
1717
import schemacrawler.schema.Catalog;
1818
import schemacrawler.schemacrawler.exceptions.SchemaCrawlerException;
19-
import schemacrawler.tools.ai.mcpserver.utility.CatalogFactory;
19+
import schemacrawler.tools.ai.mcpserver.utility.EmptyFactory;
2020
import schemacrawler.tools.ai.tools.FunctionDefinitionRegistry;
2121
import us.fatehi.utility.datasource.DatabaseConnectionSource;
2222
import us.fatehi.utility.datasource.DatabaseConnectionSources;
@@ -48,7 +48,7 @@ public McpServerInitializer(
4848
throw e;
4949
}
5050
isInErrorState = true;
51-
connectionSource = new EmptyDatabaseConnectionSource();
51+
connectionSource = EmptyFactory.createEmptyDatabaseConnectionSource();
5252
}
5353
this.connectionSource = connectionSource;
5454
this.isInErrorState = isInErrorState;
@@ -70,7 +70,7 @@ public McpServerInitializer(final McpServerContext context) {
7070
if (mcpTransport != McpServerTransportType.stdio) {
7171
throw e;
7272
}
73-
catalog = CatalogFactory.createEmptyCatalog(e);
73+
catalog = EmptyFactory.createEmptyCatalog(e);
7474
isInErrorState = true;
7575
}
7676
this.catalog = catalog;
@@ -84,7 +84,7 @@ public McpServerInitializer(final McpServerContext context) {
8484
if (mcpTransport != McpServerTransportType.stdio) {
8585
throw e;
8686
}
87-
connectionSource = new EmptyDatabaseConnectionSource();
87+
connectionSource = EmptyFactory.createEmptyDatabaseConnectionSource();
8888
}
8989
this.connectionSource = connectionSource;
9090
}
Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010

1111
import java.lang.reflect.InvocationHandler;
1212
import java.lang.reflect.Proxy;
13+
import java.sql.DriverManager;
1314
import schemacrawler.schema.Catalog;
15+
import us.fatehi.utility.datasource.DatabaseConnectionSource;
1416

15-
public class CatalogFactory {
17+
public class EmptyFactory {
1618

1719
public static Catalog createEmptyCatalog(final Exception e) {
1820
final String baseErrorMessage =
@@ -50,4 +52,28 @@ public static Catalog createEmptyCatalog(final Exception e) {
5052
Proxy.newProxyInstance(
5153
Catalog.class.getClassLoader(), new Class<?>[] {Catalog.class}, handler);
5254
}
55+
56+
public static DatabaseConnectionSource createEmptyDatabaseConnectionSource() {
57+
58+
final InvocationHandler handler =
59+
(proxy, method, args) -> {
60+
switch (method.getName()) {
61+
case "get":
62+
return DriverManager.getConnection("jdbc:hsqldb::memory:");
63+
case "releaseConnection":
64+
return true;
65+
case "close":
66+
case "setFirstConnectionInitializer":
67+
return null; // No-op
68+
default:
69+
throw new UnsupportedOperationException("Method not supported: " + method.getName());
70+
}
71+
};
72+
73+
return (DatabaseConnectionSource)
74+
Proxy.newProxyInstance(
75+
DatabaseConnectionSource.class.getClassLoader(),
76+
new Class<?>[] {DatabaseConnectionSource.class},
77+
handler);
78+
}
5379
}

0 commit comments

Comments
 (0)