<?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.
-->


<!DOCTYPE project [ <!ENTITY IncludeCommonFile SYSTEM "../common.xml"> ]>

<project name="SEmpDept" default="all" basedir=".">

  <!-- include common.xml -->
  &IncludeCommonFile;

  <property name="classes0" value="empdept.Department empdept.Department$$Oid empdept.Employee empdept.Employee$$Oid empdept.FullTimeEmployee empdept.PartTimeEmployee empdept.PartTimeEmployee$$Oid"/>

  <property name="classes1" value="empdept.Department empdept.Department.Oid empdept.Employee empdept.Employee.Oid empdept.PartTimeEmployee empdept.PartTimeEmployee.Oid"/>

  <property name="jdoproperties" value="${src}/empdept.jdoproperties"/>
  <property name="jdo" value="${src}/empdept/package.jdo"/>

  <property name="outjavap" value="output.javap"/>
  <property name="outdis" value="output.dis"/>

  <target name="enhance_files" depends="compile_common,init_enhance_common,arg.verbose">
    <java classname="org.apache.jdo.enhancer.EnhancerMain"
     fork="yes" failonerror="yes" classpathref="tools.class.path">
      <arg line="${arg.verbose}"/>
      <arg line="-f -d ${enh}"/>
      <arg line="-j"/>
      <arg path="${src}:${cls}:${jdo}"/>
<!-- disable calling the enhancer with jdopropeties for now
      <arg line="- -properties ${jdoproperties}"/>
-->
      <arg line="${cls}/empdept/Department.class ${cls}/empdept/Department$$Oid.class ${cls}/empdept/Employee.class ${cls}/empdept/Employee$$Oid.class"/>
    </java>
  </target>

  <target name="dis_enh_files" depends="arg.verbose">
    <java classname="org.apache.jdo.impl.enhancer.util.Disassembler"
     fork="yes" classpathref="tools.class.path" failonerror="yes"
      output="${enh}/${outdis}">
      <arg line="${arg.verbose}"/>
      <arg line="${enh}/empdept/Department.class ${enh}/empdept/Department$$Oid.class ${enh}/empdept/Employee.class ${enh}/empdept/Employee$$Oid.class"/>
    </java>
  </target>

  <target name="test_ann_enh_files" depends="arg.verbose">
    <java classname="org.apache.jdo.enhancer.util.AnnotationTest"
     fork="yes" failonerror="yes" classpathref="tools.class.path">
      <arg line="${arg.verbose}"/>
      <arg line="-j"/>
      <arg path="${src}:${cls}:${jdo}"/>
      <arg line="${enh}/empdept/Department.class ${enh}/empdept/Department$$Oid.class ${enh}/empdept/Employee.class ${enh}/empdept/Employee$$Oid.class"/>
    </java>
  </target>

</project>
