<?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.6-SNAPSHOT</version>
  </parent>

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

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

    <tck.suite>${project.build.directory}/test-classes/testng/jsr352-tck-impl-EE-suite.xml</tck.suite>
  </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.specs</groupId>
      <artifactId>geronimo-jta_1.1_spec</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>4.5</version>
    </dependency>

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

    <dependency>
      <groupId>com.ibm.jbatch.tck</groupId>
      <artifactId>com.ibm.jbatch.tck</artifactId>
      <version>1.1-b03</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>javax.batch</groupId>
          <artifactId>javax.batch-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>javax.inject</groupId>
          <artifactId>javax.inject</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.ibm.jbatch</groupId>
          <artifactId>com.ibm.jbatch.spi</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.ibm.jbatch.tck</groupId>
      <artifactId>com.ibm.jbatch.tck.spi</artifactId>
      <version>1.1-b03</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>javax.batch</groupId>
          <artifactId>javax.batch-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/xsd</directory>
        <targetPath>xsd</targetPath>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>get-tck</id>
            <goals>
              <goal>unpack</goal>
            </goals>
            <phase>generate-test-sources</phase>
          </execution>
        </executions>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>com.ibm.jbatch.tck</groupId>
              <artifactId>com.ibm.jbatch.tck</artifactId>
              <outputDirectory>${project.build.directory}/test-classes</outputDirectory>
              <includes>testng/*</includes>
            </artifactItem>
          </artifactItems>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</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>
              <properties>
                <property>
                  <name>listener</name>
                  <value>org.apache.batchee.test.tck.lifecycle.ContainerLifecycle</value>
                </property>
              </properties>
            </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>
              <properties>
                <property>
                  <name>listener</name>
                  <value>org.apache.batchee.test.tck.lifecycle.ContainerLifecycle</value>
                </property>
              </properties>
            </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>
              <properties>
                <property>
                  <name>listener</name>
                  <value>org.apache.batchee.test.tck.lifecycle.ContainerLifecycle</value>
                </property>
              </properties>
            </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.0</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-mysql.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>

</project>
