playbook/antigravity-awesome-skills/skills/ecl-harness-engineer/references/adapters/java.md

6.9 KiB

adapter
language display_name version detection commands package_manager route_detection import_analysis layer_conventions dependency_detection linter naming ci
java Java / Kotlin 1.0
files content_patterns confidence
pom.xml
build.gradle
build.gradle.kts
settings.gradle
settings.gradle.kts
file pattern
pom.xml <groupId>
file pattern
build.gradle.kts plugins|dependencies
0.90
build test lint lint_arch format start dev
null null null null null null null
detection default install_command
lockfile manager
pom.xml maven
lockfile manager
build.gradle gradle
lockfile manager
build.gradle.kts gradle
maven null
server_indicators cli_indicators frontend_indicators patterns
pattern description frameworks
@RestController|@Controller|@RequestMapping Spring MVC/Boot controller
spring
pattern description frameworks
import io.micronaut Micronaut framework
micronaut
pattern description frameworks
import io.quarkus Quarkus framework
quarkus
pattern description frameworks
import io.vertx Vert.x framework
vertx
pattern description frameworks
import io.ktor Ktor framework (Kotlin)
ktor
pattern description frameworks
import io.javalin Javalin web framework
javalin
pattern description frameworks
import picocli|@CommandLine picocli CLI framework
picocli
pattern description frameworks
public static void main(String Java main method (potential CLI)
stdlib
type regex groups frameworks
route @(GetMapping|PostMapping|PutMapping|DeleteMapping|PatchMapping)\s*(\s*(?:value\s*=\s*)?["\x27]([^"\x27]*)["\x27]
method
path
spring
type regex groups frameworks
route @RequestMapping\s*(.*(?:value|path)\s*=\s*["\x27]([^"\x27]+)["\x27].*method\s*=\s*RequestMethod.(\w+)
path
method
spring
type regex groups frameworks
route (get|post|put|delete|patch)\s*(\s*["\x27]([^"\x27]+)["\x27]
method
path
ktor
type regex groups frameworks
route app.(get|post|put|delete|patch)\s*(\s*["\x27]([^"\x27]+)["\x27]
method
path
javalin
list_packages import_pattern source_extensions module_root_file
null ^import\s+([\w.]+)
.java
.kt
pom.xml
patterns
layer paths description
0
src/main/java/**/model
src/main/java/**/entity
src/main/java/**/dto
Domain models, entities, DTOs
layer paths description
1
src/main/java/**/util
src/main/java/**/common
src/main/java/**/config
Utilities and configuration
layer paths description
2
src/main/java/**/service
src/main/java/**/repository
src/main/java/**/dao
Service and data access layer
layer paths description
3
src/main/java/**/controller
src/main/java/**/api
src/main/java/**/resource
REST controllers, API endpoints
layer paths description
4
src/main/java/**/Application.java
src/main/java/**/Main.java
Application entry point
manifest_file databases services env_var_patterns
pom.xml
pattern type default_port
postgresql|postgres postgres 5432
pattern type default_port
mysql-connector mysql 3306
pattern type default_port
mongodb-driver|mongo-java-driver mongodb 27017
pattern type default_port
jedis|lettuce-core|spring-data-redis redis 6379
pattern type default_port
h2|sqlite-jdbc sqlite 0
pattern type default_port
kafka-clients|spring-kafka kafka 9092
pattern type default_port
amqp-client|spring-amqp|spring-rabbit rabbitmq 5672
pattern type default_port
elasticsearch-rest-client|spring-data-elasticsearch elasticsearch 9200
pattern
System.getenv(\s*["\x27]([^"\x27]+)["\x27])
pattern
\$\{([A-Z_][A-Z0-9_]*)\}
template_section script_extension run_command
java-linter .java null
file_pattern test_pattern directory_style
^[A-Z][a-zA-Z0-9]*.java$ ^[A-Z][a-zA-Z0-9]*Test.java$ lowercase
github_actions
image setup_steps cache_paths
null
uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21'
~/.m2/repository
~/.gradle/caches

Java / Kotlin Adapter

Build Tool Detection

File Build Tool Build Command Test Command
pom.xml Maven mvn package -DskipTests mvn test
build.gradle Gradle (Groovy) ./gradlew build -x test ./gradlew test
build.gradle.kts Gradle (Kotlin DSL) ./gradlew build -x test ./gradlew test

If mvnw or gradlew wrapper exists, prefer the wrapper over system-installed tool.

Server Start Command Inference

  1. Existing harness/config/environment.json startup command, if present
  2. Spring Boot → ./gradlew bootRun or mvn spring-boot:run
  3. Fat JAR exists → java -jar target/*.jar or java -jar build/libs/*.jar
  4. Main class annotated with @SpringBootApplication → infer from pom.xml/build.gradle

Framework-Specific Notes

Spring Boot

  • Routes via annotations: @GetMapping("/path"), @PostMapping("/path")
  • Controller prefix: @RequestMapping("/api/v1") on class
  • Auto-configuration: application.properties or application.yml
  • Default port: 8080 (configurable via server.port)
  • Actuator health: /actuator/health

Micronaut

  • Similar annotation style to Spring: @Get("/path"), @Post("/path")
  • Compile-time DI (no reflection)
  • Default port: 8080

Ktor (Kotlin)

  • DSL-based routing: routing { get("/path") { ... } }
  • Configuration via application.conf (HOCON) or application.yaml

Testing Patterns

  • JUnit 5 is standard: @Test, @ParameterizedTest
  • Kotlin: same JUnit 5 + kotest as alternative
  • Integration tests often use @SpringBootTest + Testcontainers
  • Test directory: src/test/java/ or src/test/kotlin/