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

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

  <dependencies>
    <dependency>
      <groupId>jakarta.batch</groupId>
      <artifactId>jakarta.batch-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.xml.bind</groupId>
      <artifactId>jakarta.xml.bind-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.inject</groupId>
      <artifactId>jakarta.inject-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.enterprise</groupId>
      <artifactId>jakarta.enterprise.cdi-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.ejb</groupId>
      <artifactId>jakarta.ejb-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.interceptor</groupId>
      <artifactId>jakarta.interceptor-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.transaction</groupId>
      <artifactId>jakarta.transaction-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
    </dependency>
    <dependency>
      <groupId>jakarta.persistence</groupId>
      <artifactId>jakarta.persistence-api</artifactId>
    </dependency>

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

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</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.derby</groupId>
      <artifactId>derbytools</artifactId>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jaxb</groupId>
      <artifactId>jaxb-runtime</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.tomee</groupId>
      <artifactId>openejb-core</artifactId>
      <version>${tomee-10.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.fusesource.jansi</groupId>
      <artifactId>jansi</artifactId>
      <version>1.17.1</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>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <executions>
          <execution>
            <id>batchee-tests-ee10</id>
            <goals>
              <goal>test</goal>
            </goals>
            <configuration>
              <skip>${maven.test.skip}</skip>
            </configuration>
          </execution>
          <execution>
            <id>batchee-tests-ee91</id>
            <goals>
              <goal>test</goal>
            </goals>
            <configuration>
              <skip>${maven.test.skip}</skip>
              <classpathDependencyExcludes>
                <!-- Exclude TomEE 10 from the classpath. Sadly, we need to exclude transient libs too... -->
                <exclude>org.apache.tomee:openejb-core</exclude>
                <exclude>jakarta.transaction:jakarta.transaction-api</exclude>
                <exclude>org.apache.tomee:openejb-jee-accessors</exclude>
                <exclude>org.apache.tomee:openejb-jee</exclude>
                <exclude>org.apache.xbean:xbean-finder-shaded</exclude>
                <exclude>com.sun.istack:istack-commons-runtime</exclude>
                <exclude>org.apache.tomee:openejb-jpa-integration</exclude>
                <exclude>org.apache.tomee:openejb-api</exclude>
                <exclude>org.apache.tomee:mbean-annotation-api</exclude>
                <exclude>org.glassfish.jaxb:jaxb-runtime</exclude>
                <exclude>org.apache.xbean:xbean-asm9-shaded</exclude>
                <exclude>org.slf4j:slf4j-jdk14</exclude>
                <exclude>org.apache.tomee:openejb-loader</exclude>
                <exclude>org.apache.xbean:xbean-bundleutils</exclude>
                <exclude>org.glassfish.jaxb:txw2</exclude>
                <exclude>org.apache.tomee:jakartaee-api</exclude>
                <exclude>org.slf4j:slf4j-api</exclude>
                <exclude>org.apache.tomee:openejb-javaagent</exclude>
                <exclude>org.apache.xbean:xbean-reflect</exclude>
                <exclude>org.apache.xbean:xbean-naming</exclude>
                <exclude>org.glassfish.jaxb:jaxb-core</exclude>
                <exclude>org.apache.tomee:sxc-shade</exclude>
                <exclude>org.apache.tomee.bom:jaxb-runtime</exclude>
                <exclude>jakarta.xml.bind:jakarta.xml.bind-api</exclude>
              </classpathDependencyExcludes>
              <additionalClasspathDependencies>
                <dependency>
                  <groupId>org.apache.tomee</groupId>
                  <artifactId>openejb-core</artifactId>
                  <version>${tomee-9.version}</version>
                </dependency>
              </additionalClasspathDependencies>
            </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>
            <openejb.additional.exclude>com.ibm</openejb.additional.exclude>

            <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>
            <Log>slf4j</Log>
            <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>3.3.0</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>
