<?xml version="1.0"?>
<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>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-parent</artifactId>
        <version>3.5.3-Final</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-infinispan</artifactId>
    <packaging>jar</packaging>

    <name>Hibernate Infinispan Integration</name>
    <description>Integration of Hibernate with Infinispan</description>

    <properties>
      <version.infinispan>4.0.0.FINAL</version.infinispan>
      <version.hsqldb>1.8.0.2</version.hsqldb>
      <version.cglib>2.2</version.cglib>
      <version.javassist>3.4.GA</version.javassist>
      <version.org.jboss.naming>5.0.3.GA</version.org.jboss.naming>
      <version.xapool>1.5.0</version.xapool>       
      <skipUnitTests>true</skipUnitTests>
      <!-- 
         Following is the default jgroups mcast address.  If you find the testsuite runs very slowly, there
         may be problems with multicast on the interface JGroups uses by default on your machine. You can
         try to resolve setting 'jgroups.bind_addr' as a system-property to the jvm launching maven and
         setting the value to an interface where you know multicast works
      -->
      <jgroups.bind_addr>127.0.0.1</jgroups.bind_addr>
    </properties>

    <dependencies>
        <dependency>
            <groupId>${groupId}</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-core</artifactId>
            <version>${version.infinispan}</version> 
        </dependency>
        
        <!-- test dependencies -->
        <dependency>
            <groupId>${groupId}</groupId>
            <artifactId>hibernate-testing</artifactId>
            <version>${version}</version>
            <!-- <scope>test</scope> TODO fix this -->
        </dependency>
        <dependency>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-core</artifactId>
            <version>${version.infinispan}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>${version.hsqldb}</version>
            <scope>test</scope>
        </dependency>
        <!-- this is optional on core :( and needed for testing -->
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>${version.cglib}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>${version.javassist}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
          <groupId>org.jboss.naming</groupId>
          <artifactId>jnp-client</artifactId>
          <scope>test</scope>
          <version>${version.org.jboss.naming}</version>
        </dependency>

        <dependency>
          <groupId>org.jboss.naming</groupId>
          <artifactId>jnpserver</artifactId>
          <scope>test</scope>
          <version>${version.org.jboss.naming}</version>
        </dependency>

        <dependency>
          <groupId>com.experlog</groupId>
          <artifactId>xapool</artifactId>
          <scope>test</scope>
          <version>${version.xapool}</version>
        </dependency>

        <dependency>
          <groupId>jboss.jbossts</groupId>
          <artifactId>jbossjta</artifactId>
          <version>4.9.0.GA</version>
          <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerVersion>1.6</compilerVersion>
                    <executable>${jdk16_home}/bin/javac</executable>
                    <fork>true</fork>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <jvm>${jdk16_home}/bin/java</jvm>
                    <excludes>
                        <!-- Skip a long-running test of a prototype class -->
                        <exclude>**/ClusteredConcurrentTimestampRegionTestCase.java</exclude>
                    </excludes>
                    <systemProperties>
                        <property>
                            <name>hibernate.test.validatefailureexpected</name>
                            <value>true</value>
                        </property>
                        <property>
                            <name>jgroups.bind_addr</name>
                            <value>${jgroups.bind_addr}</value>
                        </property>
                        <!-- There are problems with multicast and IPv6 on some
                             OS/JDK combos, so we tell Java to use IPv4. If you
                             have problems with multicast when running the tests
                             you can try setting this to 'false', although typically
                             that won't be helpful.
                        -->
                        <property>
                            <name>java.net.preferIPv4Stack</name>
                            <value>true</value>
                        </property>
                        <!-- Tell JGroups to only wait a short time for PING 
                             responses before determining coordinator. Speeds cluster
                             formation during integration tests. (This is too
                             low a value for a real system; only use for tests.)
                        -->
                        <property>
                            <name>jgroups.ping.timeout</name>
                            <value>500</value>
                        </property>
                        <!-- Tell JGroups to only require one PING response
                             before determining coordinator. Speeds cluster
                             formation during integration tests. (This is too
                             low a value for a real system; only use for tests.)
                        -->
                        <property>
                            <name>jgroups.ping.num_initial_members</name>
                            <value>1</value>
                        </property>
                        <!-- Disable the JGroups message bundling feature
                             to speed tests and avoid FLUSH issue -->
                        <property>
                            <name>jgroups.udp.enable_bundling</name>
                            <value>false</value>
                        </property>
                    </systemProperties>
                    <skipExec>${skipUnitTests}</skipExec>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>test</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <skipUnitTests>false</skipUnitTests>
            </properties>
        </profile>
     </profiles>
</project>
