<?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.3-incubating</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.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>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-b02</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>
        <!-- SNAPSHOTS -->
        <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-b02</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-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>

</project>
