#!/usr/bin/sh

#
# execute site local script if available
#
if [ -x "$0.local" ]; then
	exec "$0.local"
	exit 1
fi

#
# Check if we have a valid JRE: OpenJDK 11 or newer
#
validjre() {
	local java_bin="$1"
	local ret=1

	if [ -x "${java_bin}" ]; then
		local java_version=$("${java_bin}" -version 2>&1)
		local java_major_version=$(echo "$java_version" | grep "openjdk version" | awk '{print $3}' | tr -d '"' | cut -d. -f1)
		if [ "$java_major_version" -ge 11 ] && echo "$java_version" | grep -q "OpenJDK"; then
			ret=0
		fi
	fi
	return ${ret}
}

#
# If system environment contains
# our specific java look only this one
#
if [ -n "${OVIRT_ENGINE_JAVA_HOME}" ]; then
	if [ -n "${OVIRT_ENGINE_JAVA_HOME_FORCE}" ] || validjre "${OVIRT_ENGINE_JAVA_HOME}/bin/java"; then
		JAVA_HOME="${OVIRT_ENGINE_JAVA_HOME}"
	else
		echo "OVIRT_ENGINE_JAVA_HOME (${OVIRT_ENGINE_JAVA_HOME}) is not a valid JRE" >&2
		exit 1
	fi
fi

#
# Try to use the java that is already in the environment
#
SYSTEM_JAVA="$(readlink -f $(which java))"
if [ -z "$JAVA_HOME" ] && [ -n "$SYSTEM_JAVA" ]; then
	JAVA_HOME=$(dirname $(dirname $SYSTEM_JAVA))
	if ! validjre "$SYSTEM_JAVA"; then
		echo "JRE ($JAVA_HOME) is not valid" >&2
		exit 1
	fi
fi

[ -z "${JAVA_HOME}" ] && exit 1

echo "${JAVA_HOME}"
exit 0
