# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

JAVA_PKG_IUSE="doc source test"
JAVA_TESTING_FRAMEWORKS="junit-jupiter"
MAVEN_ID="com.mysql:mysql-connector-j:9.4.0"

inherit java-pkg-2 java-pkg-simple junit5

# Bundling binary versions of oci-java-sdk-common
# According to src/build/misc/pom.xml
OSC="3.66.0"

DESCRIPTION="JDBC Type 4 driver for MySQL"
HOMEPAGE="https://dev.mysql.com/doc/connector-j/en/"
SRC_URI="https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-${PV}.tar.gz
	https://repo1.maven.org/maven2/com/oracle/oci/sdk/oci-java-sdk-common/${OSC}/oci-java-sdk-common-${OSC}.jar"

S="${WORKDIR}/mysql-connector-j-${PV}"

LICENSE="GPL-2-with-MySQL-FLOSS-exception"
SLOT="0"
KEYWORDS="~amd64"

# Most tests fail with:
# Cannot connect to MySQL server on localhost:3,306.
# Make sure that there is a MySQL server running on the machine/port you are trying to
# connect to and that the machine this software is running on is able to connect to
# this host/port (i.e. not firewalled). Also make sure that the server has not been
# started with the --skip-networking flag.
RESTRICT="test"

CP_DEPEND="
	dev-java/c3p0:0
	dev-java/opentelemetry-java:0
	>=dev-java/protobuf-java-4.31.1:0
	dev-java/slf4j-api:0
"

DEPEND="
	${CP_DEPEND}
	>=dev-java/guava-33.4.8:0
	dev-java/incap:0
	dev-java/javapoet:0
	>=virtual/jdk-1.8:*
	test? ( dev-java/hamcrest:0 )
"

RDEPEND="
	${CP_DEPEND}
	>=dev-java/bcpkix-1.80:0
	>=dev-java/bcprov-1.80:0
	>=dev-java/jakarta-annotation-api-3.0.0:0
	>=virtual/jre-1.8:*
"

DOCS=( CHANGES README )

JAVA_CLASSPATH_EXTRA="guava incap javapoet"
JAVA_GENTOO_CLASSPATH_EXTRA="${DISTDIR}/oci-java-sdk-common-${OSC}.jar"
JAVA_JAR_FILENAME="mysql-connector-j.jar"
JAVA_RESOURCE_DIRS="src/main/resources"
JAVA_SRC_DIR=(
	"src/generated"
	"src/legacy/java"
	"src/main/core-api/java"
	"src/main/core-impl/java"
	"src/main/protocol-impl/java"
	"src/main/user-api/java"
	"src/main/user-impl/java"
)
JAVA_TEST_GENTOO_CLASSPATH="hamcrest junit-5"
JAVA_TEST_SRC_DIR="src/test/java"

src_prepare() {
	java-pkg-2_src_prepare
	mkdir -p src/main/resources/META-INF/services || die "META-INF"
	# populate META-INF/services according to line 801 build.xml
	echo com.mysql.cj.jdbc.Driver \
		> src/main/resources/META-INF/services/java.sql.Driver || die "META-INF"
}

src_install() {
	java-pkg-simple_src_install
	java-pkg_newjar "${DISTDIR}/oci-java-sdk-common-${OSC}.jar" oci-java-sdk-common.jar
	java-pkg_regjar "${ED}/usr/share/jdbc-mysql/lib/oci-java-sdk-common.jar"
	java-pkg_register-dependency bcpkix,bcprov,jakarta-annotation-api
}