<?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>3.1.0-SNAPSHOT</version>
        <relativePath>../../pom_test_server.xml</relativePath>
    </parent>

    <properties>
        <!--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>
            <!--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>
