<?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-wsdl2java</artifactId>
	<name>Apache Tuscany SCA iTest WSDL2Java</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-interface-wsdl</artifactId>
			<version>1.6.1</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-binding-ws-axis2</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>
			<scope>runtime</scope>
		</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-host-jetty</artifactId>
			<version>1.6.1</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.tuscany.sdo</groupId>
			<artifactId>tuscany-sdo-impl</artifactId>
			<version>1.1.1</version>
			<scope>compile</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-test-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-sdo-account-service</id>
						<phase>generate-sources</phase>
						<configuration>
							<schemaFile>
								${basedir}/src/test/resources/AccountService.wsdl</schemaFile>
							<targetDirectory>
								${basedir}/target/sdo-source</targetDirectory>
							<javaPackage>com.bigbank.account</javaPackage>
							<prefix>Account</prefix>
							<noNotification>true</noNotification>
							<noContainer>true</noContainer>
							<noUnsettable>true</noUnsettable>
						</configuration>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
					<execution>
						<id>generate-sdo-stock-exception</id>
						<phase>generate-sources</phase>
						<configuration>
							<schemaFile>
								${basedir}/src/test/resources/StockExceptionTest.wsdl</schemaFile>
							<targetDirectory>
								${basedir}/target/sdo-source</targetDirectory>
							<prefix>Stock</prefix>
							<noInterfaces>true</noInterfaces>
							<noNotification>true</noNotification>
							<noContainer>true</noContainer>
							<noUnsettable>true</noUnsettable>
						</configuration>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
					<!--execution>
                        <id>generate-sdo-echo-service-xsd</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <schemaFile>${basedir}/src/test/resources/EchoService.xsd</schemaFile>
                            <targetDirectory>${basedir}/target/sdo-source</targetDirectory>
                            <prefix>Stock</prefix>
                            <noInterfaces>true</noInterfaces>
                            <noNotification>true</noNotification>
                            <noContainer>true</noContainer>
                            <noUnsettable>true</noUnsettable>
                        </configuration>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution-->
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.tuscany.sca</groupId>
				<artifactId>tuscany-maven-wsdl2java</artifactId>
				<version>1.6.1</version>
				<executions>
					<execution>
						<configuration>
							<wsdlFiles>
								<wsdlFile>
									<fileName>
										${basedir}/src/test/resources/AccountService.wsdl</fileName>
								</wsdlFile>
								<wsdlFile>
									<fileName>
										${basedir}/src/test/resources/StockExceptionTest.wsdl</fileName>
								</wsdlFile>
								<!--wsdlFile>
									<fileName>${basedir}/src/test/resources/EchoService.wsdl</fileName>
								</wsdlFile-->
							</wsdlFiles>
						</configuration>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
