<?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.
   ====================================================================

   This software consists of voluntary contributions made by many
   individuals on behalf of the Apache Software Foundation.  For more
   information on the Apache Software Foundation, please see
   <http://www.apache.org />.
 --><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.httpcomponents</groupId>
    <artifactId>httpcomponents-asyncclient</artifactId>
    <version>4.2-alpha1-SNAPSHOT</version>
  </parent>
  <artifactId>httpasyncclient-osgi</artifactId>
  <name>Apache HttpAsyncClient OSGi bundle</name>
  <description>
   Apache HttpComponents AsyncClient (OSGi bundle)
  </description>
  <url>http://hc.apache.org/httpcomponents-asyncclient</url>
  <packaging>bundle</packaging>

  <properties>
    <httpcore.osgi.import.version>"[4.4.0, 4.5.0)"</httpcore.osgi.import.version>
    <httpclient.osgi.import.version>"[4.4.0, 4.5.0)"</httpclient.osgi.import.version>
    <commons-logging.osgi.import.version>"[1.1.0, 1.3.0)"</commons-logging.osgi.import.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpasyncclient</artifactId>
      <version>${project.version}</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Name>Apache ${project.name}</Bundle-Name>
            <Bundle-SymbolicName>${project.groupId}.httpasyncclient</Bundle-SymbolicName>
            <_exportcontents>
            org.apache.http.nio.client.*;version=${project.version},
            org.apache.http.nio.conn.*;version=${project.version},
            org.apache.http.impl.nio.client.*;version=${project.version},
            org.apache.http.impl.nio.conn.*;version=${project.version}
            </_exportcontents>
            <Embed-Dependency>*;scope=compile|runtime;inline=true</Embed-Dependency>
            <Import-Package>
            javax.crypto,
            javax.crypto.spec,
            javax.net.ssl,
            javax.security.auth.x500,
            org.ietf.jgss,
            org.apache.commons.logging;version=${commons-logging.osgi.import.version},
            org.apache.http;version=${httpcore.osgi.import.version},
            org.apache.http.entity;version=${httpcore.osgi.import.version},
            org.apache.http.concurrent;version=${httpcore.osgi.import.version},
            org.apache.http.config;version=${httpcore.osgi.import.version},
            org.apache.http.io;version=${httpcore.osgi.import.version},
            org.apache.http.message;version=${httpcore.osgi.import.version},
            org.apache.http.params;version=${httpcore.osgi.import.version},
            org.apache.http.pool;version=${httpcore.osgi.import.version},
            org.apache.http.protocol;version=${httpcore.osgi.import.version},
            org.apache.http.util;version=${httpcore.osgi.import.version},
            org.apache.http.impl;version=${httpcore.osgi.import.version},
            org.apache.http.nio;version=${httpcore.osgi.import.version},
            org.apache.http.nio.entity;version=${httpcore.osgi.import.version},
            org.apache.http.nio.params;version=${httpcore.osgi.import.version},
            org.apache.http.nio.pool;version=${httpcore.osgi.import.version},
            org.apache.http.nio.protocol;version=${httpcore.osgi.import.version},
            org.apache.http.nio.reactor;version=${httpcore.osgi.import.version},
            org.apache.http.nio.reactor.ssl;version=${httpcore.osgi.import.version},
            org.apache.http.nio.util;version=${httpcore.osgi.import.version},
            org.apache.http.impl.nio.codecs;version=${httpcore.osgi.import.version},
            org.apache.http.impl.nio;version=${httpcore.osgi.import.version},
            org.apache.http.impl.nio.reactor;version=${httpcore.osgi.import.version},
            org.apache.http.auth;version=${httpclient.osgi.import.version},
            org.apache.http.cookie;version=${httpclient.osgi.import.version},
            org.apache.http.conn;version=${httpclient.osgi.import.version},
            org.apache.http.conn.params;version=${httpclient.osgi.import.version},
            org.apache.http.conn.routing;version=${httpclient.osgi.import.version},
            org.apache.http.conn.ssl;version=${httpclient.osgi.import.version},
            org.apache.http.conn.util;version=${httpclient.osgi.import.version},
            org.apache.http.client;version=${httpclient.osgi.import.version},
            org.apache.http.client.config;version=${httpcore.osgi.import.version},
            org.apache.http.client.methods;version=${httpclient.osgi.import.version},
            org.apache.http.client.params;version=${httpclient.osgi.import.version},
            org.apache.http.client.protocol;version=${httpclient.osgi.import.version},
            org.apache.http.client.utils;version=${httpclient.osgi.import.version},
            org.apache.http.impl.auth;version=${httpclient.osgi.import.version},
            org.apache.http.impl.cookie;version=${httpclient.osgi.import.version},
            org.apache.http.impl.conn;version=${httpclient.osgi.import.version},
            org.apache.http.impl.client;version=${httpclient.osgi.import.version},
            org.apache.http.impl.execchain;version=${httpclient.osgi.import.version},
            org.apache.http.ssl;version=${httpcore.osgi.import.version},
            *
            </Import-Package>
            <Include-Resource />
            <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd -->
            <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME</_removeheaders>
          </instructions>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>${hc.rat.version}</version>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <exclude>.externalToolBuilders/**</exclude>			
            <exclude>.pmd</exclude>
            <exclude>maven-eclipse.xml</exclude>
          </excludes>
        </configuration>
      </plugin>	
    </plugins>
    <finalName>org.apache.httpcomponents.httpasyncclient_${project.version}</finalName>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <version>${hc.clirr.version}</version>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>${hc.project-info.version}</version>
        <inherited>false</inherited>
        <reportSets>
          <reportSet>
            <reports>
              <report>dependencies</report>
              <report>dependency-info</report>
              <report>summary</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

    </plugins>
  </reporting>

</project>
