<?xml version="1.0" encoding="UTF-8"?>
<!--* ============LICENSE_START==================================================== 
    * =========================================================================== 
    * org.onap.aaf 
    * Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. 
    * =========================================================================== 
    * 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. 
    * ============LICENSE_END==================================================== 
    * -->
<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">
	<parent>
		<groupId>org.onap.aaf.cadi</groupId>
		<artifactId>parent</artifactId>
		<version>2.1.7-SNAPSHOT</version>
		<relativePath>..</relativePath>
	</parent>

	<modelVersion>4.0.0</modelVersion>
	<name>Shiro OSGI CADI Plugin</name>
	<artifactId>aaf-shiro-aafrealm-osgi-bundle</artifactId>
	<packaging>bundle</packaging>

	<properties>
	    <sonar.skip>true</sonar.skip>
	</properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>2.5.4</version>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
						<Bundle-Version>${project.version}</Bundle-Version>
						<Export-Package>
							org.onap.aaf.cadi.shiro*;version=${project.version}
						</Export-Package>
						<Import-Package>
							javax.servlet,
							javax.servlet.http,
							org.osgi.service.blueprint;version="[1.0.0,2.0.0)",
							javax.net.ssl,
							javax.crypto,
							javax.crypto.spec,
							javax.xml.bind.annotation,
							javax.xml.bind,
							javax.xml.transform,
							javax.xml.datatype,
							javax.management,
							javax.security.auth,
							javax.security.auth.login,
							javax.security.auth.callback,
							javax.xml.soap,
							javax.xml.parsers,
							javax.xml.namespace,
							org.w3c.dom,
							org.xml.sax,
							javax.xml.transform.stream
						</Import-Package>
						<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
						<!-- <Embed-Dependency>*;scope=compile|runtime;artifactId=!shiro-core;inline=false</Embed-Dependency> -->
						<Embed-Transitive>true</Embed-Transitive>
						<Fragment-Host>org.apache.shiro.core</Fragment-Host>
					</instructions>
				</configuration>
			</plugin>
		</plugins>


	</build>

	<dependencies>
           <dependency>
             <groupId>org.onap.aaf.cadi</groupId>
             <artifactId>aaf-cadi-shiro</artifactId>
             <version>${project.version}</version>
           </dependency>
	</dependencies>
</project>
