<?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>
    <groupId>org.apache.sling</groupId>
    <artifactId>sling</artifactId>
    <version>39</version>
    <relativePath />
  </parent>


  <groupId>org.apache.sling.auth.saml2</groupId>
  <artifactId>saml2.example-content</artifactId>
  <name>Example Configs for SAML2 Service Provider</name>
  <version>0.2.0-SNAPSHOT</version>
  <description>Deploys test configurations to SLing for SAML2 Sign On</description>

  <properties>
    <sling.host>localhost</sling.host>
    <sling.port>8080</sling.port>
    <sling.user>admin</sling.user>
    <sling.password>admin</sling.password>
    <noContent>false</noContent>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.jackrabbit</groupId>
      <artifactId>oak-auth-external</artifactId>
      <version>1.26.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.junit.core</artifactId>
      <version>1.0.26</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/content/jcr_root/apps/runmodes/config</directory>
        <targetPath>apps/runmodes/config</targetPath>
      </resource>
      <resource>
        <directory>src/main/content/jcr_root/apps/saml/config</directory>
        <targetPath>apps/saml/config</targetPath>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>ianal-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>verify-legal-files</id>
            <goals>
              <goal>verify-legal-files</goal>
            </goals>
            <configuration>
              <!--
              It will WARN about the artifact missing legal files.
              The legal files are in the artifact in paths below below
                jcr_root/META-INF/DEPENDENCIES
                jcr_root/META-INF/LICENSE
                jcr_root/META-INF/NOTICE
               -->
              <strict>false</strict>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>autoInstallPackage</id>
      <properties>
        <targetServiceUrl>http://${sling.host}:${sling.port}/bin/cpm/package.service.html</targetServiceUrl>
      </properties>
      <build>

        <plugins>
          <plugin>
            <groupId>io.wcm.maven.plugins</groupId>
            <artifactId>wcmio-content-package-maven-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
              <serviceURL>${targetServiceUrl}</serviceURL>
              <group>${project.groupId}</group>
              <skip>${noContent}</skip>
              <userId>${sling.user}</userId>
              <password>${sling.password}</password>
            </configuration>
            <executions>
              <execution>
                <id>install-package</id>
                <goals>
                  <goal>install</goal>
                </goals>
              </execution>
              <execution>
                <goals>
                  <goal>package</goal>
                </goals>

                <configuration>
                  <filters>
                    <filter>
                      <root>/apps/runmodes/config/org.apache.sling.jcr.repoinit.RepositoryInitializer-saml.config</root>
                    </filter>
                    <filter>
                      <root>/apps/saml/config</root>
                    </filter>
                  </filters>
                  <embeddedTarget>/apps/sling/saml2/install</embeddedTarget>
                  <embeddeds>
                    <embedded>
                      <groupId>org.apache.sling</groupId>
                      <artifactId>org.apache.sling.junit.core</artifactId>
                      <generateFilter>true</generateFilter>
                    </embedded>
                  </embeddeds>

                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>