<?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 JPA NoSQL Test</name>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.jpa.nosql.test</artifactId>
    <packaging>jar</packaging>

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

    <properties>
        <comp.xlint>-Xlint:all</comp.xlint>
        <comp.xdoclint>-Xdoclint:all,-missing</comp.xdoclint>
        <comp.test.xlint>-Xlint:all</comp.test.xlint>

        <!--Properties used for test resources filtering/replacement-->
        <!--DB connection properties-->
        <dbPlatform>${db.platform}</dbPlatform>
        <dbUser>${db.user}</dbUser>
        <dbPassword>${db.pwd}</dbPassword>
        <driverClass>${db.driver}</driverClass>
        <dbURL>${db.url}</dbURL>
        <!--Log level-->
        <loglevel>${logging.level}</loglevel>

        <skip-server-test-jpa>true</skip-server-test-jpa>
        <skip-server-test-jpa-lrg>true</skip-server-test-jpa-lrg>

        <!--Properties used for test resources filtering/replacement.
            Default settings could be overriden by server-test-jpa* profile.-->
        <puName>default</puName>
        <server.factory>${server.initialCtxFactory}</server.factory>
        <server.user>${server.usr}</server.user>
        <server-platform>${server.platform}</server-platform>
        <server-platform-class>${server.platform.class}</server-platform-class>
        <!--<transaction-type>JTA</transaction-type>-->
        <transaction-type>RESOURCE_LOCAL</transaction-type>
        <datasource-type>jta-data-source</datasource-type>
        <data-source-name>jdbc/EclipseLinkDS</data-source-name>
        <data-source-name-non-jta>jdbc/ELNonJTADS</data-source-name-non-jta>
        <session-data-source-name>${data-source-name}</session-data-source-name>
        <database-platform>${db.platform.oracle.ext}</database-platform>
        <server-weaving>true</server-weaving>
        <server.testrunner.prefix>${modelname}/${modelname}_ejb/</server.testrunner.prefix>

        <db.driver.groupId>org.mongodb</db.driver.groupId>
        <db.driver.artifactId>mongo-java-driver</db.driver.artifactId>
        <db.driver.version>3.2.0</db.driver.version>
    </properties>

    <dependencies>
        <!--Test dependencies-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Required for JPA server test server-test-jpa21-sessionbean.-->
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </dependency>
        <!--Other modules-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.moxy</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.nosql</artifactId>
            <scope>test</scope>
        </dependency>
        <!--EclipseLink Core test framework-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.core.test.framework</artifactId>
            <scope>test</scope>
        </dependency>
        <!--EclipseLink JPA test framework-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.test.framework</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.test</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <!--EclipseLink NoSQL Extension Tests (model, test classes)-->
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.nosql</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>

        <!--API dependecies-->
        <dependency>
            <groupId>jakarta.ejb</groupId>
            <artifactId>jakarta.ejb-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.resource</groupId>
            <artifactId>jakarta.resource-api</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Other libraries-->
        <dependency>
            <groupId>org.glassfish.corba</groupId>
            <artifactId>glassfish-corba-omgapi</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.corba</groupId>
            <artifactId>glassfish-corba-orb</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.parsson</groupId>
            <artifactId>parsson</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-xjc</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbyclient</artifactId>
            <scope>test</scope>
        </dependency>
        <!--JDBC driver (test dependency)-->
        <dependency>
            <groupId>${db.driver.groupId}</groupId>
            <artifactId>${db.driver.artifactId}</artifactId>
            <version>${db.driver.version}</version>
            <scope>test</scope>
        </dependency>
        <!--JEE thin client (EJB Client) library.-->
        <dependency>
            <groupId>${jee.client.groupId}</groupId>
            <artifactId>${jee.client.artifactId}</artifactId>
            <version>${jee.client.version}</version>
            <type>${jee.client.type}</type>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <!--Filtering enables generate/substitute test properties from Maven into *.xml files.-->
        <testResources>
            <testResource>
                <directory>${integration.test.resources.directory}</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerArgs>
                        <arg>-Werror</arg>
                    </compilerArgs>
                    <proc>none</proc>
                </configuration>
            </plugin>
            <!--Required for EL Weaving (-javaagent:${org.eclipse.persistence:org.eclipse.persistence.jpa:jar})-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <!--Resolve dependencies into Maven properties like ${org.eclipse.persistence:org.eclipse.persistence.jpa:jar} for JPA module-->
                    <execution>
                        <id>get-test-classpath-to-properties</id>
                        <goals>
                            <goal>properties</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>add-generated-test-sources-dir</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>${project.build.directory}/generated-test-sources/jpa-runner-src</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Required due filtering applied to org.eclipse.persistence.testing.framework.server.TestRunnerBean java class.-->
            <plugin>
                <groupId>com.google.code.maven-replacer-plugin</groupId>
                <artifactId>replacer</artifactId>
                <executions>
                    <execution>
                        <id>filter-test-src-TestRunnerBean</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>replace</goal>
                        </goals>
                        <configuration>
                            <file>${project.basedir}/${integration.test.directory}/java-templates/org/eclipse/persistence/testing/framework/server/TestRunnerBean.java_nonjtaDS</file>
                            <outputFile>${project.build.directory}/generated-test-sources/jpa-runner-src/org/eclipse/persistence/testing/framework/server/TestRunnerBean.java</outputFile>
                            <replacements>
                                <replacement>
                                    <token>@puName@</token>
                                    <value>${puName}</value>
                                </replacement>
                            </replacements>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Generate multiple jar files required for tests.-->
            <plugin>
                <groupId>com.soebes.maven.plugins</groupId>
                <artifactId>iterator-maven-plugin</artifactId>
                <executions>
                    <!--Iterator is used there due reuse current assembly/component descriptors property ${item} is used there.-->
                    <execution>
                        <id>pack-server</id>
                        <phase>process-test-classes</phase>
                        <goals>
                            <goal>iterator</goal>
                        </goals>
                        <configuration>
                            <skip>${skip-server-test-jpa}</skip>
                            <itemsWithProperties>
                                <itemsWithProperty>
                                    <name>${modelname}</name>
                                    <properties>
                                        <default>${puName}</default>
                                        <item.extra-model>${extra-model}</item.extra-model>
                                    </properties>
                                </itemsWithProperty>
                            </itemsWithProperties>
                            <pluginExecutors>
                                <pluginExecutor>
                                    <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-assembly-plugin</artifactId>
                                    </plugin>
                                    <goal>single</goal>
                                    <configuration>
                                        <descriptors>
                                            <descriptor>${project.basedir}/${integration.test.directory}/assembly/assembly-ejb.xml</descriptor>
                                        </descriptors>
                                        <finalName>${item}_ejb</finalName>
                                        <appendAssemblyId>false</appendAssemblyId>
                                    </configuration>
                                </pluginExecutor>
                                <pluginExecutor>
                                    <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-assembly-plugin</artifactId>
                                    </plugin>
                                    <goal>single</goal>
                                    <configuration>
                                        <descriptors>
                                            <descriptor>${project.basedir}/${integration.test.directory}/assembly/assembly-client.xml</descriptor>
                                        </descriptors>
                                        <finalName>${item}_client</finalName>
                                        <appendAssemblyId>false</appendAssemblyId>
                                    </configuration>
                                </pluginExecutor>
                                <!--Apply filtering to the application.xml file.-->
                                <pluginExecutor>
                                    <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-resources-plugin</artifactId>
                                    </plugin>
                                    <goal>copy-resources</goal>
                                    <configuration>
                                        <outputDirectory>${project.build.testOutputDirectory}/server.tmp</outputDirectory>
                                        <resources>
                                            <resource>
                                                <directory>${project.build.testOutputDirectory}/server</directory>
                                                <includes>
                                                    <include>application.xml</include>
                                                </includes>
                                                <filtering>true</filtering>
                                            </resource>
                                        </resources>
                                    </configuration>
                                </pluginExecutor>
                                <pluginExecutor>
                                    <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-assembly-plugin</artifactId>
                                    </plugin>
                                    <goal>single</goal>
                                    <configuration>
                                        <descriptors>
                                            <descriptor>${project.basedir}/${integration.test.directory}/assembly/assembly-ear.xml</descriptor>
                                        </descriptors>
                                        <finalName>${item}</finalName>
                                        <appendAssemblyId>false</appendAssemblyId>
                                        <archiverConfig>
                                            <!--Filtering is not available there. It's handled by maven-resources-plugin in previous pluginExecutor-->
                                            <appxml>${project.build.testOutputDirectory}/server.tmp/application.xml</appxml>
                                        </archiverConfig>
                                    </configuration>
                                </pluginExecutor>
                            </pluginExecutors>
                        </configuration>
                    </execution>
                    <execution>
                        <id>test-server-lrg</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>invoker</goal>
                        </goals>
                        <configuration>
                            <!--Items/profiles with persistenceUnit name "default".-->
                            <skip>${skip-server-test-jpa-lrg}</skip>
                            <itemsWithProperties>
                                <itemWithProperty>
                                    <name>server-test-jpa-mongo</name>
                                    <properties>
                                        <puName>mongo</puName>
                                    </properties>
                                </itemWithProperty>
                                <itemWithProperty>
                                    <name>server-test-jpa-mongo-xml</name>
                                    <properties>
                                        <puName>mongo-xml</puName>
                                    </properties>
                                </itemWithProperty>
                            </itemsWithProperties>
                            <baseDirectory>${project.basedir}</baseDirectory>
                            <goals>
                                <goal>clean</goal>
                                <goal>verify</goal>
                            </goals>
                            <profiles>
                                <profile>@item@</profile>
                            </profiles>
                            <properties>
                                <skip-server-test-jpa>false</skip-server-test-jpa>
                                <skip-server-test-jpa-lrg>true</skip-server-test-jpa-lrg>
                            </properties>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <skip>skip-server-test-jpa</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>default-jar</id>
                        <configuration>
                            <!--Some classifier is required there. Otherwise maven-jar-plugin throw error.-->
                            <classifier>client</classifier>
                        </configuration>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-test-jar</id>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--Installation to the local repository is not required. If enabled JDK 11 throws error.-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-install</id>
                        <goals>
                            <goal>install</goal>
                        </goals>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--Skip Unit testing, there are integration tests only-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <!--Itegration tests-->
            <!--Run specified tests/test suite-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <configuration>
                    <dependenciesToScan>
                        <dependency>org.eclipse.persistence:org.eclipse.persistence.core</dependency>
                        <dependency>org.eclipse.persistence:org.eclipse.persistence.jpa.test</dependency>
                        <dependency>org.eclipse.persistence:org.eclipse.persistence.nosql</dependency>
                        <dependency>org.eclipse.persistence:org.eclipse.persistence.nosql.test</dependency>
                    </dependenciesToScan>
                    <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                    <!--Set system properties required for tests-->
                    <systemPropertiesFile>${testjee.properties.file}</systemPropertiesFile>
                    <systemPropertiesFile>${test.mongodb.properties.file}</systemPropertiesFile>
                    <systemProperties>
                        <proxy.user.name>${pa.connection.user}</proxy.user.name>
                        <server.platform>${server.platform}</server.platform>
                        <server.user>${server.usr}</server.user>
                        <server.password>${server.pwd}</server.password>
                        <server.url>${server.rmi.protocol}://${server.host}:${server.rmi.port}</server.url>
                        <server.testrunner>${server.testrunner.prefix}${server.testrunner.suffix}</server.testrunner>
                        <server.testrunner1>${server.testrunner.prefix}${server.testrunner1.suffix}</server.testrunner1>
                        <server.testrunner2>${server.testrunner.prefix}${server.testrunner2.suffix}</server.testrunner2>
                        <server.testrunner3>${server.testrunner.prefix}${server.testrunner3.suffix}</server.testrunner3>
                        <server.testrunner4>${server.testrunner.prefix}${server.testrunner4.suffix}</server.testrunner4>
                        <server.testrunner5>${server.testrunner.prefix}${server.testrunner5.suffix}</server.testrunner5>
                        <server.testrunner6>${server.testrunner.prefix}${server.testrunner6.suffix}</server.testrunner6>
                        <server.run>TRUE</server.run>
                    </systemProperties>
                </configuration>
                <executions>
                    <execution>
                        <id>default-server-test</id>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                        <configuration>
                            <skipTests>${skip-server-test-jpa}</skipTests>
                            <reportNameSuffix>test-jpa-server</reportNameSuffix>
                            <additionalClasspathElements>
                                <additionalClasspathElement>${project.build.directory}/${modelname}_client.jar</additionalClasspathElement>
                            </additionalClasspathElements>
                            <includes>
                                <include>${test-client-class}</include>
                            </includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>verify-server-test</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--Skip WildFly configuration if server binaries are not available.-->
            <plugin>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>groovy-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>check-wildfly-home-existence</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--Set current EclipseLink JARs into JBoss/WildFly org.eclipse.persistence system module-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xml-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>transform</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!--Start selected JEE server configure there datasource and deploy test application-->
            <plugin>
                <groupId>org.codehaus.cargo</groupId>
                <artifactId>cargo-maven2-plugin</artifactId>
                <configuration>
                    <skip>${skip-server-test-jpa}</skip>
                    <deployables>
                        <deployable>
                            <location>${project.build.directory}/${modelname}.ear</location>
                            <type>ear</type>
                            <properties>
                                <name>${modelname}</name>
                            </properties>
                        </deployable>
                    </deployables>
                    <container>
                        <dependencies>
                            <dependency>
                                <groupId>org.eclipse.persistence</groupId>
                                <artifactId>org.eclipse.persistence.nosql</artifactId>
                            </dependency>
                            <dependency>
                                <groupId>org.apache.derby</groupId>
                                <artifactId>derbyclient</artifactId>
                            </dependency>
                            <dependency>
                                <groupId>org.mongodb</groupId>
                                <artifactId>mongo-java-driver</artifactId>
                            </dependency>
                        </dependencies>
                        <systemPropertiesFile>${test.mongodb.properties.file}</systemPropertiesFile>
                        <systemProperties>
                            <db.user>root</db.user>
                            <db.pwd>root</db.pwd>
                        </systemProperties>
                    </container>
                </configuration>
                <executions>
                    <execution>
                        <id>start-container</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>restart</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>stop-container</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>weblogic</id>
            <properties>
                <server.testrunner.prefix></server.testrunner.prefix>
            </properties>
        </profile>
        <profile>
            <id>server-test-jpa-lrg</id>
            <properties>
                <skip-server-test-jpa-lrg>false</skip-server-test-jpa-lrg>
            </properties>
        </profile>
        <profile>
            <id>server-test-jpa-mongo</id>
            <properties>
                <skip-test-jpa-srg>true</skip-test-jpa-srg>
                <skip-server-test-jpa>false</skip-server-test-jpa>
                <skip-jpa-jse-build>true</skip-jpa-jse-build>
                <puName>mongo</puName>
                <!--modelname property name is used there due substitution string in application.xml-->
                <modelname>eclipselink-mongo-model</modelname>
                <extra-model>eclipselink-mongo-model</extra-model>
                <packageName>mongo</packageName>
                <test-client-class>org.eclipse.persistence.testing.tests.jpa.mongo.MongoTestSuite</test-client-class>
            </properties>
        </profile>
        <profile>
            <id>server-test-jpa-mongo-xml</id>
            <properties>
                <skip-test-jpa-srg>true</skip-test-jpa-srg>
                <skip-server-test-jpa>false</skip-server-test-jpa>
                <skip-jpa-jse-build>true</skip-jpa-jse-build>
                <puName>mongo-xml</puName>
                <!--modelname property name is used there due substitution string in application.xml-->
                <modelname>eclipselink-mongo-model-xml</modelname>
                <extra-model>eclipselink-mongo-model-xml</extra-model>
                <packageName>mongo</packageName>
                <test-client-class>org.eclipse.persistence.testing.tests.jpa.mongo.MongoXMLTestSuite</test-client-class>
            </properties>
        </profile>
    </profiles>
</project>
