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

<!-- ====================================================================== -->
<!-- P R O J E C T  D E S C R I P T I O N                                   -->
<!-- ====================================================================== -->
  <parent>
    <groupId>org.apache.jackrabbit</groupId>
    <artifactId>jackrabbit-parent</artifactId>
    <version>2.21.8-SNAPSHOT</version>
    <relativePath>../jackrabbit-parent/pom.xml</relativePath>
  </parent>
  <artifactId>jackrabbit-core</artifactId>
  <name>Jackrabbit Core</name>
  <description>Jackrabbit content repository implementation</description>

  <properties>
    <org.apache.jackrabbit.test.integration>false</org.apache.jackrabbit.test.integration>
    <test.opts.memory>-Xmx512m</test.opts.memory>
  </properties>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>process-test-resources</id>
            <phase>process-test-resources</phase>
            <configuration>
              <target>
                <copy todir="${project.build.directory}/repository">
                  <fileset dir="${basedir}/src/test/repository" />
                </copy>
                <copy todir="${project.build.directory}/repository-2">
                  <fileset dir="${basedir}/src/test/repository" />
                </copy>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <includes>
            <include>**/*TestAll.java</include>
          </includes>
          <argLine>${test.opts}</argLine>
          <systemProperties>
            <property>
              <name>java.awt.headless</name>
              <value>true</value>
            </property>
            <property>
              <name>derby.system.durability</name>
              <value>test</value>
            </property>
            <property>
              <name>derby.storage.fileSyncTransactionLog</name>
              <value>true</value>
            </property>
            <property>
              <name>derby.stream.error.file</name>
              <value>target/derby.log</value>
            </property>
            <property>
              <name>org.apache.jackrabbit.repository.home</name>
              <value>target/repository-factory-test</value>
            </property>
            <property>
              <name>known.issues</name>
              <value>
org.apache.jackrabbit.core.ConcurrentImportTest
org.apache.jackrabbit.core.xml.DocumentViewTest#testMultiValue
org.apache.jackrabbit.core.NodeImplTest#testReferentialIntegrityCorruptionGetPath
org.apache.jackrabbit.core.integration.ConcurrentQueryTest#testConcurrentQueryWithDeletes
org.apache.jackrabbit.test.api.ShareableNodeTest#testGetName
org.apache.jackrabbit.test.api.ShareableNodeTest#testGetNode
org.apache.jackrabbit.test.api.ShareableNodeTest#testGetNodes
org.apache.jackrabbit.test.api.ShareableNodeTest#testGetNodesByPattern
org.apache.jackrabbit.test.api.ShareableNodeTest#testMoveShareableNode<!--JCR-3381-->
org.apache.jackrabbit.test.api.ShareableNodeTest#testTransientMoveShareableNode<!--JCR-3381-->
org.apache.jackrabbit.test.api.lock.OpenScopedLockTest#testLockExpiration
org.apache.jackrabbit.test.api.lock.SessionScopedLockTest#testLockExpiration
org.apache.jackrabbit.test.api.observation.NodeReorderTest#testNodeReorderMove
org.apache.jackrabbit.core.data.ConcurrentGcTest#testDatabases
org.apache.jackrabbit.core.data.GarbageCollectorTest#testCloseSessionWhileRunningGc
org.apache.jackrabbit.core.data.GarbageCollectorTest#testSimultaneousRunGC <!-- JCR-4078 -->
org.apache.jackrabbit.core.ReplacePropertyWhileOthersReadTest <!-- JCR-3835 -->
org.apache.jackrabbit.core.security.user.MembershipCachePerfTest <!-- don't run expensive test -->
org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testStringLiteralInvalidName        <!-- OAK-3265 -->
org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testPathLiteral                     <!-- OAK-3265 -->
org.apache.jackrabbit.test.api.query.qom.NodeLocalNameTest#testURILiteral                      <!-- OAK-3265 -->
              </value>
            </property>
            <property>
              <name>org.apache.jackrabbit.test.integration</name>
              <value>${org.apache.jackrabbit.test.integration}</value>
            </property>
          </systemProperties>
        </configuration>
        <executions>
          <execution>
            <id>do_test</id>
            <phase>integration-test</phase>
            <configuration>
              <includes>
                <include>**/integration/*Test.java</include>
              </includes>
            </configuration>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>src/main/javadoc/**/*.uxf</exclude>
            <exclude>src/test/repository/**</exclude>
            <exclude>src/test/resources/**/*.txt</exclude>
            <exclude>src/test/resources/**/*.rtf</exclude>
            <exclude>src/test/resources/**/*.cnd</exclude>
            <exclude>src/test/compatibility/**/target/**</exclude>
            <exclude>src/test/compatibility/**/.*/**</exclude>
            <exclude>src/test/compatibility/repositories.zip</exclude>
            <exclude>repository/**</exclude>
            <exclude>*.log</exclude>
          </excludes>
        </configuration>
      </plugin>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <configuration>
          <excludes>
            <exclude>logback-test.xml</exclude>
          </excludes>
       </configuration>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/resources-filtered</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <pluginManagement>
      <plugins>
        <!-- JCR-3136: Add m2e lifecycle mappings for Eclipse Indigo -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <versionRange>[3,)</versionRange>
                    <goals>
                      <goal>run</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <dependencies>
    <dependency>
      <groupId>concurrent</groupId>
      <artifactId>concurrent</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>javax.jcr</groupId>
      <artifactId>jcr</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>oak-jackrabbit-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-commons</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-data</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>jackrabbit-data</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>  
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-spi-commons</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-spi</artifactId>
      <version>${project.version}</version>
      <classifier />
    </dependency>
      <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-spi</artifactId>
      <version>${project.version}</version>
      <classifier>tests</classifier>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.lucene</groupId>
      <artifactId>lucene-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.derby</groupId>
      <artifactId>derby</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-tests</artifactId>
      <version>${project.version}</version>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>jackrabbit-jcr-benchmark</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tika</groupId>
      <artifactId>tika-parsers</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>      
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.transaction</groupId>
      <artifactId>javax.transaction-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.4.200</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>integrationTesting</id>
      <properties>
        <org.apache.jackrabbit.test.integration>true</org.apache.jackrabbit.test.integration>
      </properties>
    </profile>
    <!--
      These profiles can be used to run the (integration) tests against different DB backends.
      For instance, if you want to run the integration tests against MySQL backend, do:

        mvn clean integration-test -Pmysql,use-descriptor-overlay

      Note: the ${config.db.name} database is dropped and re-created in the clean phase. 
    -->
    <profile>
      <id>mysql</id>
      <properties>
        <config.db.name>jackrabbit</config.db.name>
        <config.db.fsclass>org.apache.jackrabbit.core.fs.db.DbFileSystem</config.db.fsclass>
        <config.db.dsclass>org.apache.jackrabbit.core.data.db.DbDataStore</config.db.dsclass>
        <config.db.pmclass>org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager</config.db.pmclass>
        <config.db.journalclass>org.apache.jackrabbit.core.journal.DatabaseJournal</config.db.journalclass>
        <config.db.schema>mysql</config.db.schema>
        <config.db.validation.query>select 1</config.db.validation.query>
        <config.db.user>user</config.db.user>
        <config.db.pwd>pwd</config.db.pwd>
        <config.db.driver>com.mysql.jdbc.Driver</config.db.driver>
        <config.db.url>jdbc:mysql://localhost:3306/${config.db.name}?autoReconnect=true</config.db.url>
        <config.db.metaurl>jdbc:mysql://localhost:3306/mysql?autoReconnect=true</config.db.metaurl>
        <config.db.dropcommand>drop database ${config.db.name}</config.db.dropcommand>
        <config.db.createcommand>create database ${config.db.name}</config.db.createcommand>
      </properties>
    </profile>
    <profile>
      <id>mssql</id>
      <properties>
        <config.db.name>jackrabbit</config.db.name>
        <config.db.fsclass>org.apache.jackrabbit.core.fs.db.MSSqlFileSystem</config.db.fsclass>
        <config.db.dsclass>org.apache.jackrabbit.core.data.db.DbDataStore</config.db.dsclass>
        <config.db.pmclass>org.apache.jackrabbit.core.persistence.pool.MSSqlPersistenceManager</config.db.pmclass>
        <config.db.journalclass>org.apache.jackrabbit.core.journal.MSSqlDatabaseJournal</config.db.journalclass>
        <config.db.schema>mssql</config.db.schema>
        <config.db.validation.query>select 1</config.db.validation.query>
        <config.db.user>user</config.db.user>
        <config.db.pwd>pwd</config.db.pwd>
        <config.db.driver>net.sourceforge.jtds.jdbc.Driver</config.db.driver>
        <config.db.url>jdbc:jtds:sqlserver://localhost:2433/${config.db.name}</config.db.url>
        <config.db.metaurl>jdbc:jtds:sqlserver://localhost:2433/master</config.db.metaurl>
        <config.db.dropcommand>drop database ${config.db.name}</config.db.dropcommand>
        <config.db.createcommand>create database ${config.db.name}</config.db.createcommand>
      </properties>
    </profile>
    <profile>
      <id>oracle</id>
      <properties>
        <config.db.name>unused</config.db.name>
        <config.db.fsclass>org.apache.jackrabbit.core.fs.db.OracleFileSystem</config.db.fsclass>
        <config.db.dsclass>org.apache.jackrabbit.core.data.db.DbDataStore</config.db.dsclass>
        <config.db.pmclass>org.apache.jackrabbit.core.persistence.pool.OraclePersistenceManager</config.db.pmclass>
        <config.db.journalclass>org.apache.jackrabbit.core.journal.OracleDatabaseJournal</config.db.journalclass>
        <config.db.schema>oracle</config.db.schema>
        <config.db.validation.query>select 'validationQuery' from dual</config.db.validation.query>
        <config.db.user>user</config.db.user>
        <config.db.pwd>password</config.db.pwd>
        <config.db.driver>oracle.jdbc.driver.OracleDriver</config.db.driver>
        <config.db.url>jdbc:oracle:thin:@localhost:1521:xe</config.db.url>
        <config.db.metaurl>unused</config.db.metaurl>
        <config.db.dropcommand>unused</config.db.dropcommand>
        <config.db.createcommand>unused</config.db.createcommand>
      </properties>
    </profile>
    <profile>
      <id>h2</id>
      <properties>
        <config.db.name>jackrabbit</config.db.name>
        <config.db.fsclass>org.apache.jackrabbit.core.fs.db.DbFileSystem</config.db.fsclass>
        <config.db.dsclass>org.apache.jackrabbit.core.data.db.DbDataStore</config.db.dsclass>
        <config.db.pmclass>org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager</config.db.pmclass>
        <config.db.journalclass>org.apache.jackrabbit.core.journal.DatabaseJournal</config.db.journalclass>
        <config.db.schema>h2</config.db.schema>
        <config.db.validation.query>call 1</config.db.validation.query>
        <config.db.user>sa</config.db.user>
        <config.db.pwd>sa</config.db.pwd>
        <config.db.driver>org.h2.Driver</config.db.driver>
        <!-- <config.db.url>jdbc:h2:~/jackrabbit2;MAX_LENGTH_INPLACE_LOB=10240;DB_CLOSE_ON_EXIT=FALSE;TRACE_LEVEL_FILE=2</config.db.url> -->
        <config.db.url>jdbc:h2:~/jackrabbit2;MAX_LENGTH_INPLACE_LOB=10240;DB_CLOSE_ON_EXIT=FALSE</config.db.url>
        <config.db.metaurl>unused</config.db.metaurl>
        <config.db.dropcommand>drop all objects delete files</config.db.dropcommand>
        <config.db.createcommand>unused</config.db.createcommand>
      </properties>
    </profile>
    <profile>
      <id>use-descriptor-overlay</id>
      <build>
      <plugins>
        <!-- Drop/create the test database on clean -->        
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>sql-maven-plugin</artifactId>
          <dependencies>
            <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.6</version>
              <type>jar</type>
              <scope>provided</scope>
            </dependency>
            <dependency>
              <groupId>net.sourceforge.jtds</groupId>
              <artifactId>jtds</artifactId>
              <version>1.2.2</version>
              <scope>provided</scope>
            </dependency>
          </dependencies>
          <configuration>
            <driver>${config.db.driver}</driver>
            <url>${config.db.metaurl}</url>
            <username>${config.db.user}</username>
            <password>${config.db.pwd}</password>
            <settingsKey>sensibleKey</settingsKey>
          </configuration>
          <executions>
            <execution>
              <id>drop-db</id>
              <phase>clean</phase>
              <goals>
                <goal>execute</goal>
              </goals>
              <configuration>
                <autocommit>true</autocommit>
                <sqlCommand>${config.db.dropcommand}</sqlCommand>
                <onError>continue</onError>
              </configuration>
            </execution>
            <execution>
              <id>create-db</id>
              <phase>clean</phase>
              <goals>
                <goal>execute</goal>
              </goals>
              <configuration>
                <autocommit>true</autocommit>
                <sqlCommand>${config.db.createcommand}</sqlCommand>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <executions>
            <execution>
              <id>overlay-repository-descriptors</id>
              <phase>process-test-resources</phase>
              <configuration>
                <target>
                  <copy todir="${project.build.directory}/repository" overwrite="true">
                    <fileset dir="${basedir}/src/test/repository-descriptor-overlay" />
                    <filterset>
                      <filter token="repo.id" value="A" />
                      <filter token="config.db.schema" value="${config.db.schema}" />
                      <filter token="config.db.validation.query" value="${config.db.validation.query}" />
                      <filter token="config.db.driver" value="${config.db.driver}" />
                      <filter token="config.db.url" value="${config.db.url}" />
                      <filter token="config.db.user" value="${config.db.user}" />
                      <filter token="config.db.pwd" value="${config.db.pwd}" />
                      <filter token="config.db.fsclass" value="${config.db.fsclass}" />
                      <filter token="config.db.dsclass" value="${config.db.dsclass}" />
                      <filter token="config.db.pmclass" value="${config.db.pmclass}" />
                      <filter token="config.db.journalclass" value="${config.db.journalclass}" />
                    </filterset>
                  </copy>
                  <copy todir="${project.build.directory}/repository-2" overwrite="true">
                    <fileset dir="${basedir}/src/test/repository-descriptor-overlay" />
                    <filterset>
                      <filter token="repo.id" value="B" />
                      <filter token="config.db.schema" value="${config.db.schema}" />
                      <filter token="config.db.validation.query" value="${config.db.validation.query}" />
                      <filter token="config.db.driver" value="${config.db.driver}" />
                      <filter token="config.db.url" value="${config.db.url}" />
                      <filter token="config.db.user" value="${config.db.user}" />
                      <filter token="config.db.pwd" value="${config.db.pwd}" />
                      <filter token="config.db.fsclass" value="${config.db.fsclass}" />
                      <filter token="config.db.dsclass" value="${config.db.dsclass}" />
                      <filter token="config.db.pmclass" value="${config.db.pmclass}" />
                      <filter token="config.db.journalclass" value="${config.db.journalclass}" />
                    </filterset>
                  </copy>
                </target>
              </configuration>
              <goals>
                <goal>run</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.6</version>
          <type>jar</type>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>net.sourceforge.jtds</groupId>
          <artifactId>jtds</artifactId>
          <version>1.2.2</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.oracle</groupId>
          <artifactId>ojdbc14</artifactId>
          <version>10.2.0.3.0</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>
