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

EAPI=8

JAVA_PKG_IUSE="doc source"

inherit java-pkg-2 java-pkg-simple

MY_PN="netty"
MY_P="${MY_PN}-${PV}"
DESCRIPTION="Async event-driven framework for high performance network applications"
HOMEPAGE="https://netty.io/"
SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/${MY_P}.Final.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
IUSE="test"
RESTRICT="!test? ( test )"

CP_DEPEND="dev-java/commons-logging:0
	dev-java/javassist:3
	dev-java/log4j-12-api:2
	dev-java/log4j-core:2
	dev-java/slf4j-api:0"

RDEPEND="${CP_DEPEND}
	virtual/jre:1.8"

# It does not build with java 11, https://bugs.gentoo.org/788364
# src/main/java/io/netty/util/internal/Cleaner0.java:44: error: cannot find symbol
#                Cleaner cleaner = (Cleaner) cleanerField.get(direct);
#                ^
#  symbol:   class Cleaner
#  location: class Cleaner0
DEPEND="${CP_DEPEND}
	virtual/jdk:1.8
	test? (
		dev-java/asm:4
		dev-java/cglib:3
		dev-java/easymock:3.2
		dev-java/hamcrest-core:1.3
		dev-java/hamcrest-library:1.3
		dev-java/junit:4
		dev-java/mockito:0
		dev-java/objenesis:0
		dev-java/slf4j-simple:0
	)"

S="${WORKDIR}/${MY_PN}-${MY_P}.Final/${PN/${MY_PN}-}"
JAVA_SRC_DIR="src/main/java"

src_prepare() {
	default
	# Needs Mockito 1.10.
	rm -v src/test/java/io/netty/util/concurrent/PromiseCombinerTest.java || die
}

src_test() {
	cd src/test/java || die

	local CP=".:${S}/${PN}.jar:$(java-pkg_getjars --with-dependencies ${JAVA_GENTOO_CLASSPATH},asm-4,cglib-3,easymock-3.2,hamcrest-core-1.3,hamcrest-library-1.3,junit-4,mockito,objenesis,slf4j-simple)"
	local TESTS=$(find * -name "*Test.java")
	TESTS="${TESTS//.java}"
	TESTS="${TESTS//\//.}"

	ejavac -cp "${CP}" -d . $(find * -name "*.java")
	ejunit4 -classpath "${CP}" ${TESTS}
}