This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
SQLBridge v2 is a Spring Boot-based REST API service written in Groovy that acts as a database connectivity bridge. It provides configurable endpoints for executing SQL queries against multiple database systems using XML-based configuration.
./gradlew bootRun./gradlew bootJar # Creates sqlbridge.jar in build/libs/./gradlew test./gradlew clean build- Main Config:
conf/sqlbridge-config.xml- Defines database actions, SQL scripts, and JNDI mappings - DataSources:
conf/sqlbridge-datasource.propertiesandconf/local-sqlbridge-datasource.properties- Database connection configurations - Hot Reload: ConfigXml.groovy supports configuration reloading (currently disabled via commented scheduler)
Primary controller: DataLinkRestController.groovy
GET /sqlbridge/dataconnect/selectAction- Execute select queries with XML responseGET /sqlbridge/dataconnect/jsonAction- Execute queries with JSON responsePOST /sqlbridge/dataconnect/xmlPostAction- Handle XML POST requests
- DatabaseService.groovy: Manages multiple DataSource connections with HikariCP pooling
- MultiDataSourceConfig.groovy: Handles multiple database configurations
- Supports: SQL Server (with integrated auth), Oracle, IBM iSeries DB2, HSQLDB, CSV JDBC
- Request parameters evaluated by key script (from XML config)
- JNDI name resolved to select appropriate database
- SQL script evaluated with request parameters using Groovy templating
- Query executed against selected database
- Results formatted (XML/JSON/tab-separated) and returned
The codebase uses Groovy SQL for database operations. Example pattern:
sql.eachRow(sqlQuery) { row ->
// Process row
}Actions in sqlbridge-config.xml follow this pattern:
<actions>
<action name="actionName">
<key>// Groovy script to evaluate key</key>
<script>// SQL query with ${param} placeholders</script>
<jndi>DataSourceName</jndi>
</action>
</actions>- Application logs to
logs/sqlbridge.logwith rotation - Request/response logging configured in application.properties
- Use SLF4J logger:
log.info(),log.error(), etc.
To serve additional web applications (e.g., visposteringer):
- Place files under
/webappsin project root - Access via
http://localhost:8080/{app-name}/ - Enable by uncommenting in application.properties:
spring.web.resources.static-locations=file:/webapps
- Connection pooling via HikariCP
- Dynamic DataSource selection based on request parameters
- Integrated Windows authentication support for SQL Server
- Connection properties defined in
conf/*-datasource.properties
- Spring Boot test framework with JUnit 5
- Test classes in
src/test/groovy/ - Use
@SpringBootTestfor integration tests - Mock database connections with HSQLDB for unit tests