Add default jar wrapper when wrapper property is not specified

Bug: b/68779881
Test: manually copied the jar-wrapper.sh to out/soong/host/linux-x86/framework
Change-Id: Idee1e7e64c6e3c89c89a8cd9c107a38533356b6c
diff --git a/java/java.go b/java/java.go
index 1541dec..f9a4c04 100644
--- a/java/java.go
+++ b/java/java.go
@@ -869,7 +869,7 @@
 
 	binaryProperties binaryProperties
 
-	wrapperFile android.ModuleSrcPath
+	wrapperFile android.SourcePath
 	binaryFile  android.OutputPath
 }
 
@@ -882,7 +882,11 @@
 
 	// Depend on the installed jar (j.installFile) so that the wrapper doesn't get executed by
 	// another build rule before the jar has been installed.
-	j.wrapperFile = android.PathForModuleSrc(ctx, j.binaryProperties.Wrapper)
+	if j.binaryProperties.Wrapper != "" {
+		j.wrapperFile = android.PathForModuleSrc(ctx, j.binaryProperties.Wrapper).SourcePath
+	} else {
+		j.wrapperFile = android.PathForSource(ctx, "build/soong/scripts/jar-wrapper.sh")
+	}
 	j.binaryFile = ctx.InstallExecutable(android.PathForModuleInstall(ctx, "bin"),
 		ctx.ModuleName(), j.wrapperFile, j.installFile)
 }
diff --git a/scripts/jar-wrapper.sh b/scripts/jar-wrapper.sh
new file mode 100644
index 0000000..71c1d90
--- /dev/null
+++ b/scripts/jar-wrapper.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# Copyright (C) 2007 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    fullprog=`/bin/ls -ld "${prog}"`
+    fullprog=`expr "${fullprog}" : ".* -> \(.*\)$"`
+    if expr "x${fullprog}" : 'x/' >/dev/null; then
+        prog="${fullprog}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${fullprog}"
+    fi
+done
+
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=`basename "${prog}"`.jar
+jardir="${progdir}"
+
+if [ ! -r "${jardir}/${jarfile}" ]; then
+    jardir=`dirname "${progdir}"`/framework
+fi
+
+if [ ! -r "${jardir}/${jarfile}" ]; then
+    echo `basename "${prog}"`": can't find ${jarfile}"
+    exit 1
+fi
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+exec java ${javaOpts} -jar ${jardir}/${jarfile} "$@"