diff --git a/lib/json/test/Makefile.am b/lib/json/test/Makefile.am
new file mode 100644
index 0000000..bb87a52
--- /dev/null
+++ b/lib/json/test/Makefile.am
@@ -0,0 +1,26 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+check:
+	$(ANT) $(ANT_FLAGS) test
+
+# Make sure this doesn't fail if ant is not configured.
+clean-local:
+	ANT=$(ANT) ; if test -z "$$ANT" ; then ANT=: ; fi ; \
+	$$ANT $(ANT_FLAGS) clean
diff --git a/lib/json/test/build.properties b/lib/json/test/build.properties
new file mode 100644
index 0000000..075f640
--- /dev/null
+++ b/lib/json/test/build.properties
@@ -0,0 +1,10 @@
+# Jar versions
+mvn.ant.task.version=2.1.3
+
+# Dependency versions
+json-schema-validator.version=2.2.6
+
+# Maven dependency download locations
+mvn.repo=http://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/lib/json/test/build.xml b/lib/json/test/build.xml
new file mode 100644
index 0000000..956a238
--- /dev/null
+++ b/lib/json/test/build.xml
@@ -0,0 +1,144 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+-->
+<project name="JSON Schema Test" default="test" basedir="."
+  xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+
+  <description>JSON Schema Validation Test</description>
+
+  <property name="build.dir" location="${basedir}/build" />
+  <property name="json.dir" location="${basedir}/.." />
+  <property name="gen.json.dir" location="${build.dir}/gen-json" />
+  <property name="json.schema" location="${json.dir}/schema.json" />
+  <property name="build.tools.dir" location="${build.dir}/tools"/>
+  <property name="build.lib.dir" location="${build.dir}/lib"/>
+
+  <!-- the root directory, where you unpack thrift distibution (e.g. thrift-0.x.x.tar.gz) -->
+  <property name="thrift.dir" location="../../../" />
+  <property name="thrift.test.dir" location="${thrift.dir}/test" />
+  <property name="thrift.compiler" location="${thrift.dir}/compiler/cpp/thrift" />
+
+  <!-- Get maven dependency versions from here -->
+  <property file="${basedir}/build.properties" />
+
+  <path id="test.classpath">
+    <fileset dir="${build.lib.dir}">
+      <include name="*.jar" />
+    </fileset>
+  </path>
+
+  <target name="compiler.check">
+    <fail>
+      <condition>
+        <not>
+          <resourcecount count="1">
+            <fileset id="fs" file="${thrift.compiler}"/>
+          </resourcecount>
+        </not>
+      </condition>
+      Thrift compiler is missing !
+    </fail>
+  </target>
+
+  <target name="init" depends="compiler.check, mkdirs, mvn.init">
+    <tstamp />
+  </target>
+
+  <target name="mkdirs">
+    <mkdir dir="${build.dir}"/>
+    <mkdir dir="${build.lib.dir}"/>
+    <mkdir dir="${build.tools.dir}"/>
+    <mkdir dir="${gen.json.dir}"/>
+  </target>
+
+  <target name="generate" depends="init">
+    <exec executable="${thrift.compiler}" failonerror="true">
+      <arg line="--gen json"/>
+      <arg line="-out ${gen.json.dir}"/>
+      <arg line="${thrift.test.dir}/ThriftTest.thrift"/>
+    </exec>
+    <exec executable="${thrift.compiler}" failonerror="true">
+      <arg line="--gen json:merge"/>
+      <arg line="-out ${gen.json.dir}"/>
+      <arg line="${thrift.test.dir}/Include.thrift"/>
+    </exec>
+  </target>
+
+  <target name="test" description="run schema validation"
+          depends="validate-schema, validate-generated-json"/>
+
+  <target name="validate-schema" depends="init">
+    <java classname="com.github.fge.jsonschema.main.cli.Main"
+          classpathref="test.classpath" failonerror="true">
+      <arg value="--syntax"/>
+      <arg value="${json.schema}"/>
+    </java>
+  </target>
+
+  <target name="validate-generated-json" depends="init, generate">
+    <validate-json file="${gen.json.dir}/ThriftTest.json"/>
+    <validate-json file="${gen.json.dir}/Include.json"/>
+  </target>
+
+  <target name="clean">
+    <delete dir="${build.dir}" />
+    <delete dir="${gen.json.dir}" />
+  </target>
+
+  <target name="mvn.ant.tasks.download" depends="mkdirs,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="mvn.init" depends="mvn.ant.tasks.download" unless="mvn.finished">
+    <typedef uri="antlib:org.apache.maven.artifact.ant" classpath="${build.tools.dir}/${mvn.ant.task.jar}"/>
+
+    <artifact:dependencies filesetId="test.dependency.jars">
+      <dependency groupId="com.github.fge" artifactId="json-schema-validator" version="${json-schema-validator.version}"/>
+    </artifact:dependencies>
+
+    <!-- Copy the dependencies to the build/lib dir -->
+    <copy todir="${build.lib.dir}">
+      <fileset refid="test.dependency.jars"/>
+      <mapper type="flatten"/>
+    </copy>
+
+    <property name="mvn.finished" value="true"/>
+  </target>
+
+  <macrodef name="validate-json">
+    <attribute name="file" default=""/>
+    <sequential>
+      <java failonerror="true"
+            fork="true"
+            dir="${json.dir}"
+            classname="com.github.fge.jsonschema.main.cli.Main"
+            classpathref="test.classpath">
+        <arg line="--fakeroot http://thrift.apache.org/"/>
+        <arg value="${json.schema}"/>
+        <arg value="@{file}"/>
+      </java>
+    </sequential>
+  </macrodef>
+
+</project>
