<?xml version='1.0' encoding='UTF-8'?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.infinispan</groupId>
      <artifactId>infinispan-persistence-parent</artifactId>
      <version>12.1.7.Final</version>
      <relativePath>../pom.xml</relativePath>
   </parent>
   <artifactId>infinispan-cachestore-remote</artifactId>
   <name>Infinispan Remote CacheStore</name>
   <description>Infinispan remote CacheStore based on Hot Rod protocol</description>

   <properties>
      <module.skipCopyDependencies>false</module.skipCopyDependencies>
      <ca.dname>CN=CA,OU=Infinispan,O=JBoss,L=Red Hat</ca.dname>
      <ca.alias>infinispan-ca</ca.alias>
      <ca.keystore>${project.build.testOutputDirectory}/ca.jks</ca.keystore>
      <client.dname>CN=HotRodClient1,OU=Infinispan,O=JBoss,L=Red Hat</client.dname>
      <client.alias>client1</client.alias>
      <server.dname>CN=HotRodServer,OU=Infinispan,O=JBoss,L=Red Hat</server.dname>
      <server.alias>hotrod</server.alias>
      <client.keystore>${project.build.testOutputDirectory}/keystore_client.jks</client.keystore>
      <server.keystore>${project.build.testOutputDirectory}/keystore_server.jks</server.keystore>
      <default.password>secret</default.password>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-hotrod</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-client-hotrod</artifactId>
         <type>test-jar</type>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
          <artifactId>infinispan-commons</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-component-processor</artifactId>
      </dependency>
      <dependency>
         <groupId>org.infinispan.protostream</groupId>
         <artifactId>protostream-processor</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-jboss-marshalling</artifactId>
         <!-- Prevent transitive dependency -->
         <optional>true</optional>
      </dependency>
       <dependency>
           <groupId>org.infinispan</groupId>
           <artifactId>infinispan-multimap</artifactId>
       </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-server-hotrod</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-server-core</artifactId>
         <type>test-jar</type>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-query-dsl</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.infinispan</groupId>
         <artifactId>infinispan-server-hotrod</artifactId>
         <type>test-jar</type>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.kohsuke.metainf-services</groupId>
         <artifactId>metainf-services</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>io.projectreactor.tools</groupId>
         <artifactId>blockhound</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <resources>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
               <include>schema/*-${infinispan.core.schema.version}.xsd</include>
            </includes>
         </resource>
         <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
               <include>**/*</include>
            </includes>
            <excludes>
               <exclude>schema/**</exclude>
            </excludes>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <directory>${project.basedir}/src/test/resources</directory>
            <filtering>true</filtering>
         </testResource>
      </testResources>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
               <execution>
                  <id>clean-key-stores</id>
                  <phase>process-test-resources</phase>
                  <goals>
                     <goal>run</goal>
                  </goals>
                  <configuration>
                     <target>
                        <macrodef name="keytool">
                           <attribute name="command"/>
                           <element name="args"/>
                           <sequential>
                              <exec executable="${server.jvm}/bin/keytool">
                                 <arg value="@{command}"/>
                                 <!-- common arguments -->
                                 <arg value="-validity"/>
                                 <arg value="365"/>
                                 <arg value="-keyalg"/>
                                 <arg value="RSA"/>
                                 <arg value="-keysize"/>
                                 <arg value="2048"/>
                                 <arg value="-noprompt"/>
                                 <arg value="-storepass"/>
                                 <arg value="${default.password}"/>
                                 <!-- additional arguments -->
                                 <args/>
                              </exec>
                           </sequential>
                        </macrodef>
                        <delete quiet="true">
                           <fileset dir="${project.build.testOutputDirectory}" includes="*.jks,*.csr,*.cer"/>
                        </delete>
                        <echo message="Generate the CA certificate"/>
                        <keytool command="-genkeypair">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-dname"/>
                              <arg value="${ca.dname}"/>
                              <arg value="-keystore"/>
                              <arg value="${ca.keystore}"/>
                              <arg value="-ext"/>
                              <arg value="bc:c"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <keytool command="-exportcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${ca.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/ca.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Import the CA certificate to the server truststore"/>
                        <keytool command="-importcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${project.build.testOutputDirectory}/truststore_server.jks"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/ca.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Import the CA certificate to the client truststore"/>
                        <keytool command="-importcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${project.build.testOutputDirectory}/truststore_client.jks"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/ca.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Generate the client certificate"/>
                        <keytool command="-genkeypair">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${client.alias}"/>
                              <arg value="-dname"/>
                              <arg value="${client.dname}"/>
                              <arg value="-keystore"/>
                              <arg value="${client.keystore}"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Sign the client certificate with the CA"/>
                        <keytool command="-certreq">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${client.alias}"/>
                              <arg value="-dname"/>
                              <arg value="${client.dname}"/>
                              <arg value="-keystore"/>
                              <arg value="${client.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/client1.csr"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <keytool command="-gencert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${ca.keystore}"/>
                              <arg value="-infile"/>
                              <arg value="${project.build.testOutputDirectory}/client1.csr"/>
                              <arg value="-outfile"/>
                              <arg value="${project.build.testOutputDirectory}/client1.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Import the CA certificate to the client keystore"/>
                        <keytool command="-importcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${client.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/ca.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Import the client certificate to the client keystore"/>
                        <keytool command="-importcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${client.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${client.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/client1.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <!-- Server -->
                        <echo message="Generate the server certificate"/>
                        <keytool command="-genkeypair">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${server.alias}"/>
                              <arg value="-dname"/>
                              <arg value="${server.dname}"/>
                              <arg value="-keystore"/>
                              <arg value="${server.keystore}"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Sign the server certificate with the CA"/>
                        <keytool command="-certreq">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${server.alias}"/>
                              <arg value="-dname"/>
                              <arg value="${server.dname}"/>
                              <arg value="-keystore"/>
                              <arg value="${server.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/server.csr"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <keytool command="-gencert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${ca.keystore}"/>
                              <arg value="-infile"/>
                              <arg value="${project.build.testOutputDirectory}/server.csr"/>
                              <arg value="-outfile"/>
                              <arg value="${project.build.testOutputDirectory}/server.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Import the CA certificate to the server keystore"/>
                        <keytool command="-importcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${ca.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${server.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/ca.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                        <echo message="Import the server certificate to the server keystore"/>
                        <keytool command="-importcert">
                           <args>
                              <arg value="-alias"/>
                              <arg value="${server.alias}"/>
                              <arg value="-keystore"/>
                              <arg value="${server.keystore}"/>
                              <arg value="-file"/>
                              <arg value="${project.build.testOutputDirectory}/server.cer"/>
                              <arg value="-keypass"/>
                              <arg value="${default.password}"/>
                           </args>
                        </keytool>
                     </target>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.infinispan</groupId>
            <artifactId>infinispan-defaults-maven-plugin</artifactId>
            <version>${project.version}</version>
            <executions>
               <execution>
                  <id>extract-defaults</id>
                  <phase>process-classes</phase>
                  <goals>
                     <goal>extract-defaults</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <dependenciesToScan>
                  <!-- TestNGSuiteChecksTest -->
                  <dependency>org.infinispan:infinispan-commons-test</dependency>
               </dependenciesToScan>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>
