<?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>
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.tuscany.sca</groupId>
		<artifactId>tuscany-itest</artifactId>
		<version>1.6.1</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>itest-corba-binding</artifactId>
	<name>Apache Tuscany SCA iTest CORBA Binding</name>
	<dependencies>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-host-embedded</artifactId>
			<version>1.6.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-implementation-java-runtime</artifactId>
			<version>1.6.1</version>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-binding-corba-runtime</artifactId>
			<version>1.6.1</version>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-host-corba-jse</artifactId>
			<version>1.6.1</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-host-corba-jse-tns</artifactId>
			<version>1.6.1</version>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-binding-sca</artifactId>
			<version>1.6.1</version>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-binding-sca-corba</artifactId>
			<version>1.6.1</version>
			<scope>runtime</scope>
		</dependency>

<!-- 
		<dependency>
			<groupId>org.apache.ws.commons.axiom</groupId>
			<artifactId>axiom-api</artifactId>
			<exclusions>
				<exclusion>
					<groupId>xerces</groupId>
					<artifactId>xercesImpl</artifactId>
				</exclusion>
				<exclusion>
					<groupId>stax</groupId>
					<artifactId>stax-api</artifactId>
				</exclusion>
			</exclusions>
			<version>1.2.5</version>
		</dependency>
 -->        

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-databinding-axiom</artifactId>
            <version>1.6.1</version>
            <scope>runtime</scope>
        </dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-databinding-sdo</artifactId>
			<version>1.6.1</version>
		</dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.5</version>
            <scope>test</scope>
        </dependency>

	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<version>1.0</version>
				<executions>
					<execution>
						<id>add-source</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>add-test-source</goal>
						</goals>
						<configuration>
							<sources>
								<source>target/sdo-source</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.tuscany.sdo</groupId>
				<artifactId>tuscany-sdo-plugin</artifactId>
				<version>1.1.1</version>
				<executions>
					<execution>
						<id>generate-scenariofour-sdo</id>
						<phase>generate-sources</phase>
						<configuration>
							<schemaFile>
								${basedir}/src/test/resources/scenariofour.xsd
							</schemaFile>
							<javaPackage>
								org.apache.tuscany.sca.test.corba.scenariofour
							</javaPackage>
							<prefix>ScenarioFour</prefix>
							<noNotification>true</noNotification>
							<noContainer>true</noContainer>
							<noUnsettable>true</noUnsettable>
						</configuration>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
