#!/usr/bin/env bash # Writes output/10-javap-*.txt: what the jars themselves say (constants, deprecations, setting names). # Needs the jars in ~/.m2, so run it after a Maven build of each Hibernate line (run-all.sh does). set -euo pipefail cd "$(dirname "$0")/.." M="$HOME/.m2/repository" H7="$M/org/hibernate/orm/hibernate-core/7.4.14.Final/hibernate-core-7.4.14.Final.jar" H8="$M/org/hibernate/orm/hibernate-core/8.0.0.Beta4/hibernate-core-8.0.0.Beta4.jar" P32="$M/jakarta/persistence/jakarta.persistence-api/3.2.0/jakarta.persistence-api-3.2.0.jar" P40="$M/jakarta/persistence/jakarta.persistence-api/4.0.0-M7/jakarta.persistence-api-4.0.0-M7.jar" jp() { javap "$@" 2>&1 | grep -v '^Picked up'; } mkdir -p output { for pair in "7.4.14.Final:$H7" "8.0.0.Beta4:$H8"; do v="${pair%%:*}"; j="${pair#*:}" echo "## hibernate-core $v: org.hibernate.annotations.TimeZoneStorageType" jp -cp "$j" org.hibernate.annotations.TimeZoneStorageType | grep 'public static final' echo "## hibernate-core $v: relevant setting names" jp -constants -cp "$j" org.hibernate.cfg.MappingSettings | grep -E 'JAVA_TIME|PREFERRED_INSTANT|TIMEZONE_DEFAULT' | sed 's/^ *//' jp -constants -cp "$j" org.hibernate.cfg.JdbcSettings | grep -E 'JDBC_TIME_ZONE' | sed 's/^ *//' done } > output/10-javap-hibernate-settings.txt { for pair in "3.2.0:$P32" "4.0.0-M7:$P40"; do v="${pair%%:*}"; j="${pair#*:}" echo "## jakarta.persistence-api $v: jakarta.persistence.Temporal" jp -v -cp "$j" jakarta.persistence.Temporal | grep -E 'Deprecated: true|since|public interface' echo "## jakarta.persistence-api $v: jakarta.persistence.Column second-precision attribute" jp -cp "$j" jakarta.persistence.Column | grep -iE 'precision' done } > output/10-javap-jakarta-persistence.txt ls -1 output/10-*