<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright 2001-2009 The Apache Software Foundation.
 *
 * Licensed 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.juddi</groupId>
		<artifactId>juddi-parent</artifactId>
		<version>3.2.1</version>
	</parent>
	<artifactId>uddi-tck</artifactId>
	<packaging>bundle</packaging>
	<name>UDDI TCK Tests</name>
	<dependencies>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>uddi-ws</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>uddi-tck-base</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>juddi-client</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>juddi-tomcat</artifactId>
			<version>${project.parent.version}</version>
			<type>zip</type>
			<scope>provided</scope>
			<exclusions>
				<exclusion>
					<groupId>org.apache.juddi</groupId>
					<artifactId>juddi-core-openjpa</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!--  for JAXWS
		   running into JUDDI-451 for CXF
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>2.3.1</version>
		</dependency>
		-->
		<!-- so using the SUN reference implementation for now -->
		<dependency>
			<groupId>com.sun.xml.ws</groupId>
			<artifactId>jaxws-rt</artifactId>
			<version>2.1.4</version>
		</dependency>
		
		<!--   for RMI 
		<dependency> <groupId>jboss</groupId>
			<artifactId>jbossall-client</artifactId>
			<version>4.2.2.GA</version>
			<scope>test</scope>
		</dependency>
		-->
		<dependency>
		    <groupId>org.easymock</groupId>
		    <artifactId>easymock</artifactId>
		    <version>2.0</version>
		    <scope>test</scope>
		</dependency>
		<dependency>
			<groupId>dumbster</groupId>
			<artifactId>dumbster</artifactId>
			<version>1.5</version>
		</dependency>
		<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.3</version>
		</dependency>
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.7</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.9</version>
		</dependency>
   		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-email</artifactId>
			<version>1.3.2</version>
		</dependency>
					
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.1</version>
				<executions>
					<execution>
						<id>copy</id>
						<phase>package</phase>
						<goals>
							<goal>copy</goal>
						</goals>
						<configuration>
							<artifactItems>
								<artifactItem>
									<groupId>org.apache.juddi</groupId>
									<artifactId>juddi-tomcat</artifactId>
									<version>${project.parent.version}</version>
									<type>zip</type>
									<outputDirectory>${basedir}/target</outputDirectory>
								</artifactItem>
							</artifactItems>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.3</version>
				<executions>
					<execution>
						<id>test</id>
						<phase>pre-integration-test</phase>
						<configuration>
							<tasks>
								<unzip dest="target" src="target/juddi-tomcat-${project.parent.version}.zip" />
								<copy file="${basedir}/server.xml" todir="target/juddi-tomcat-${project.parent.version}/conf" overwrite="true" />
								<copy file="${basedir}/log4j.properties" todir="target/juddi-tomcat-${project.parent.version}/webapps/juddiv3/WEB-INF/classes" overwrite="true" />
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.cargo</groupId>
				<artifactId>cargo-maven2-plugin</artifactId>
				<version>1.0</version>
				<configuration>
					<wait>false</wait>
					<container>
						<containerId>tomcat6x</containerId>
						<home>${basedir}/target/juddi-tomcat-${project.parent.version}</home>
					</container>
					<configuration>
						<type>existing</type>
						<home>${project.build.directory}/juddi-tomcat-${project.parent.version}</home>
						<properties>
							<cargo.logging>high</cargo.logging>
							<cargo.hostname>localhost</cargo.hostname>
							<cargo.servlet.port>8880</cargo.servlet.port>
							<cargo.jvmargs>-Xms256m -Xmx256m -XX:MaxPermSize=256M -Djava.endorsed.dirs=${basedir}/target/juddi-tomcat-${project.parent.version}/endorsed</cargo.jvmargs>
						</properties>
					</configuration>
				</configuration>
				<executions>
					<execution>
						<id>start-container</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>start</goal>
						</goals>
					</execution>
					<execution>
						<id>stop-container</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>stop</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<skip>true</skip>
					<includes>
						<include>**/*IntegrationTest.java</include>
					</includes>
					<systemProperties>
						<property>
							<name>derby.stream.error.file</name>
							<value>target/derby.log</value>
						</property>
						<property>
							<name>java.io.tmpdir</name>
							<value>${basedir}/temp</value>
						</property>
					</systemProperties>
				</configuration>
				<executions>
					<execution>
						<id>surefire-it</id>
						<phase>integration-test</phase>
						<goals>
							<goal>test</goal>
						</goals>
						<configuration>
							<skip>false</skip>
							<systemProperties>
								<property>
									<name>cactus.contextURL</name>
									<value>http://localhost:8880/juddi</value>
								</property>
								<property>
									<name>java.io.tmpdir</name>
									<value>${basedir}/temp</value>
								</property>
							</systemProperties>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
			<!-- deploying test-jar -->
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-jar-plugin</artifactId>
			<executions>
				<execution>
					<goals>
					   <goal>jar</goal> 
						<goal>test-jar</goal>
					</goals>
				</execution>
			</executions>
		    </plugin>
		    <plugin>
		    <!-- deploying test-jar src -->
	        <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-source-plugin</artifactId>
	        <executions>
	          <execution>
	            <id>attach-sources</id>
	            <phase>verify</phase>
	            <goals>
	              <goal>jar</goal>
	              <goal>generated-test-jar</goal>
	            </goals>
	          </execution>
	        </executions>
	      </plugin>
	      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>test-jar</goal>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
		</plugins>
	</build>
	<profiles>
		<profile>
			<id>load</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<version>2.4</version>
						<configuration>
							<skip>true</skip>
							<includes>
								<include>**/*LoadTest.java</include>
							</includes>
							<systemProperties>
								<property>
									<name>derby.stream.error.file</name>
									<value>target/derby.log</value>
								</property>
							</systemProperties>
						</configuration>
						<executions>
							<execution>
								<id>surefire-it</id>
								<phase>integration-test</phase>
								<goals>
									<goal>test</goal>
								</goals>
								<configuration>
									<skip>false</skip>
									<systemProperties>
										<property>
											<name>cactus.contextURL</name>
											<value>http://localhost:8880/juddi</value>
										</property>
									</systemProperties>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
