#!/usr/bin/env bash # Runs FormatMapperProbe under five classpaths and writes output/09-format-mapper-matrix.txt. # Needs PostgreSQL up (scripts/start-databases.sh) and `mvn test-compile` done. set -uo pipefail cd "$(dirname "$0")/.." OUT=output/09-format-mapper-matrix.txt mkdir -p output target/cp mvn -B -q test-compile >/dev/null 2>&1 cp_for() { # name, extra mvn args... local name="$1"; shift mvn -B -q dependency:build-classpath -Dmdep.includeScope=test -Dmdep.outputFile="target/cp/$name.txt" "$@" >/dev/null 2>&1 } drop() { tr ':' '\n' < "target/cp/$1.txt" | grep -v -E "$2" | paste -sd: - > "target/cp/$3.txt"; } cp_for j3 # Jackson 3 only: what Spring Boot 4 gives you cp_for j2j3 -Pjackson2 # Jackson 2 and Jackson 3 side by side cp_for j2j3t -Pjackson2,jsr310 # ... plus jackson-datatype-jsr310 for Jackson 2 drop j2j3 '/tools/jackson/' j2 # Jackson 2 only drop j2j3t '/tools/jackson/' j2t # Jackson 2 only, with jsr310 drop j3 '/tools/jackson/|/com/fasterxml/jackson/' none # no Jackson at all run() { # label, classpath-name, setting local label="$1" cpname="$2" setting="${3:-}" echo "== $label" java -cp "target/test-classes:target/classes:$(cat target/cp/$cpname.txt)" com.ankurm.jsoncolumns.FormatMapperProbe "$setting" 2>&1 \ | grep -E '^(setting|on classpath|mapper|stored|read back|FAILED)' echo } { echo "# Hibernate $(grep -o 'hibernate-core-[0-9.A-Za-z]*' target/cp/j3.txt | head -1)" run "A. Jackson 3 only, setting not set" j3 run "B. Jackson 2 + Jackson 3, setting not set" j2j3 run "C. Jackson 2 only, setting not set" j2 run "D. no Jackson at all, setting not set" none run "E. Jackson 2 + Jackson 3, setting = jackson (Jackson 2)" j2j3 jackson run "F. Jackson 3 only, setting = jackson (Jackson 2 absent)" j3 jackson run "G. Jackson 2 + Jackson 3, setting = jackson3" j2j3 jackson3 run "H. Jackson 2 + jackson-datatype-jsr310, setting not set" j2t run "I. Jackson 2 + Jackson 3 + jsr310, setting not set" j2j3t } > "$OUT" cat "$OUT"