<!--
    Copyright (c) 2010 Tasktop Technologies and others. 
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.html
   
    Contributors:
        Tasktop Technologies - initial API and implementation
 -->
<project name="Hudson API JAXB" default="main" basedir="."> 
 
  <path id="classpath"> 
    <fileset dir="lib" includes="*.jar" /> 
  </path> 
 
  <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="classpath" /> 

  <target name="main" depends="xjc,clean-source">
  </target>

  <target name="xjc"> 
  	<xjc schema="https://build.eclipse.org/hudson/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model"/>
  	<xjc schema="https://build.eclipse.org/hudson/people/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model"/>
  	<xjc schema="https://build.eclipse.org/hudson/job/epp-mpc-nightly/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model"/>
  	<xjc schema="https://build.eclipse.org/hudson/job/epp-mpc-nightly/62/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model" />
  	<xjc schema="https://build.eclipse.org/hudson/job/emf-cdo-integration/574/testReport/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model" />
  	<xjc schema="http://hudson.xwiki.org/job/xwiki-product-enterprise-tests-2.4/40/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model" />  	
  	<xjc schema="http://hudson.xwiki.org/job/xwiki-product-enterprise-tests-2.4/40/testReport/api/schema" destdir="src-gen" package="org.eclipse.mylyn.internal.hudson.model" />  	
  </target> 

  <target name="clean-source">
		<replace dir="src-gen">
			<include name="**/*.java"/>
  			<replacetoken><![CDATA[
public ]]></replacetoken>
			<replacevalue><![CDATA[
@SuppressWarnings("all")
public ]]></replacevalue>
		</replace>
	<replaceregexp flags="s">
	  <regexp pattern="^(//.*?)package"/>
	  <substitution expression="LICENSE package"/>
	  <fileset dir="src-gen">
		<include name="**/*.java"/>
	  </fileset>
	</replaceregexp>
		<replace dir="src-gen">
			<include name="**/*.java"/>
  			<replacetoken><![CDATA[LICENSE ]]></replacetoken>
			<replacevalue><![CDATA[/*******************************************************************************
 * Copyright (c) 2010 Tasktop Technologies and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Tasktop Technologies - initial API and implementation
 *******************************************************************************/

// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 

]]></replacevalue>
		</replace>

	</target>

</project> 