Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions .github/workflows/docker-image-early-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,8 @@ jobs:
shell: bash
run: |
# Move SchemaCrawler AI distribution
echo "Move SchemaCrawler AI distribution"
pwd
mv ./schemacrawler-ai-distrib/target/_ai-distrib .
ls -l ./_ai-distrib
echo "NO NEED TO MOVE DISTRIBUTION"
echo "The Early Access Release Docker Image build will pick it up from the target directory"


# CREATE GITHUB RELEASE AND ADD ASSETS
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
lib/
tree.txt
*.txt
**/gpl*.*
.idea/
_ai-distrib/
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.early-access-release
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ LABEL \

# Copy SchemaCrawler AI extra distribution jars from the build directory
COPY \
./_ai-distrib/ \
./schemacrawler-ai-distrib/target/_ai-distrib/ \
/opt/schemacrawler/

CMD ["bash", "/opt/schemacrawler/bin/schemacrawler-ai.sh"]
13 changes: 13 additions & 0 deletions docs/test-docker-image.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Build a Test Docker Image

1. Run a Maven build from the root directory
2. Run Docker BuildX to build a test image

```
docker buildx build \
--platform linux/arm64 \
--file ./Dockerfile.early-access-release \
--tag schemacrawler/schemacrawler-ai:test \
--load \
.
```
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
import tools.jackson.databind.PropertyNamingStrategies;
Expand All @@ -24,7 +25,7 @@
@JsonPropertyOrder({"db", "tables", "routines"})
public final class CatalogDocument implements Document {

private static final long serialVersionUID = -1937966351313941597L;
@Serial private static final long serialVersionUID = -1937966351313941597L;

private final String databaseProductName;
private final List<TableDocument> tables;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import schemacrawler.schema.Column;
import tools.jackson.databind.PropertyNamingStrategies;
import tools.jackson.databind.annotation.JsonNaming;
Expand All @@ -25,7 +26,7 @@
@JsonPropertyOrder({"name", "remarks", "data-type", "referenced-column"})
public final class ColumnDocument implements Document {

private static final long serialVersionUID = 5110252842937512910L;
@Serial private static final long serialVersionUID = 5110252842937512910L;

private final String columnName;
private final String dataType;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import schemacrawler.schema.DatabaseObject;
import tools.jackson.databind.PropertyNamingStrategies;
import tools.jackson.databind.annotation.JsonNaming;
Expand All @@ -26,7 +27,7 @@
@JsonPropertyOrder({"schema", "name", "type"})
public final class DatabaseObjectDocument implements Document {

private static final long serialVersionUID = -2159895984317222363L;
@Serial private static final long serialVersionUID = -2159895984317222363L;

private final String schemaName;
private final String databaseObjectName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import schemacrawler.schema.ColumnReference;
import schemacrawler.schema.ForeignKey;
import schemacrawler.schema.Table;
Expand All @@ -26,7 +27,7 @@
@JsonPropertyOrder({"name", "referenced-table"})
public final class ForeignKeyDocument implements Document {

private static final long serialVersionUID = 1873929712139211255L;
@Serial private static final long serialVersionUID = 1873929712139211255L;

private final String foreignKeyName;
private final String referencedTableName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import java.util.List;
import java.util.stream.Collectors;
import schemacrawler.schema.Index;
Expand All @@ -28,7 +29,7 @@
@JsonPropertyOrder({"name", "columns", "is-unique"})
public final class IndexDocument implements Document {

private static final long serialVersionUID = 1873929712139211255L;
@Serial private static final long serialVersionUID = 1873929712139211255L;

private final String indexName;
private final List<String> columns;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import schemacrawler.schema.Column;
import schemacrawler.schema.Table;
import tools.jackson.databind.PropertyNamingStrategies;
Expand All @@ -26,7 +27,7 @@
@JsonPropertyOrder({"schema", "table", "name"})
public final class ReferencedColumnDocument implements Document {

private static final long serialVersionUID = -4296619897674250692L;
@Serial private static final long serialVersionUID = -4296619897674250692L;

private final String schemaName;
private final String tableName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -44,7 +45,7 @@
})
public final class RoutineDocument implements Document {

private static final long serialVersionUID = 1873929712139211255L;
@Serial private static final long serialVersionUID = 1873929712139211255L;

public static Map<AdditionalRoutineDetails, Boolean> allRoutineDetails() {
final Map<AdditionalRoutineDetails, Boolean> details;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import schemacrawler.schema.Routine;
import schemacrawler.schema.RoutineParameter;
import tools.jackson.databind.PropertyNamingStrategies;
Expand All @@ -26,7 +27,7 @@
@JsonPropertyOrder({"name", "mode", "data-type", "remarks"})
public final class RoutineParameterDocument implements Document {

private static final long serialVersionUID = 5110252842937512910L;
@Serial private static final long serialVersionUID = 5110252842937512910L;

private final String routineParameterName;
private final String parameterMode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -61,7 +62,7 @@
})
public final class TableDocument implements Document {

private static final long serialVersionUID = 1873929712139211255L;
@Serial private static final long serialVersionUID = 1873929712139211255L;

private final String schemaName;
private final String tableName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import java.io.Serial;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
Expand All @@ -33,7 +34,7 @@
})
public final class TriggerDocument implements Document {

private static final long serialVersionUID = 1873929712139211255L;
@Serial private static final long serialVersionUID = 1873929712139211255L;

private final String triggerName;
private final String actionCondition;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ public FunctionReturn execute(final String argumentsString, final Connection con

if (LOGGER.isLoggable(Level.FINER)) {
LOGGER.log(
Level.FINER,
String.format("Executing%n%s", toCallObject(argumentsString).toPrettyString()));
Level.FINER, "Executing%n%s".formatted(toCallObject(argumentsString).toPrettyString()));
}

try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ private Pattern makeNameInclusionPattern(final String name) {
if (isBlank(name)) {
throw new IllegalArgumentException("Blank name provided");
}
final String pattern = String.format(".*%s.*", name);
final String pattern = ".*%s.*".formatted(name);
final int flags = Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE;
return Pattern.compile(pattern, flags);
}
Expand Down
2 changes: 0 additions & 2 deletions schemacrawler-ai-distrib/src/main/assembly/assembly-lib.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,12 @@
<exclude>org.slf4j:*</exclude>
<exclude>ch.qos.logback:*</exclude>
<exclude>com.azure:azure-core-test</exclude>
<exclude>com.fasterxml.jackson.*:*</exclude>
<exclude>info.picocli:*</exclude>
<exclude>javax.validation:*</exclude>
<exclude>org.apache.ant:*</exclude>
<exclude>org.junit.jupiter:*</exclude>
<exclude>org.junit.platform:*</exclude>
<exclude>org.opentest4j:*</exclude>
<exclude>org.yaml:*</exclude>
<exclude>org.graalvm.*:*</exclude>
<!-- SchemaCrawler dependencies -->
<exclude>us.fatehi:schemacrawler</exclude>
Expand Down
11 changes: 8 additions & 3 deletions schemacrawler-ai-mcpserver/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.5.7</version>
<version>3.5.8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down Expand Up @@ -67,6 +67,7 @@
<version>${project.version}</version>
</dependency>

<!-- Spring AI WebMVC starter, with substitued dependencies -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
Expand All @@ -77,11 +78,14 @@
</exclusion>
</exclusions>
</dependency>
<!-- Replace excluded dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>

<!-- Add Spring Boot web starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Expand Down Expand Up @@ -115,12 +119,13 @@
<scope>test</scope>
</dependency>

<!-- Spring Boot test starters -->
<dependency>
<!-- Use a version consistent with Spring Boot provided by Spring AI -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

</dependencies>

<repositories>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@

import java.sql.Connection;
import java.util.Collection;
import org.jspecify.annotations.NonNull;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.lang.NonNull;
import schemacrawler.schema.Catalog;
import schemacrawler.schemacrawler.exceptions.SchemaCrawlerException;
import schemacrawler.tools.ai.mcpserver.utility.EmptyFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ private <DO extends DatabaseObject> DO lookupDatabaseObject(
|| databaseObject.getFullName().equalsIgnoreCase(searchObjectName))
.collect(Collectors.toList());
if (databaseObjects.isEmpty()) {
throw new IORuntimeException(String.format("<%s> not found", databaseObjectName));
throw new IORuntimeException("<%s> not found".formatted(databaseObjectName));
}
if (databaseObjects.size() > 1) {
throw new IORuntimeException(
String.format(
"<%s> has too many matches - provide a fully-qualified name", databaseObjectName));
"<%s> has too many matches - provide a fully-qualified name"
.formatted(databaseObjectName));
}

final DO databaseObject = databaseObjects.get(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public McpServerTransportType getMcpTransport() {
}

public String getServerName() {
return String.format("%s %s", serverName, serverVersion);
return "%s %s".formatted(serverName, serverVersion);
}

public Duration getServerUptime() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.notNullValue;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -62,11 +63,13 @@ void shouldHandleInvalidAdditionalConfigJson() {
@DisplayName("Should parse valid JSON from SCHCRWLR_ADDITIONAL_CONFIG into Config")
void shouldParseValidAdditionalConfigJson() {
final String json =
"{\n"
+ " \"transport\": \"http\",\n"
+ " \"exclude-tools\": \"tool1,tool2\",\n"
+ " \"custom-key\": \"custom-value\"\n"
+ "}";
"""
{
"transport": "http",
"exclude-tools": "tool1,tool2",
"custom-key": "custom-value"
}\
""";
envAccessor.put("SCHCRWLR_ADDITIONAL_CONFIG", json);
context = new SchemaCrawlerContext(envAccessor);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,6 @@ DatabaseConnectionSource databaseConnectionSource() {

@Autowired private ToolHelper toolHelper;

@Autowired
ToolHelperTest(final ConnectionService connectionService) {}

@Test
public void testToolCallHandler() throws Exception {
final TrivialFunctionDefinition functionDefinition = new TrivialFunctionDefinition();
Expand Down
Loading