<?xml version="1.0" encoding="UTF-8"?>

<!-- Licensed 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>

	<parent>
		<groupId>org.apache.chemistry.opencmis</groupId>
		<artifactId>chemistry-opencmis</artifactId>
		<version>0.13.0</version>
		<relativePath>../../pom.xml</relativePath>
	</parent>


	<artifactId>chemistry-opencmis-test-fit</artifactId>
	<name>OpenCMIS Full Integration Tests</name>
	<packaging>war</packaging>

	<properties>
		<parentBasedir>../../</parentBasedir>
		<modeshape.version>3.2.0.Final</modeshape.version>
        <jackrabbit-core.version>2.6.1</jackrabbit-core.version>
        <maven-failsafe-plugin.version>2.17</maven-failsafe-plugin.version>
        <maven-jetty-plugin.version>6.1.22</maven-jetty-plugin.version>
        <jcr.version>2.0</jcr.version>
        <overlay.groupId />
        <overlay.artifactId />
        <factory.class />
        <!-- Used in ServiceLoader to look up impl. -->
        <service.factory.class />
        <repository />
        <user />
        <password />
        <default.documentType>cmis:document</default.documentType>
        <default.versionableDocumentType>VersionableType</default.versionableDocumentType>
        <test.versionable>true</test.versionable>
        <test.notVersionable>true</test.notVersionable>
    </properties>


	<build>
		<testResources>
			<testResource>
				<directory>src/test/resources</directory>
				<filtering>true</filtering>
			</testResource>
		</testResources>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<configuration>
					<overlays>
						<overlay>
                            <groupId>${overlay.groupId}</groupId>
                            <artifactId>${overlay.artifactId}</artifactId>
						</overlay>
					</overlays>
				   <webResources>
				        <resource>
			                <directory>${project.basedir}/src/main/webapp/WEB-INF</directory>
			                <filtering>true</filtering>
			                <targetPath>WEB-INF</targetPath>
			                <includes>
			                        <include>**/*.*</include>
			                </includes>
				        </resource>
				    </webResources>				
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-failsafe-plugin</artifactId>
				<version>${maven-failsafe-plugin.version}</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<reuseForks>true</reuseForks>
					<forkedProcessTimeoutInSeconds>1800</forkedProcessTimeoutInSeconds>
					<argLine>-Xmx512m -ea:org.apache.chemistry</argLine>	
				</configuration>
				<executions>
					<execution>
						<id>integration-test</id>
						<goals>
							<goal>integration-test</goal>
						</goals>
					</execution>
					<execution>
						<id>verify</id>
						<goals>
							<goal>verify</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>${maven-jetty-plugin.version}</version>
				<configuration>
					<scanIntervalSeconds>10</scanIntervalSeconds>
					<stopPort>19966</stopPort>
					<stopKey>foo</stopKey>
					<connectors>
						<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
							<port>19080</port>
							<host>0.0.0.0</host>
						</connector>
					</connectors>
					<systemProperties>
                        <systemProperty>
			              <name>org.apache.chemistry.opencmis.session.repository.id</name>
			              <value>${repository}</value>
			            </systemProperty>
			            <systemProperty>
			              <name>org.apache.chemistry.opencmis.user</name>
			              <value>${user}</value>
			            </systemProperty>
			            <systemProperty>
			              <name>org.apache.chemistry.opencmis.password</name>
			              <value>${password}</value>
			            </systemProperty>
			            <systemProperty>
			              <name>org.apache.chemistry.opencmis.tck.default.documentType</name>
			              <value>${default.documentType}</value>
			            </systemProperty>
			            <systemProperty>
			              <name>org.apache.chemistry.opencmis.tck.default.versionableDocumentType</name>
			              <value>${default.versionableDocumentType}</value>
			            </systemProperty>
			            <systemProperty>
			              <name>org.apache.chemistry.opencmis.tck.testNotVersionable</name>
			              <value>${test.notVersionable}</value>
			            </systemProperty>
			            <systemProperty>
			              <name>org.apache.chemistry.opencmis.tck.testVersionable</name>
			              <value>${test.versionable}</value>
			            </systemProperty>			            
	                	<systemProperty>
	                		<name>project.basedir</name>
	                		<value>${project.basedir}</value>
	                	</systemProperty>
                        <systemProperty>
	                		<name>project.build.directory</name>
	                		<value>${project.build.directory}</value>
	                	</systemProperty>
		            </systemProperties>					
					<webAppConfig>
						<contextPath>/opencmis</contextPath>
					</webAppConfig>
				</configuration>
				<executions>
					<execution>
						<id>start-jetty</id>
						<phase>pre-integration-test</phase>
						<goals>
							<goal>run-war</goal>
						</goals>
						<configuration>
							<scanIntervalSeconds>0</scanIntervalSeconds>
							<daemon>true</daemon>
						</configuration>
					</execution>
					<execution>
						<id>stop-jetty</id>
						<phase>post-integration-test</phase>
						<goals>
							<goal>stop</goal>
						</goals>
					</execution>
				</executions>
			</plugin>  				
		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>chemistry-opencmis-test-tck</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>${project.groupId}</groupId>
			<artifactId>chemistry-opencmis-test-util</artifactId>
			<version>${project.version}</version>
			<type>jar</type>
			<scope>compile</scope>
		</dependency>
	</dependencies>
	
	<profiles>
        <profile>
            <id>jcr-modeshape-inmemory</id>
            <properties>
            	<overlay.groupId>org.apache.chemistry.opencmis</overlay.groupId>
            	<overlay.artifactId>chemistry-opencmis-server-jcr</overlay.artifactId>
            	<factory.class>org.apache.chemistry.opencmis.jcr.JcrServiceFactory</factory.class>
            	<!-- Used in ServiceLoader to look up impl. -->
            	<service.factory.class>org.modeshape.jcr.JcrRepositoryFactory</service.factory.class>
            	<repository>test</repository>
            	<default.documentType>cmis:document</default.documentType>
            	<default.versionableDocumentType>cmis:document</default.versionableDocumentType>
            	<test.versionable>true</test.versionable>
                <test.notVersionable>false</test.notVersionable>
            	<forkMode>never</forkMode>
            </properties>
	        <dependencies>
		        <dependency>
		            <groupId>org.modeshape</groupId>
		            <artifactId>modeshape-jcr</artifactId>
		            <version>${modeshape.version}</version>
		            <exclusions>
                        <exclusion>
                            <artifactId>tika-parsers</artifactId>
                            <groupId>org.apache.tika</groupId>
                        </exclusion>
                    </exclusions>
		        </dependency>
		        <dependency>
		            <groupId>org.apache.chemistry.opencmis</groupId>
		            <artifactId>chemistry-opencmis-server-jcr</artifactId>
		            <version>${project.version}</version>
		            <type>war</type>
		        </dependency>
		        <dependency>
		            <groupId>org.apache.chemistry.opencmis</groupId>
		            <artifactId>chemistry-opencmis-server-bindings</artifactId>
		            <version>${project.version}</version>
		        </dependency>		
		        <dependency>
		            <groupId>org.apache.chemistry.opencmis</groupId>
		            <artifactId>chemistry-opencmis-server-jcr</artifactId>
		            <version>${project.version}</version>
		            <classifier>classes</classifier>
		        </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>${log4j.version}</version>
                </dependency>                
	        </dependencies>
        </profile>
        <profile>
            <id>chemistry-inmemory</id>
             <activation>
            	<activeByDefault>true</activeByDefault>
            </activation> 
            <properties>
            	<overlay.groupId>${project.groupId}</overlay.groupId>
            	<overlay.artifactId>chemistry-opencmis-server-inmemory</overlay.artifactId>
            	<factory.class>org.apache.chemistry.opencmis.inmemory.server.InMemoryServiceFactoryImpl</factory.class>
            	<!-- Used in ServiceLoader to look up impl. -->
            	<service.factory.class>${factory.class}</service.factory.class>
            	<repository>test</repository>
                <default.documentType>cmis:document</default.documentType>
                <default.versionableDocumentType>VersionableType</default.versionableDocumentType>
                <test.versionable>true</test.versionable>
                <test.notVersionable>true</test.notVersionable>
            </properties>
	        <dependencies>
	        	<dependency>
					<groupId>${project.groupId}</groupId>
					<artifactId>chemistry-opencmis-server-inmemory</artifactId>
					<version>${project.version}</version>
					<type>war</type>
				</dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>${log4j.version}</version>
                </dependency>                
             </dependencies>
	    </profile>
        <profile>
            <id>jcr-jackrabbit-inmemory</id>
            <properties>
            	<overlay.groupId>${project.groupId}</overlay.groupId>
            	<overlay.artifactId>chemistry-opencmis-server-bindings-war</overlay.artifactId>
            	<factory.class>org.apache.chemistry.opencmis.jcr.JcrServiceFactory</factory.class>
            	<!-- Used in ServiceLoader to look up impl.  -->
            	<service.factory.class>org.apache.jackrabbit.core.RepositoryFactoryImpl</service.factory.class>
            	<repository>default</repository>  
            	<user>admin</user>
            	<password>admin</password>
            	<default.documentType>cmis:document</default.documentType>
            	<default.versionableDocumentType>cmis:document</default.versionableDocumentType>
            	<test.versionable>true</test.versionable>
                <test.notVersionable>false</test.notVersionable>
            	<forkMode>never</forkMode>
            </properties>
	        <dependencies>
              <dependency>
                    <groupId>javax.jcr</groupId>
                    <artifactId>jcr</artifactId>
                    <version>${jcr.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.jackrabbit</groupId>
                    <artifactId>jackrabbit-core</artifactId>
                    <version>${jackrabbit-core.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>${log4j.version}</version>
                </dependency>
		        <dependency>
		            <groupId>org.apache.chemistry.opencmis</groupId>
		            <artifactId>chemistry-opencmis-server-jcr</artifactId>
		            <version>${project.version}</version>
		            <type>war</type>
		        </dependency>
		        <dependency>
		            <groupId>org.apache.chemistry.opencmis</groupId>
		            <artifactId>chemistry-opencmis-server-bindings</artifactId>
		            <version>${project.version}</version>
		        </dependency>		
		        <dependency>
		            <groupId>org.apache.chemistry.opencmis</groupId>
		            <artifactId>chemistry-opencmis-server-jcr</artifactId>
		            <version>${project.version}</version>
		            <classifier>classes</classifier>
		        </dependency>		            	        
	        </dependencies>
	    </profile>	    
    </profiles>
</project>
