THRIFT-5553: use newer gradle API (#2561)

Prepare for moving to Gradle 7 by removing use of older Gradle directives
(except the use of maven; the transition to maven-publish is not included here)
diff --git a/tutorial/java/build.properties b/tutorial/java/build.properties
new file mode 100644
index 0000000..845048c
--- /dev/null
+++ b/tutorial/java/build.properties
@@ -0,0 +1,5 @@
+# Maven Ant tasks Jar details
+mvn.ant.task.version=2.1.3
+mvn.repo=https://repo1.maven.org/maven2
+mvn.ant.task.url=${mvn.repo}/org/apache/maven/maven-ant-tasks/${mvn.ant.task.version}
+mvn.ant.task.jar=maven-ant-tasks-${mvn.ant.task.version}.jar
diff --git a/tutorial/java/build.xml b/tutorial/java/build.xml
index 55cdb8f..3f83776 100644
--- a/tutorial/java/build.xml
+++ b/tutorial/java/build.xml
@@ -16,22 +16,29 @@
  specific language governing permissions and limitations
  under the License.
 -->
-<project name="tutorial" default="tutorial" basedir=".">
+<project name="tutorial" default="tutorial" basedir="."
+  xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 
   <description>Thrift Java Tutorial</description>
 
   <property name="src" location="src" />
   <property name="gen" location="gen-java" />
   <property name="build" location="build" />
+  <property file="${basedir}/build.properties"/>
+
+  <!-- the root directory, where you unpack thrift distibution (e.g.: thrift-0.x.x.tar.gz) -->
+  <property name="thrift.dir" location="../.." />
+  <property name="thrift.java.dir" location="${thrift.dir}/lib/java" />
+  <property name="build.tools.dir" location="${thrift.java.dir}/build/tools/"/>
 
   <path id="libs.classpath">
-    <fileset dir="../../lib/java/build/libs">
+    <fileset dir="${thrift.java.dir}/build/libs">
       <include name="libthrift*.jar" />
       <exclude name="libthrift*test.jar" />
       <exclude name="libthrift*javadoc.jar" />
       <exclude name="libthrift*sources.jar" />
     </fileset>
-    <fileset dir="../../lib/java/build/deps">
+    <fileset dir="${build}/lib">
       <include name="*.jar" />
     </fileset>
   </path>
@@ -47,11 +54,13 @@
 
   <target name="init">
     <tstamp />
+    <mkdir dir="${build.tools.dir}"/>
     <mkdir dir="${build}"/>
     <mkdir dir="${build}/log"/>
+    <mkdir dir="${build}/lib"/>
   </target>
 
-  <target name="compile" depends="init, generate">
+  <target name="compile" depends="init, generate, resolve">
     <javac compiler="modern" includeantruntime="false" srcdir="${gen}" destdir="${build}" classpathref="libs.classpath" />
     <javac compiler="modern" includeantruntime="false" srcdir="${src}" destdir="${build}" classpathref="build.classpath" />
   </target>
@@ -112,4 +121,34 @@
     <delete file="tutorial.jar" />
   </target>
 
+  <target name="mvn.ant.tasks.download" depends="init, mvn.ant.tasks.check" unless="mvn.ant.tasks.found">
+    <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/>
+  </target>
+
+  <target name="mvn.ant.tasks.check">
+    <condition property="mvn.ant.tasks.found">
+      <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>
+    </condition>
+  </target>
+
+  <target name="resolve" depends="mvn.ant.tasks.download" unless="mvn.finished">
+    <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${thrift.java.dir}/build/tools/${mvn.ant.task.jar}"/>
+
+    <artifact:dependencies filesetId="tutorial.dependency.jars">
+      <dependency groupId="org.apache.httpcomponents" artifactId="httpclient" version="4.0.1"/>
+      <dependency groupId="com.googlecode.jslint4java" artifactId="jslint4java-ant" version="1.4.6"/>
+      <dependency groupId="eu.medsea.mimeutil" artifactId="mime-util" version="2.1.3"/>
+      <dependency groupId="javax.annotation" artifactId="javax.annotation-api" version="1.3.2"/>
+      <remoteRepository url="${mvn.repo}"/>
+    </artifact:dependencies>
+
+    <!-- Copy the dependencies to the build/lib dir -->
+    <copy todir="${build}/lib">
+      <fileset refid="tutorial.dependency.jars"/>
+      <mapper type="flatten"/>
+    </copy>
+
+    <property name="mvn.finished" value="true"/>
+  </target>
+
 </project>
diff --git a/tutorial/java/src/JavaClient.java b/tutorial/java/src/JavaClient.java
index 2e35d41..bd0a155 100644
--- a/tutorial/java/src/JavaClient.java
+++ b/tutorial/java/src/JavaClient.java
@@ -47,11 +47,11 @@
         /*
          * Similar to the server, you can use the parameters to setup client parameters or
          * use the default settings. On the client side, you will need a TrustStore which
-         * contains the trusted certificate along with the public key. 
-         * For this example it's a self-signed cert. 
+         * contains the trusted certificate along with the public key.
+         * For this example it's a self-signed cert.
          */
         TSSLTransportParameters params = new TSSLTransportParameters();
-        params.setTrustStore("../../lib/java/test/.truststore", "thrift", "SunX509", "JKS");
+        params.setTrustStore("../../lib/java/test/resources/.truststore", "thrift", "SunX509", "JKS");
         /*
          * Get a client transport instead of a server transport. The connection is opened on
          * invocation of the factory method, no need to specifically call open()
@@ -67,7 +67,7 @@
       transport.close();
     } catch (TException x) {
       x.printStackTrace();
-    } 
+    }
   }
 
   private static void perform(Calculator.Client client) throws TException
diff --git a/tutorial/java/src/JavaServer.java b/tutorial/java/src/JavaServer.java
index 788473a..026889d 100644
--- a/tutorial/java/src/JavaServer.java
+++ b/tutorial/java/src/JavaServer.java
@@ -47,7 +47,7 @@
         public void run() {
           simple(processor);
         }
-      };      
+      };
       Runnable secure = new Runnable() {
         public void run() {
           secure(processor);
@@ -81,19 +81,19 @@
       /*
        * Use TSSLTransportParameters to setup the required SSL parameters. In this example
        * we are setting the keystore and the keystore password. Other things like algorithms,
-       * cipher suites, client auth etc can be set. 
+       * cipher suites, client auth etc can be set.
        */
       TSSLTransportParameters params = new TSSLTransportParameters();
       // The Keystore contains the private key
-      params.setKeyStore("../../lib/java/test/.keystore", "thrift", null, null);
+      params.setKeyStore("../../lib/java/test/resources/.keystore", "thrift", null, null);
 
       /*
        * Use any of the TSSLTransportFactory to get a server transport with the appropriate
        * SSL configuration. You can use the default settings if properties are set in the command line.
        * Ex: -Djavax.net.ssl.keyStore=.keystore and -Djavax.net.ssl.keyStorePassword=thrift
-       * 
+       *
        * Note: You need not explicitly call open(). The underlying server socket is bound on return
-       * from the factory class. 
+       * from the factory class.
        */
       TServerTransport serverTransport = TSSLTransportFactory.getServerSocket(9091, 0, null, params);
       TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
diff --git a/tutorial/js/build.properties b/tutorial/js/build.properties
new file mode 100644
index 0000000..845048c
--- /dev/null
+++ b/tutorial/js/build.properties
@@ -0,0 +1,5 @@
+# Maven Ant tasks Jar details
+mvn.ant.task.version=2.1.3
+mvn.repo=https://repo1.maven.org/maven2
+mvn.ant.task.url=${mvn.repo}/org/apache/maven/maven-ant-tasks/${mvn.ant.task.version}
+mvn.ant.task.jar=maven-ant-tasks-${mvn.ant.task.version}.jar
diff --git a/tutorial/js/build.xml b/tutorial/js/build.xml
index 03a6e7c..fc9fbdf 100644
--- a/tutorial/js/build.xml
+++ b/tutorial/js/build.xml
@@ -16,7 +16,8 @@
  specific language governing permissions and limitations
  under the License.
 -->
-<project name="tutorial" default="test" basedir=".">
+<project name="tutorial" default="test" basedir="."
+  xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 
   <description>Thrift JavaScript Tutorial</description>
 
@@ -24,11 +25,13 @@
   <property name="javasrc" location="../java/src" />
   <property name="gen" location="../java/gen-java" />
   <property name="build" location="build" />
+  <property file="${basedir}/build.properties"/>
 
   <!-- the root directory, where you unpack thrift distibution (e.g. thrift-0.x.x.tar.gz) -->
   <property name="thrift.dir" location="../../" />
   <!-- JavaScript tutorial depends on the java tutorial thrift handler and server infrastructure -->
   <property name="thrift.java.dir" location="${thrift.dir}/lib/java" />
+  <property name="build.tools.dir" location="${thrift.java.dir}/build/tools/"/>
 
   <path id="libs.classpath">
     <fileset dir="${thrift.java.dir}/build/libs">
@@ -37,7 +40,7 @@
       <exclude name="libthrift*javadoc.jar" />
       <exclude name="libthrift*sources.jar" />
     </fileset>
-    <fileset dir="${thrift.java.dir}/build/deps">
+    <fileset dir="${build}/lib">
       <include name="*.jar" />
     </fileset>
   </path>
@@ -50,9 +53,10 @@
   <target name="init">
     <tstamp />
     <mkdir dir="${build}"/>
+    <mkdir dir="${build}/lib"/>
   </target>
 
-  <target name="compile" depends="init">
+  <target name="compile" depends="init, resolve">
     <javac compiler="modern" includeantruntime="false" srcdir="${gen}" destdir="${build}" classpathref="libs.classpath" />
     <javac compiler="modern" includeantruntime="false" srcdir="${javasrc}" destdir="${build}" classpathref="build.classpath">
       <exclude name="JavaClient.java"/>
@@ -89,4 +93,35 @@
     <delete file="tutorial-js.jar" />
   </target>
 
+  <target name="mvn.ant.tasks.download" depends="init, mvn.ant.tasks.check" unless="mvn.ant.tasks.found">
+    <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/>
+  </target>
+
+  <target name="mvn.ant.tasks.check">
+    <condition property="mvn.ant.tasks.found">
+      <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>
+    </condition>
+  </target>
+
+  <target name="resolve" depends="mvn.ant.tasks.download" unless="mvn.finished">
+    <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${thrift.java.dir}/build/tools/${mvn.ant.task.jar}"/>
+
+    <artifact:dependencies filesetId="tutorial.dependency.jars">
+      <dependency groupId="org.apache.httpcomponents" artifactId="httpclient" version="4.0.1"/>
+      <dependency groupId="com.googlecode.jslint4java" artifactId="jslint4java-ant" version="1.4.6"/>
+      <dependency groupId="eu.medsea.mimeutil" artifactId="mime-util" version="2.1.3"/>
+      <dependency groupId="javax.annotation" artifactId="javax.annotation-api" version="1.3.2"/>
+      <dependency groupId="org.slf4j" artifactId="slf4j-api" version="1.7.5"/>
+      <remoteRepository url="${mvn.repo}"/>
+    </artifact:dependencies>
+
+    <!-- Copy the dependencies to the build/lib dir -->
+    <copy todir="${build}/lib">
+      <fileset refid="tutorial.dependency.jars"/>
+      <mapper type="flatten"/>
+    </copy>
+
+    <property name="mvn.finished" value="true"/>
+  </target>
+
 </project>