<?xml version="1.0" encoding="UTF-8"?>

<!--

    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 basedir="." default="build" name="websvccommon/websvc.saas.api">
    <description>Builds, tests, and runs the project org.netbeans.modules.websvc.saas.api</description>
    <import file="../../nbbuild/templates/projectized.xml"/>

    <property name="saas.service.xsd" value="src/org/netbeans/modules/websvc/saas/model/SaasServices.xsd"/>
    <property name="saas.model.jaxb" value="src/org/netbeans/modules/websvc/saas/model/jaxb"/>
    <property name="wadl.xsd" value="src/org/netbeans/modules/websvc/saas/model/wadl200902.xsd"/>
    <property name="saas.model.wadl" value="src/org/netbeans/modules/websvc/saas/model/wadl"/>
    <property name="oauth.xsd" value="src/org/netbeans/modules/websvc/saas/model/oauth-metadata.xsd"/>
    <property name="oauth.model" value="src/org/netbeans/modules/websvc/saas/model/oauth"/>

    <target name="xjc-init" depends="build-init">
        <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
            <classpath>
                <fileset dir="${netbeans.dest.dir}/${nb.cluster.ide.dir}/modules/ext/jaxb/api" includes="*.jar"/>
				<fileset dir="${netbeans.dest.dir}/${nb.cluster.ide.dir}/modules/ext/jaxb" includes="*.jar"/>            
			</classpath>
        </taskdef>
    </target>
    
    <target name="model-gen" depends="xjc-init">
    <echo>java.version=${java.version}, ant.version=${ant.version}</echo>
        <xjc schema="${saas.service.xsd}"      
            package="org.netbeans.modules.websvc.saas.model.jaxb"
            target="2.1"
            destdir="src"
	    encoding="UTF-8">
            <depends file="${saas-service.xsd}"/>
            <produces dir="${saas.model.jaxb}"/>
        </xjc>
        <xjc schema="src/org/netbeans/modules/websvc/saas/model/wadl200902.xsd"
            package="org.netbeans.modules.websvc.saas.model.wadl"
            target="2.1"
            destdir="src"
	    encoding="UTF-8">
            <depends file="${wadl.xsd}"/>
            <produces dir="${saas.model.wadl}"/>
        </xjc>
        <xjc schema="src/org/netbeans/modules/websvc/saas/model/oauth-metadata.xsd"
            package="org.netbeans.modules.websvc.saas.model.oauth"
            target="2.1"
            destdir="src"
	    encoding="UTF-8">
            <depends file="${oauth.xsd}"/>
            <produces dir="${oauth.model}"/>
        </xjc>
    </target>
    
    <target name="compile" depends="model-gen,projectized-common.compile"/>

    <target name="clean" depends="projectized-common.clean">
        <delete dir="${saas.model.jaxb}"/>
        <delete dir="${saas.model.wadl}"/>
        <delete dir="${oauth.model}"/>
    </target>
    
</project>
