<!--
 * 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="sample-osgi-supplychain" default="compile">
    <property name="test.class" value="supplychain.SupplyChainClient" />
    <property name="test.jar"   value="sample-osgi-supplychain.jar" />
    
    <target name="init">
        <mkdir dir="target/classes"/>
    </target>
    
    <target name="compile" depends="init">
        <javac srcdir="src/main/java"
               destdir="target/classes"
               debug="on"
               source="1.5"
               target="1.5">
            <classpath>
                <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
            </classpath>
        </javac> 
        <copy todir="target/classes">
            <fileset dir="src/main/resources"/>
        </copy>
        <jar jarfile="target/classes/Customer.jar" manifest="target/classes/osgi/Customer.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/customer/Customer.class
                               supplychain/OSGiBundleImpl.class
                               supplychain/customer/OSGiCustomerImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/Retailer.jar" manifest="target/classes/osgi/Retailer.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/retailer/Retailer.class
                               supplychain/OSGiBundleImpl.class
                               supplychain/retailer/OSGiRetailerImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/Warehouse.jar" manifest="target/classes/osgi/Warehouse.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/warehouse/Warehouse.class
                               supplychain/OSGiBundleImpl.class
                               supplychain/warehouse/OSGiWarehouseImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/Shipper.jar" manifest="target/classes/osgi/Shipper.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/shipper/Shipper.class
                               supplychain/OSGiBundleImpl.class
                               supplychain/shipper/OSGiShipperImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/DSCustomer.jar" manifest="target/classes/osgi/ds/Customer.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/customer/Customer.class
                               osgi/ds/Customer.xml
                               supplychain/customer/OSGiCustomerComponentImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/DSRetailer.jar" manifest="target/classes/osgi/ds/Retailer.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/retailer/Retailer.class
                               Vosgi/ds/Retailer.xml
                               supplychain/retailer/OSGiRetailerComponentImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/DSWarehouse.jar" manifest="target/classes/osgi/ds/Warehouse.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/warehouse/Warehouse.class
                               osgi/ds/Warehouse.xml
                               supplychain/warehouse/OSGiWarehouseComponentImpl.class"
            />
        </jar>  
        <jar jarfile="target/classes/DSShipper.jar" manifest="target/classes/osgi/ds/Shipper.mf" >
            <fileset dir="target/classes" 
                     includes="supplychain/shipper/Shipper.class
                               osgi/ds/Shipper.xml
                               supplychain/shipper/OSGiShipperComponentImpl.class"
            />
        </jar>  
        <jar destfile="target/${test.jar}" basedir="target/classes">
            <manifest>
                <attribute name="Main-Class" value="${test.class}" /> 
            </manifest>
        </jar>  
    </target>    
    
    <target name="run-classes">
        <java classname="${test.class}"
              fork="true">
            <classpath>
                <pathelement path="target/classes"/>
                <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
            </classpath>
        </java>
    </target>
    
    <target name="run">
        <java classname="${test.class}"
              fork="true">
            <classpath>
                <pathelement path="target/${test.jar}"/>
                <pathelement location="../../lib/tuscany-sca-manifest.jar"/>
            </classpath>
        </java>        
    </target>    
    
    <target name="clean">
        <delete quiet="true" includeemptydirs="true">
            <fileset dir="target"/>
        </delete>
    </target>
</project>
