<?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 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>batchee</artifactId>
        <groupId>org.apache.batchee</groupId>
        <version>0.2-incubating</version>
    </parent>

    <artifactId>batchee-jbatch</artifactId>
    <name>BatchEE :: JBatch</name>

    <properties>
        <openjpa.version>2.3.0</openjpa.version>

        <tck.suite>${project.basedir}/src/test/resources/suites/tck.xml</tck.suite>
        <tck.unpack.dir>${project.build.directory}/tck</tck.unpack.dir>
        <tck.dir>${tck.unpack.dir}/jsr352-tck-1.0/artifacts</tck.dir>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jbatch_1.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-atinject_1.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-ejb_3.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.components</groupId>
            <artifactId>geronimo-transaction</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-servlet_3.0_spec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_2.0_spec</artifactId>
            <version>1.1</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.xbean</groupId>
            <artifactId>xbean-reflect</artifactId>
            <version>3.16</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.openejb</groupId>
            <artifactId>openejb-core</artifactId>
            <version>4.6.0</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/xsd</directory>
                <targetPath>xsd</targetPath>
            </resource>
        </resources>
        <plugins>
            <!-- download tcks since i didn't find the maven artifact with tests -->
            <plugin>
                <groupId>com.googlecode.maven-download-plugin</groupId>
                <artifactId>maven-download-plugin</artifactId>
                <version>1.1.0</version>
                <executions>
                    <execution>
                        <id>get-tck</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>wget</goal>
                        </goals>
                        <configuration>
                            <skip>${maven.test.skip}</skip>
                            <url>https://java.net/projects/jbatch/downloads/download/jsr352-tck-1.0.zip</url>
                            <unpack>true</unpack>
                            <outputDirectory>${tck.unpack.dir}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <executions>
                    <execution>
                        <id>batchee-tests</id>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>${maven.test.skip}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>tck-in-memory</id>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>${maven.test.skip}</skip>
                            <systemProperties>
                                <PersistenceManagerService>org.apache.batchee.container.services.persistence.MemoryPersistenceManagerService</PersistenceManagerService>
                            </systemProperties>
                            <suiteXmlFiles>
                                <suiteXmlFile>${tck.suite}</suiteXmlFile>
                            </suiteXmlFiles>
                            <additionalClasspathElements>
                                <additionalClasspathElement>${tck.dir}/jsr352-tck-impl.jar</additionalClasspathElement>
                                <additionalClasspathElement>${tck.dir}/jsr352-tck-SPI.jar</additionalClasspathElement>
                            </additionalClasspathElements>
                        </configuration>
                    </execution>
                    <execution>
                        <id>tck-jdbc</id>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>${maven.test.skip}</skip>
                            <systemProperties>
                                <PersistenceManagerService>org.apache.batchee.container.services.persistence.JDBCPersistenceManagerService</PersistenceManagerService>
                            </systemProperties>
                            <suiteXmlFiles>
                                <suiteXmlFile>${tck.suite}</suiteXmlFile>
                            </suiteXmlFiles>
                            <additionalClasspathElements>
                                <additionalClasspathElement>${tck.dir}/jsr352-tck-impl.jar</additionalClasspathElement>
                                <additionalClasspathElement>${tck.dir}/jsr352-tck-SPI.jar</additionalClasspathElement>
                            </additionalClasspathElements>
                        </configuration>
                    </execution>
                    <execution>
                        <id>tck-jpa</id>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>${maven.test.skip}</skip>
                            <systemProperties>
                                <PersistenceManagerService>org.apache.batchee.container.services.persistence.JPAPersistenceManagerService</PersistenceManagerService>
                            </systemProperties>
                            <suiteXmlFiles>
                                <suiteXmlFile>${tck.suite}</suiteXmlFile>
                            </suiteXmlFiles>
                            <additionalClasspathElements>
                                <additionalClasspathElement>${tck.dir}/jsr352-tck-impl.jar</additionalClasspathElement>
                                <additionalClasspathElement>${tck.dir}/jsr352-tck-SPI.jar</additionalClasspathElement>
                            </additionalClasspathElements>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <skip>true</skip>
                    <forkCount>1</forkCount>
                    <reuseForks>false</reuseForks>

                    <!--
                    Global config for TCKs shared with batchee internal tests,
                    that's not a big deal since internal tests doesn't use it
                    and it avoids to spread it over all our executions
                    -->
                    <systemProperties>
                        <batchee.service-manager.log>true</batchee.service-manager.log>

                        <!-- replace properties file -->
                        <tck.execution.waiter.timeout>900000</tck.execution.waiter.timeout>
                        <ExecutionTests.testInvokeJobWithUserStop.sleep>1000</ExecutionTests.testInvokeJobWithUserStop.sleep>
                        <JobOperatorTests.testInvokeJobWithUserStop.sleep>1000</JobOperatorTests.testInvokeJobWithUserStop.sleep>
                        <JobOperatorTests.testJobOperatorGetRunningJobExecutions.sleep>1000</JobOperatorTests.testJobOperatorGetRunningJobExecutions.sleep>
                        <JobOperatorTests.testJobOperatorGetRunningJobExecutions.app.timeinterval>10000</JobOperatorTests.testJobOperatorGetRunningJobExecutions.app.timeinterval>
                        <JobOperatorTests.testJobOperatorGetRunningJobInstancesException.app.timeinterval>10000</JobOperatorTests.testJobOperatorGetRunningJobInstancesException.app.timeinterval>
                        <ParallelExecutionTests.testStopRunningPartitionedStep.sleep>1900</ParallelExecutionTests.testStopRunningPartitionedStep.sleep>
                        <ParallelExecutionTests.testStopRestartRunningPartitionedStep.sleep>1900</ParallelExecutionTests.testStopRestartRunningPartitionedStep.sleep>
                        <ParallelExecutionTests.testInvokeJobWithOnePartitionedStepExitStatus.sleep>2000</ParallelExecutionTests.testInvokeJobWithOnePartitionedStepExitStatus.sleep>
                        <StopOrFailOnExitStatusWithRestartTests.testInvokeJobWithUserStop.sleep>500</StopOrFailOnExitStatusWithRestartTests.testInvokeJobWithUserStop.sleep>
                        <TransactionTests.testGlobalTranNoExceptions.sleep>0</TransactionTests.testGlobalTranNoExceptions.sleep>
                        <TransactionTests.testGlobalTranForcedExceptionWithRollback.sleep>0</TransactionTests.testGlobalTranForcedExceptionWithRollback.sleep>
                        <TransactionTests.testGlobalTranForcedExceptionCheckpointRestart.sleep>0</TransactionTests.testGlobalTranForcedExceptionCheckpointRestart.sleep>
                        <TransactionTests.testGlobalTranNoDelayLongTimeout.sleep>0</TransactionTests.testGlobalTranNoDelayLongTimeout.sleep>
                        <TransactionTests.testGlobalTranLongDelayShortTimeoutThenNoDelayShortTimeout.sleep.1>10000</TransactionTests.testGlobalTranLongDelayShortTimeoutThenNoDelayShortTimeout.sleep.1>
                        <TransactionTests.testGlobalTranLongDelayShortTimeoutThenNoDelayShortTimeout.sleep.2>0</TransactionTests.testGlobalTranLongDelayShortTimeoutThenNoDelayShortTimeout.sleep.2>
                        <TransactionTests.testGlobalTranLongDelayMixOfLongTimeoutStepsAndShortTimeoutSteps.sleep>10000</TransactionTests.testGlobalTranLongDelayMixOfLongTimeoutStepsAndShortTimeoutSteps.sleep>
                        <TransactionTests.testGlobalTranLongDelayMixOfLongTimeoutStepsAndShortTimeoutStepsCustomCheckpointAlgorithm.sleep>10000</TransactionTests.testGlobalTranLongDelayMixOfLongTimeoutStepsAndShortTimeoutStepsCustomCheckpointAlgorithm.sleep>
                        <TransactionTests.testGlobalTranForcedTimeoutCheckpointRestart.sleep.1>10000</TransactionTests.testGlobalTranForcedTimeoutCheckpointRestart.sleep.1>
                        <TransactionTests.testGlobalTranForcedTimeoutCheckpointRestart.sleep.2>0</TransactionTests.testGlobalTranForcedTimeoutCheckpointRestart.sleep.2>
                        <ChunkTests.testChunkTimeBased10Seconds.sleep>500</ChunkTests.testChunkTimeBased10Seconds.sleep>
                        <ChunkTests.testChunkRestartTimeBasedCheckpoint.sleep>500</ChunkTests.testChunkRestartTimeBasedCheckpoint.sleep>
                        <ChunkTests.testChunkTimeBasedTimeLimit0.sleep>500</ChunkTests.testChunkTimeBasedTimeLimit0.sleep>
                        <ChunkTests.testChunkRestartTimeBasedDefaultCheckpoint.sleep>500</ChunkTests.testChunkRestartTimeBasedDefaultCheckpoint.sleep>
                    </systemProperties>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>templating-maven-plugin</artifactId>
                <version>1.0-alpha-3</version>
                <executions>
                    <execution>
                        <id>filter-src</id>
                        <goals>
                            <goal>filter-sources</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!--
                 * We use the openjpa-maven-plugin just for generating the
                 * CREATE TABLE statements for various databases.
                 * Those will later be zipped and added as attached artifact.
                 -->
                <groupId>org.apache.openjpa</groupId>
                <artifactId>openjpa-maven-plugin</artifactId>
                <version>${openjpa.version}</version>

                <configuration>
                    <includes>org/apache/batchee/container/services/persistence/jpa/domain/*.class</includes>
                    <addDefaultConstructor>true</addDefaultConstructor>
                    <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
                    <persistenceXmlFile>${project.basedir}/src/test/resources/META-INF/persistence-createdb.xml</persistenceXmlFile>
                    <sqlAction>build</sqlAction>
                    <toolProperties>
                        <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                    </toolProperties>
                </configuration>

                <executions>
                    <execution>
                        <id>oracle</id>
                        <goals><goal>sql</goal></goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <sqlFile>${project.build.directory}/database-oracle.sql</sqlFile>
                            <toolProperties>
                                <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                                <DBDictionary>org.apache.openjpa.jdbc.sql.OracleDictionary</DBDictionary>
                            </toolProperties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>mysql</id>
                        <goals><goal>sql</goal></goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <sqlFile>${project.build.directory}/database-myslq.sql</sqlFile>
                            <toolProperties>
                                <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                                <DBDictionary>org.apache.openjpa.jdbc.sql.MySQLDictionary</DBDictionary>
                            </toolProperties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>h2</id>
                        <goals><goal>sql</goal></goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <sqlFile>${project.build.directory}/database-h2.sql</sqlFile>
                            <toolProperties>
                                <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                                <DBDictionary>org.apache.openjpa.jdbc.sql.H2Dictionary</DBDictionary>
                            </toolProperties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>DB2</id>
                        <goals><goal>sql</goal></goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <sqlFile>${project.build.directory}/database-db2.sql</sqlFile>
                            <toolProperties>
                                <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                                <DBDictionary>org.apache.openjpa.jdbc.sql.DB2Dictionary</DBDictionary>
                            </toolProperties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>hsqldb</id>
                        <goals><goal>sql</goal></goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <sqlFile>${project.build.directory}/database-hsqldb.sql</sqlFile>
                            <toolProperties>
                                <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                                <DBDictionary>org.apache.openjpa.jdbc.sql.HSQLDictionary</DBDictionary>
                            </toolProperties>
                        </configuration>
                    </execution>
                    <execution>
                        <id>derby</id>
                        <goals><goal>sql</goal></goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <sqlFile>${project.build.directory}/database-derby.sql</sqlFile>
                            <toolProperties>
                                <MappingDefaults>ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict</MappingDefaults>
                                <DBDictionary>org.apache.openjpa.jdbc.sql.DerbyDictionary</DBDictionary>
                            </toolProperties>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <tarLongFileMode>gnu</tarLongFileMode>
                    <descriptors>
                        <descriptor>src/main/assembly/dbscripts-assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>


    <profiles>
        <profile>
            <!--
            To debug having TCK at classpath (to be able to debug in TCK classes and/or to get completion in dev-suite.xml):
            1) mvn process-test-classes
            2) cp -r target/tck/jsr352-tck-1.0/artifacts/ /tmp
            3) activate the following dependencies
            -->
            <id>tckdebug</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>unpack_tck_tests</id>
                                <phase>generate-test-resources</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <tasks>
                                        <unzip src="${tck.dir}/jsr352-tck-impl-src.jar" dest="${project.build.directory}/tck-test-src" />
                                        <unzip src="${tck.dir}/jsr352-tck-SPI.jar" dest="${project.build.testOutputDirectory}" />
                                        <unzip src="${tck.dir}/jsr352-tck-impl.jar" dest="${project.build.testOutputDirectory}">
                                            <patternset>
                                                <include name="META-INF/**" />
                                            </patternset>
                                        </unzip>
                                    </tasks>
                                    <outputDirectory>${project.build.directory}/tck-test-src</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>build-helper-maven-plugin</artifactId>
                        <version>1.8</version>
                        <executions>
                            <execution>
                                <id>add-tck-src</id>
                                <phase>generate-test-sources</phase>
                                <goals>
                                    <goal>add-test-source</goal>
                                </goals>
                                <configuration>
                                    <sources>
                                        <source>${project.build.directory}/tck-test-src</source>
                                    </sources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
