<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- 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>
	<parent>
		<groupId>org.apache.sling</groupId>
		<artifactId>sling</artifactId>
		<version>33</version>
		<relativePath />
	</parent>

	<artifactId>org.apache.sling.auth.form</artifactId>
	<version>1.0.12</version>
	<packaging>bundle</packaging>

	<name>Apache Sling Form Based Authentication Handler</name>
	<description>
        Bundle implementing form based authentication with login
        and logout support. Authentication state is maintained in
        a Cookie or in an HTTP Session. The password is only submitted
        when first authenticating.
    </description>

	<properties>
		<site.jira.version.id>12314785</site.jira.version.id>
		<site.javadoc.exclude>**.impl.**</site.javadoc.exclude>
	</properties>

	<scm>
		<connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-auth-form.git</connection>
		<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-auth-form.git</developerConnection>
		<url>https://gitbox.apache.org/repos/asf?p=sling-org-apache-sling-auth-form.git</url>
	  <tag>org.apache.sling.auth.form-1.0.12</tag>
  </scm>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-DocURL>
							http://sling.apache.org/site/form-based-authenticationhandler.html
						</Bundle-DocURL>
						<Export-Package>
							org.apache.sling.auth.form;version=1.0
						</Export-Package>
						<Private-Package>
							org.apache.sling.auth.form.impl.*
						</Private-Package>
						<Import-Package>
							javax.security.auth.callback;
							javax.security.auth.login;
							org.apache.sling.jcr.jackrabbit.server.security;
							resolution:=optional,
							*
						</Import-Package>
						<Embed-Dependency>
							org.apache.sling.commons.osgi;inline="org/apache/sling/commons/osgi/OsgiUtil.*",
							commons-codec;inline="org/apache/commons/codec/binary/Base64.*
							|org/apache/commons/codec/binary/Hex*
							|org/apache/commons/codec/binary/StringUtils*
							|org/apache/commons/codec/BinaryEncoder*
							|org/apache/commons/codec/BinaryDecoder*
							|org/apache/commons/codec/Encoder*
							|org/apache/commons/codec/Decoder*
							|org/apache/commons/codec/EncoderException*
							|org/apache/commons/codec/DecoderException*"
						</Embed-Dependency>
					</instructions>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.service.component.annotations</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.service.metatype.annotations</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.sling</groupId>
			<artifactId>org.apache.sling.auth.core</artifactId>
			<version>1.4.2</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.jcr</groupId>
			<artifactId>jcr</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.sling</groupId>
			<artifactId>org.apache.sling.jcr.jackrabbit.server</artifactId>
			<version>2.0.6</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.sling</groupId>
			<artifactId>org.apache.sling.api</artifactId>
			<version>2.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>osgi.core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>osgi.cmpn</artifactId>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
		</dependency>

		<!-- Embedded Dependencies -->
		<dependency>
			<groupId>org.apache.sling</groupId>
			<artifactId>org.apache.sling.commons.osgi</artifactId>
			<version>2.0.2-incubator</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.4</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.0</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.jackrabbit</groupId>
			<artifactId>oak-core</artifactId>
			<version>1.0.0</version>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.apache.felix</groupId>
			<artifactId>org.apache.felix.jaas</artifactId>
			<version>0.0.2</version>
			<optional>true</optional>
		</dependency>

		<!-- Test Dependencies -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jmock</groupId>
			<artifactId>jmock-junit4</artifactId>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
		</dependency>
		<dependency>
			<groupId>org.easymock</groupId>
			<artifactId>easymock</artifactId>
			<version>3.4</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-module-junit4</artifactId>
			<version>1.6.4</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-api-easymock</artifactId>
			<version>1.6.4</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
