<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.directory.api</groupId>
    <artifactId>api-ldap-extras-parent</artifactId>
    <version>2.0.0</version>
  </parent>
  
  <artifactId>api-ldap-extras-codec</artifactId>
  <name>Apache Directory LDAP API Extras Codec</name>
  <packaging>bundle</packaging>
  <description>
    Extra LDAP controls and extended operation extentions for the Codec used
    by clients and servers. These controls and extended operations are not 
    standard issue. Some are very ApacheDS specific. Some may be from obscure
    RFC draft specifications. Both ApacheDS and Studio will use these controls
    as well as clients if the codec loads these extensions.
  </description>

  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>api-ldap-codec-core</artifactId>
    </dependency>
    
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>api-ldap-extras-codec-api</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestFile>META-INF/MANIFEST.MF</manifestFile>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <groupId>org.apache.maven.plugins</groupId>
        <configuration>
          <systemPropertyVariables>
            <workingDirectory>${basedir}/target</workingDirectory>
            <felix.cache.rootdir>
              ${project.build.directory}
            </felix.cache.rootdir>
            <felix.cache.locking>
              false
            </felix.cache.locking>
            <org.osgi.framework.storage>
              ${project.build.directory}/osgi-cache
            </org.osgi.framework.storage>
          </systemPropertyVariables>
          <parallel>all</parallel>
          <threadCount>10</threadCount>
          <properties>
            <configurationParameters>
              junit.jupiter.execution.parallel.enabled=true
            </configurationParameters>
          </properties>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <inherited>true</inherited>
        <extensions>true</extensions>
        <configuration>
          <manifestLocation>META-INF</manifestLocation>
          <instructions>
            <Bundle-SymbolicName>${project.groupId}.ldap.extras.codec</Bundle-SymbolicName>
            <Export-Package>
                {local-packages};version=${project.version};-noimport:=true
            </Export-Package>
            <Export-Package>
              org.apache.directory.api.ldap.extras.controls.ad_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.changeNotifications_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.passwordExpired_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.permissiveModify_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.ppolicy_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.syncrepl_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.transaction_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.controls.vlv_impl;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.cancel;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.certGeneration;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.endTransaction;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.pwdModify;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.startTls;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.storedProcedure;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.extended.ads_impl.whoAmI;version=${project.version};-noimport:=true,
              org.apache.directory.api.ldap.extras.intermediate.syncrepl_impl;version=${project.version};-noimport:=true
            </Export-Package>
            <Import-Package>
              org.apache.directory.api.asn1;version=${project.version},
              org.apache.directory.api.asn1.actions;version=${project.version},
              org.apache.directory.api.asn1.ber;version=${project.version},
              org.apache.directory.api.asn1.ber.grammar;version=${project.version},
              org.apache.directory.api.asn1.ber.tlv;version=${project.version},
              org.apache.directory.api.i18n;version=${project.version},
              org.apache.directory.api.ldap.codec;version=${project.version},
              org.apache.directory.api.ldap.codec.api;version=${project.version},
              org.apache.directory.api.ldap.codec.osgi;version=${project.version},
              org.apache.directory.api.ldap.extras.controls;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.ad;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.changeNotifications;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.passwordExpired;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.permissiveModify;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.ppolicy;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.syncrepl.syncDone;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.syncrepl.syncRequest;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.syncrepl.syncState;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.transaction;version=${project.version},
              org.apache.directory.api.ldap.extras.controls.vlv;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.cancel;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.certGeneration;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.endTransaction;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.gracefulDisconnect;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.gracefulShutdown;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.pwdModify;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.startTls;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.startTransaction;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.storedProcedure;version=${project.version},
              org.apache.directory.api.ldap.extras.extended.whoAmI;version=${project.version},
              org.apache.directory.api.ldap.extras.intermediate.syncrepl;version=${project.version},
              org.apache.directory.api.ldap.model.exception;version=${project.version},
              org.apache.directory.api.ldap.model.message;version=${project.version},
              org.apache.directory.api.ldap.model.message.extended;version=${project.version},
              org.apache.directory.api.ldap.model.name;version=${project.version},
              org.apache.directory.api.ldap.model.url;version=${project.version},
              org.apache.directory.api.util;version=${project.version},
              org.slf4j;version=${slf4j.api.bundleversion},
              org.osgi.framework;version="[1.0.0,2.0.0)",
              org.osgi.util.tracker;version="[1.0.0,2.0.0)",
            </Import-Package>
            <Bundle-Activator>
              org.apache.directory.api.ldap.extras.ExtrasBundleActivator
            </Bundle-Activator>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
