<!--
 * 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="oneway" default="runServer">

	<property name="m2.repo"   value="${user.home}\.m2\repository" />
	
    <path id="repo.classpath">   	
    	<pathelement location="target/classes"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core-spi\1.7-SNAPSHOT\tuscany-core-spi-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-http\1.7-SNAPSHOT\tuscany-host-http-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws-axis2\1.7-SNAPSHOT\tuscany-binding-ws-axis2-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy\1.7-SNAPSHOT\tuscany-policy-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\xerces\xercesImpl\2.8.1\xercesImpl-2.8.1.jar"/>
    	<pathelement location="${m2.repo}\org\mortbay\jetty\jetty-util\6.1.3\jetty-util-6.1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-jms_1.1_spec\1.1\geronimo-jms_1.1_spec-1.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-implementation-java-runtime\1.7-SNAPSHOT\tuscany-implementation-java-runtime-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\wsdl4j\wsdl4j\1.6.2\wsdl4j-1.6.2.jar"/>
    	<pathelement location="${m2.repo}\commons-codec\commons-codec\1.3\commons-codec-1.3.jar"/>
    	<pathelement location="${m2.repo}\xml-apis\xml-apis\1.3.03\xml-apis-1.3.03.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ws\security\wss4j\1.5.3\wss4j-1.5.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-namespace\1.7-SNAPSHOT\tuscany-contribution-namespace-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\jdom\jdom\1.0\jdom-1.0.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly-xsd\1.7-SNAPSHOT\tuscany-assembly-xsd-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly\1.7-SNAPSHOT\tuscany-assembly-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\rampart\rampart-trust\1.3\rampart-trust-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core-databinding\1.7-SNAPSHOT\tuscany-core-databinding-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-api\1.2.5\axiom-api-1.2.5.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy-xml\1.7-SNAPSHOT\tuscany-policy-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-kernel\1.3\axis2-kernel-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-sca-api\1.7-SNAPSHOT\tuscany-sca-api-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\cglib\cglib-nodep\2.1_3\cglib-nodep-2.1_3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\httpcomponents\httpcore\4.0-alpha5\httpcore-4.0-alpha5.jar"/>
    	<pathelement location="${m2.repo}\backport-util-concurrent\backport-util-concurrent\2.2\backport-util-concurrent-2.2.jar"/>
    	<pathelement location="${m2.repo}\commons-logging\commons-logging\1.1\commons-logging-1.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-java\1.7-SNAPSHOT\tuscany-contribution-java-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-activation_1.1_spec\1.0-M1\geronimo-activation_1.1_spec-1.0-M1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-databinding\1.7-SNAPSHOT\tuscany-databinding-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\logkit\logkit\1.0.1\logkit-1.0.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws-xml\1.7-SNAPSHOT\tuscany-binding-ws-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\commons-fileupload\commons-fileupload\1.1.1\commons-fileupload-1.1.1.jar"/>
    	<pathelement location="${m2.repo}\annogen\annogen\0.1.0\annogen-0.1.0.jar"/>
    	<pathelement location="${m2.repo}\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar"/>
    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-adb\1.3\axis2-adb-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-policy-security\1.7-SNAPSHOT\tuscany-policy-security-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-assembly-xml\1.7-SNAPSHOT\tuscany-assembly-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-mtompolicy\1.3\axis2-mtompolicy-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-domain\1.7-SNAPSHOT\tuscany-domain-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\commons-httpclient\commons-httpclient\3.0.1\commons-httpclient-3.0.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-java\1.7-SNAPSHOT\tuscany-interface-java-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-java2wsdl\1.3\axis2-java2wsdl-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\httpcomponents\httpcore-nio\4.0-alpha5\httpcore-nio-4.0-alpha5.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution\1.7-SNAPSHOT\tuscany-contribution-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-implementation-java\1.7-SNAPSHOT\tuscany-implementation-java-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\xalan\xalan\2.7.0\xalan-2.7.0.jar"/>
    	<pathelement location="${m2.repo}\com\ibm\icu\icu4j\2.6.1\icu4j-2.6.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\rampart\rampart-core\1.3\rampart-core-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-commonj_1.1_spec\1.0\geronimo-commonj_1.1_spec-1.0.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-domain-api\1.7-SNAPSHOT\tuscany-domain-api-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca\1.7-SNAPSHOT\tuscany-binding-sca-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\xom\xom\1.0\xom-1.0.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ant\ant-launcher\1.7.0\ant-launcher-1.7.0.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-jetty\1.7-SNAPSHOT\tuscany-host-jetty-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\rampart\rampart-policy\1.3\rampart-policy-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\httpcomponents\httpcore-niossl\4.0-alpha5\httpcore-niossl-4.0-alpha5.jar"/>
    	<pathelement location="${m2.repo}\junit\junit\4.2\junit-4.2.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-impl\1.2.5\axiom-impl-1.2.5.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-implementation-java-xml\1.7-SNAPSHOT\tuscany-implementation-java-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-sca-xml\1.7-SNAPSHOT\tuscany-binding-sca-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\neethi\neethi\2.0.2\neethi-2.0.2.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-wsdl\1.7-SNAPSHOT\tuscany-interface-wsdl-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-binding-ws\1.7-SNAPSHOT\tuscany-binding-ws-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\javax\activation\activation\1.1\activation-1.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ant\ant\1.7.0\ant-1.7.0.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-databinding-axiom\1.7-SNAPSHOT\tuscany-databinding-axiom-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\mortbay\jetty\jetty\6.1.3\jetty-6.1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\geronimo\specs\geronimo-javamail_1.4_spec\1.0-M1\geronimo-javamail_1.4_spec-1.0-M1.jar"/>
    	<pathelement location="${m2.repo}\avalon-framework\avalon-framework\4.1.3\avalon-framework-4.1.3.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-core\1.7-SNAPSHOT\tuscany-core-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-wsdl-xml\1.7-SNAPSHOT\tuscany-interface-wsdl-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-contribution-impl\1.7-SNAPSHOT\tuscany-contribution-impl-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-node\1.7-SNAPSHOT\tuscany-node-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-definitions\1.7-SNAPSHOT\tuscany-definitions-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\santuario\xmlsec\1.4.0\xmlsec-1.4.0.jar"/>
    	<pathelement location="${m2.repo}\jaxen\jaxen\1.1.1\jaxen-1.1.1.jar"/>
    	<pathelement location="${m2.repo}\commons-io\commons-io\1.2\commons-io-1.2.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-host-embedded\1.7-SNAPSHOT\tuscany-host-embedded-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ws\commons\axiom\axiom-dom\1.2.5\axiom-dom-1.2.5.jar"/>
    	<pathelement location="${m2.repo}\log4j\log4j\1.2.12\log4j-1.2.12.jar"/>
    	<pathelement location="${m2.repo}\javax\mail\mail\1.4\mail-1.4.jar"/>
    	<pathelement location="${m2.repo}\org\apache\axis2\axis2-codegen\1.3\axis2-codegen-1.3.jar"/>
    	<pathelement location="${m2.repo}\org\codehaus\woodstox\wstx-asl\3.2.1\wstx-asl-3.2.1.jar"/>
    	<pathelement location="${m2.repo}\stax\stax-api\1.0.1\stax-api-1.0.1.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface-java-xml\1.7-SNAPSHOT\tuscany-interface-java-xml-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\apache\ws\commons\schema\XmlSchema\1.3.2\XmlSchema-1.3.2.jar"/>
    	<pathelement location="${m2.repo}\xerces\xmlParserAPIs\2.6.2\xmlParserAPIs-2.6.2.jar"/>
    	<pathelement location="${m2.repo}\org\apache\woden\woden\1.0-incubating-M7b\woden-1.0-incubating-M7b.jar"/>
    	<pathelement location="${m2.repo}\org\apache\tuscany\sca\tuscany-interface\1.7-SNAPSHOT\tuscany-interface-1.7-SNAPSHOT.jar"/>
    	<pathelement location="${m2.repo}\org\easymock\easymock\2.2\easymock-2.2.jar"/>  	
   </path>	
    	
    <target name="runServer">
        <java classname="org.apache.tuscany.sca.itest.oneway.impl.OneWayServer"
              fork="true">
            <classpath>
            	<path refid="repo.classpath"/>
            </classpath>    	        	
        </java>
    </target>
	
</project>
