<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2019, 2021 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <name>EclipseLink DBWS Test Oracle</name>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.dbws.oracle.test</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.parent</artifactId>
        <version>4.0.0-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>

    <properties>
        <test-skip-dbws-oracle>${skipTests}</test-skip-dbws-oracle>
    </properties>

    <dependencies>
        <!--Other modules-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.dbws</artifactId>
        </dependency>
        <!--API dependencies-->
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
        </dependency>
        <!--Test dependencies-->
        <!--Other modules-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracle</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Test framework-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <!--DBWS Test Oracle related profiles-->
        <profile>
            <id>oracle</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <!--Set system properties required for tests-->
                            <systemPropertiesFile>${test.properties.file}</systemPropertiesFile>
                            <workingDirectory>${project.build.directory}/test-run</workingDirectory>
                        </configuration>
                        <executions>
                            <execution>
                                <id>test-dbws-oracle</id>
                                <goals>
                                    <goal>integration-test</goal>
                                </goals>
                                <configuration>
                                    <skipTests>${test-skip-dbws-oracle}</skipTests>
                                    <reportNameSuffix>test-dbws-oracle</reportNameSuffix>
                                    <includes>
                                        <include>dbws.testing.AllTests</include>
                                    </includes>
                                </configuration>
                            </execution>
                            <execution>
                                <id>verify-integration-tests</id>
                                <goals>
                                    <goal>verify</goal>
                                </goals>
                                <configuration>
                                    <skip>${integration.test.skip.verify}</skip>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--This plugin sql-maven-plugin must be after maven-surefire-plugin to call dbteardown*.sql scripts after tests-->
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>sql-maven-plugin</artifactId>
                        <configuration>
                            <!--all executions are ignored if -DskipTests-->
                            <skip>${test-skip-dbws-oracle}</skip>
                        </configuration>
                        <executions>
                            <!-- create db tables after test -->
                            <execution>
                                <id>create-tables-before-test</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <configuration>
                                    <autocommit>true</autocommit>
                                    <delimiter>|</delimiter>
                                    <onError>continue</onError>
                                    <srcFiles>
                                        <srcFile>${integration.test.resources.directory}/sql/dbsetup_oracleobjecttype.sql</srcFile>
                                        <srcFile>${integration.test.resources.directory}/sql/dbsetup_plsqlcollection.sql</srcFile>
                                        <srcFile>${integration.test.resources.directory}/sql/dbsetup_veearray.sql</srcFile>
                                    </srcFiles>
                                </configuration>
                            </execution>
                            <!-- drop db tables after test -->
                            <execution>
                                <id>drop-tables-after-test</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>execute</goal>
                                </goals>
                                <configuration>
                                    <autocommit>true</autocommit>
                                    <delimiter>|</delimiter>
                                    <onError>continue</onError>
                                    <srcFiles>
                                        <srcFile>${integration.test.resources.directory}/sql/dbteardown_oracleobjecttype.sql</srcFile>
                                        <srcFile>${integration.test.resources.directory}/sql/dbteardown_plsqlcollection.sql</srcFile>
                                        <srcFile>${integration.test.resources.directory}/sql/dbteardown_veearray.sql</srcFile>
                                    </srcFiles>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>test-dbws-oracle</id>
            <properties>
                <test-skip-dbws-oracle>false</test-skip-dbws-oracle>
            </properties>
        </profile>
    </profiles>
</project>
