#!/usr/bin/env bash # Facts read from jars: the Jakarta Persistence SPI change and whether Spring implements it. set -uo pipefail cd "$(dirname "$0")/.." W=$(mktemp -d); R="$HOME/.m2/repository" for a in jakarta.persistence:jakarta.persistence-api:3.2.0 jakarta.persistence:jakarta.persistence-api:4.0.0-M7 org.springframework:spring-orm:7.0.9 org.springframework:spring-orm:7.1.0-M2; do mvn -B -q dependency:get -Dartifact=$a >/dev/null 2>&1 done { echo "# persistence-spi (javap on jakarta.persistence.spi.PersistenceUnitInfo, and on Spring's implementation)" for v in 3.2.0 4.0.0-M7; do javap -cp "$R/jakarta/persistence/jakarta.persistence-api/$v/jakarta.persistence-api-$v.jar" jakarta.persistence.spi.PersistenceUnitInfo 2>/dev/null \ | grep -E 'public abstract|public default' | sed 's/^ *//; s/jakarta.persistence.spi.//g; s/java.util.//g; s/java.lang.//g; s/jakarta.persistence.//g' | sort > "$W/spi-$v.txt" done echo "--- methods that exist in Jakarta Persistence 4.0.0-M7 but not in 3.2.0" comm -13 "$W/spi-3.2.0.txt" "$W/spi-4.0.0-M7.txt" | sed 's/^/ /' for v in 7.0.9 7.1.0-M2; do echo "--- org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo $v: methods mentioning those names" all=$(javap -cp "$R/org/springframework/spring-orm/$v/spring-orm-$v.jar" org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo 2>/dev/null | grep -c '(' || true) n=$(javap -cp "$R/org/springframework/spring-orm/$v/spring-orm-$v.jar" org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo 2>/dev/null | grep -c -E 'AllPackageDescriptors|DefaultToOneFetchType|AllClassNames|ModuleDescriptors|ManagedPackageDescriptors' || true) echo " class found, $all methods and constructors listed; matches for the six new names: $n" done } > output/06-persistence-spi.txt { echo "# dependency-versions (hibernate-core 8.0.0.Beta3 POM: what it declares)" curl -s https://repo1.maven.org/maven2/org/hibernate/orm/hibernate-core/8.0.0.Beta3/hibernate-core-8.0.0.Beta3.pom \ | grep -B1 -A2 -E '(hibernate-models|jakarta.persistence-api|byte-buddy|jandex)' | grep -E 'artifactId|version' | sed 's/^ *//' | paste -sd' ' - | sed 's##\n#g' | sed 's/^ *//' | grep -v '^$' } > output/07-hibernate-core-pom.txt