<?xml version="1.0"?>

<!--
  ~ 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="adb-codegen-test-source-generate" default="main" basedir=".">
	<description>
        Generate source code for tests...
    </description>

	<target name="main">

		<property name="compiled.classes.dir" value="target/classes"/>
		<!-- Theres got to be a better way to do this -->
		<property name="schema.source.dir" value="test-resources/xsd"/>
		<property name="testsuite.source.dir" value="test-resources/testsuite"/>
		<property name="schema.output.base.dir" value="target/schema"/>
		<property name="schema.generated.src.dir" value="${schema.output.base.dir}/src"/>
		<property name="schema.generated.classes.dir" value="${schema.output.base.dir}/classes"/>
		<!-- make the dirs -->
		<mkdir dir="${schema.output.base.dir}"/>
		<mkdir dir="${schema.generated.src.dir}"/>
		<mkdir dir="${schema.generated.classes.dir}"/>
		<!-- Run schema compiler with designated schemas -->
		<java classname="org.apache.axis2.schema.XSD2Java" fork="true" failonerror="true">
			<jvmarg line="${maven.junit.jvmargs}"/>
			<classpath refid="maven.dependency.classpath"/>
			<classpath location="${compiled.classes.dir}"/>
			<arg file="${schema.source.dir}/simple_maxOccurs2.xsd"/>
			<arg file="${schema.source.dir}/anonymous_complexType.xsd"/>
			<arg file="${schema.source.dir}/simple_choice.xsd"/>
			<arg file="${schema.source.dir}/simple_particle_all.xsd"/>
			<arg file="${schema.source.dir}/simple_maxOccurs.xsd"/>
			<arg file="${schema.source.dir}/simple_anytype.xsd"/>
			<arg file="${schema.source.dir}/simple-minoccurs0.xsd"/>
			<arg file="${schema.source.dir}/complex-minoccurs0.xsd"/>
			<arg file="${schema.source.dir}/simple-recursive-datatypes.xsd"/>
			<arg file="${schema.source.dir}/mixed_minoccus0.xsd"/>
			<arg file="${schema.source.dir}/simple/simpleType-All.xsd"/>
			<arg file="${schema.source.dir}/derived/derivedType-All.xsd"/>
			<arg file="${testsuite.source.dir}/testsuite.xsd"/>
			<arg file="${testsuite.source.dir}/extensions.xsd"/>
			<arg file="${testsuite.source.dir}/union.xsd"/>
			<arg file="${testsuite.source.dir}/all.xsd"/>
			<arg file="${testsuite.source.dir}/enumeration.xsd"/>
			<arg file="${testsuite.source.dir}/restrictions.xsd"/>
			<arg file="${testsuite.source.dir}/choice.xsd"/>
			<arg file="${testsuite.source.dir}/list.xsd"/>
			<arg file="${testsuite.source.dir}/references.xsd"/>
			<arg file="${testsuite.source.dir}/innerchoice.xsd"/>
			<arg file="${testsuite.source.dir}/attribute.xsd"/>
			<arg file="${testsuite.source.dir}/boolean.xsd"/>
			<arg file="${testsuite.source.dir}/particlemaxoccurs.xsd"/>
			<arg file="${testsuite.source.dir}/innerParticles.xsd"/>
			<arg file="${testsuite.source.dir}/default_namespaces.xsd"/>
			<arg file="${testsuite.source.dir}/groups.xsd"/>
			<arg file="${testsuite.source.dir}/base64binary.xsd"/>
			<arg file="${testsuite.source.dir}/abstract.xsd"/>
			<arg file="${testsuite.source.dir}/decimal.xsd"/>
			<arg file="${testsuite.source.dir}/anytype.xsd"/>
			<arg file="${testsuite.source.dir}/innerParticleExtension.xsd"/>
			<arg file="${testsuite.source.dir}/union2.xsd"/>
			<arg file="${testsuite.source.dir}/default_value.xsd"/>
			<arg file="${testsuite.source.dir}/complexExtension.xsd"/>
			<arg file="${testsuite.source.dir}/soapencoding.xsd"/>
			<arg file="${testsuite.source.dir}/chameleon.xsd"/>
			<arg file="${testsuite.source.dir}/nonamespace.xsd"/> <!-- compile only; no tests -->
			<arg file="${testsuite.source.dir}/unqualified.xsd"/>
			<arg file="${testsuite.source.dir}/unqualified/companyservice.xsd"/>
			<arg file="${testsuite.source.dir}/names.xsd"/> <!-- compile only; no tests -->
			<arg file="${testsuite.source.dir}/std-schemas.xsd"/> <!-- compile only; no tests -->
			<arg file="${schema.generated.src.dir}"/>
		</java>
		<java classname="org.apache.axis2.schema.XSD2Java" fork="true" failonerror="true">
			<jvmarg line="${maven.junit.jvmargs}"/>
			<classpath refid="maven.dependency.classpath"/>
			<classpath location="${compiled.classes.dir}"/>
			<arg value="-dp"/>
			<arg value="org.apache.axis2.schema.nonamespace"/>
			<arg value="-mp"/>
			<arg value="org.apache.axis2.schema.nonamespace"/>
			<arg file="${testsuite.source.dir}/nonamespace.xsd"/>
			<arg file="${schema.generated.src.dir}"/>
		</java>
		<java classname="org.apache.axis2.schema.XSD2Java" fork="true" failonerror="true">
			<jvmarg line="${maven.junit.jvmargs}"/>
			<classpath refid="maven.dependency.classpath"/>
			<classpath location="${compiled.classes.dir}"/>
			<arg value="-p"/>
			<arg value="helper."/>
			<arg value="-h"/>
			<arg file="${testsuite.source.dir}/testsuite.xsd"/>
			<arg file="${testsuite.source.dir}/all.xsd"/>
			<arg file="${testsuite.source.dir}/boolean.xsd"/>
			<arg file="${testsuite.source.dir}/chameleon.xsd"/>
			<arg file="${testsuite.source.dir}/choice.xsd"/>
			<arg file="${testsuite.source.dir}/decimal.xsd"/>
			<arg file="${testsuite.source.dir}/default_value.xsd"/>
			<arg file="${testsuite.source.dir}/enumeration.xsd"/>
			<arg file="${testsuite.source.dir}/groups.xsd"/>
			<arg file="${testsuite.source.dir}/innerchoice.xsd"/>
			<arg file="${testsuite.source.dir}/innerParticleExtension.xsd"/>
			<arg file="${testsuite.source.dir}/unqualified.xsd"/>
			<arg file="${testsuite.source.dir}/unqualified/companyservice.xsd"/>
			<arg file="${testsuite.source.dir}/names.xsd"/> <!-- compile only; no tests -->
			<arg file="${schema.generated.src.dir}"/>
		</java>
    </target>

</project>
