Skip to content

anchor-migration/java-ast-ssot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java AST SSOT

Part of Anchor Migration — generic Java source AST exporter with optional stack profiles.

ADR-002 — core vs stack profiles
ADR-004 — crosswalk contract

Related (horizontal): stubborn compiles SCIP symbol graphs into token-bounded LLM stubs. It complements — does not replace — this exporter for crosswalk, Explorer, or rewrite. See ADR-010.

Breaking release: 1.0.0-SNAPSHOT — no compatibility with v0.x SQLite files or package names.

Package layout

com.anchor.migration.javaastssot
├── core/                 # Always runs
│   ├── extract/          # JavaParser
│   ├── model/            # java_type, method, field, …
│   └── store/            # SQLite core schema + writer
├── profile/              # Optional stack adapters
│   ├── javaee/ejb2jboss/ # Profile javaee-ejb2-jboss
│   ├── jpa/              # Profile jpa (@Entity / @Table / @Column)
│   └── mybatis/          # Profile mybatis (mapper XML, SQL artifacts)
├── crosswalk/            # Link code SSOT ↔ schema SSOT (ADR-004)
├── listusage/            # On-demand list classifier (ADR-008 M2)
└── cli/                  # export, classify-lists, crosswalk, info, profiles

CLI

# Core only
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar export \
  -s /path/to/src -o metadata/java.db

# Duke's Bank (Java EE profile)
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar export \
  -s /path/to/bank \
  --profile javaee-ejb2-jboss \
  -o metadata/dukesbank-code.db

# JPA entities (post CMP→JPA rewrite)
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar export \
  -s /path/to/bank \
  --profile jpa \
  -o metadata/dukesbank-jpa-code.db

# MyBatis mappers (XML resultMap + JOIN read models)
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar export \
  -s /path/to/bank \
  --profile mybatis \
  -o metadata/dukesbank-mybatis-code.db

java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar profiles
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar info -d metadata/java.db

# Link code SSOT to schema SSOT (after db-metadata export)
# Alignment (ADR-005): bidirectional color_forward / color_backward on each link
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar crosswalk \
  --code-db metadata/dukesbank-code.db \
  --schema-db metadata/dukesbank.db \
  --db-schema dukesbank \
  -o metadata/dukesbank-linked.db

# On-demand list usage classifier (ADR-008 M2 — no cache)
java -jar target/java-ast-ssot-1.0.0-SNAPSHOT.jar classify-lists \
  -s /path/to/bank/src \
  --paths com/sun/ebank/ejb/account/AccountControllerBean.java \
  -o /tmp/list-usage.json

See docs/list-usage-classifier.md.

Schema

Layer DDL Tables
Core schema/core/v1.sql export_run, java_type, java_method, …, source_comment
Profile schema/profiles/javaee-ejb2-jboss/v1.sql javaee_ejb2_jboss_*
Profile schema/profiles/jpa/v1.sql jpa_entity, jpa_field
Profile schema/profiles/mybatis/v1.sql mybatis_result_map, mybatis_result_field, mybatis_statement, …
Crosswalk (link output) schema/crosswalk/v1.sql crosswalk_run, code_schema_link (+ alignment columns), crosswalk_issue

Sidecars (core)

Sidecar Table / tool Purpose
Comments source_comment Raw comment blocks (line, block, javadoc); no v1 semantic links to AST nodes — ADR-003

On-demand analysis (not core SQLite)

Tool Output Purpose
classify-lists Ephemeral JSON ADR-008 M2 — raw collection homogeneous / tuple / unknown; consumed by rewrite-recipes L2/L3 — docs/list-usage-classifier.md

Build

mvn test package

Without local Maven (Docker):

docker run --rm -v "$PWD:/app" -w /app maven:3.9-eclipse-temurin-17 mvn -B test package

Duke's Bank end-to-end (MySQL in demo-dukesbank Docker Compose, JDBC on localhost:3306):

# 1. Schema SSOT (host Python db-metadata → Docker MySQL)
db-migration export --url "mysql+pymysql://dukesbank:dukesbank@localhost:3306/dukesbank" \
  --out metadata/dukesbank.db

# 2–4. Build + export + crosswalk (Docker Maven; mount bank source separately)
# See demo-dukesbank/README.md for full commands and Windows paths.

On Windows PowerShell, use C:/github/anchor-migration/java-ast-ssot as the mount path instead of $PWD if needed.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages