<?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">
  <parent>
    <groupId>org.apache.jackrabbit</groupId>
    <artifactId>oak-parent</artifactId>
    <version>1.65-SNAPSHOT</version>
    <relativePath>../oak-parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>oak-shaded-guava</artifactId>
  <packaging>bundle</packaging>

  <properties>
    <shaded.guava.version>33.2.0-jre</shaded.guava.version>
    <exported.guava.version>33.2.0</exported.guava.version>
    <pref>org.apache.jackrabbit.guava</pref>
  </properties>

  <name>Jackrabbit Guava Wrapper</name>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <artifactSet>
                <includes>
                  <include>com.google.guava:guava</include>
                  <include>com.google.guava:failureaccess</include>
                </includes>
              </artifactSet>
              <relocations>
                <relocation>
                  <pattern>com.google</pattern>
                  <shadedPattern>${pref}</shadedPattern>
                </relocation>
              </relocations>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <createSourcesJar>true</createSourcesJar>
            </configuration>
          </execution>
        </executions>
      </plugin>
       <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>dependency-reduced-pom.xml</exclude>
          </excludes>
        </configuration>
      </plugin>
     <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-SymbolicName>org.apache.jackrabbit.guava</Bundle-SymbolicName>
            <!-- Export-Package and Import-Package must be declared explicitly since the maven-bundle-plugin executes before maven-shade-plugin, so the guava classes aren't present at this time.
                 Note that these should match the specifications from the MANIFEST.mf file of the guava jar this jar will be based on. -->
            <Export-Package>
              ${pref}.common.annotations;version="${exported.guava.version}",
              ${pref}.common.base;version="${exported.guava.version}",
              ${pref}.common.cache;version="${exported.guava.version}";uses:="${pref}.common.base,${pref}.common.collect,${pref}.common.util.concurrent",
              ${pref}.common.collect;version="${exported.guava.version}";uses:="${pref}.common.base",
              ${pref}.common.escape;version="${exported.guava.version}";uses:="${pref}.common.base",
              ${pref}.common.eventbus;version="${exported.guava.version}",
              ${pref}.common.graph;version="${exported.guava.version}";uses:="${pref}.common.collect",
              ${pref}.common.hash;version="${exported.guava.version}";uses:="${pref}.common.base",
              ${pref}.common.html;version="${exported.guava.version}";uses:="${pref}.common.escape",
              ${pref}.common.io;version="${exported.guava.version}";uses:="${pref}.common.base,${pref}.common.collect,${pref}.common.graph,${pref}.common.hash",
              ${pref}.common.math;version="${exported.guava.version}",${pref}.common.net;version="${exported.guava.version}";uses:="${pref}.common.base,${pref}.common.collect,${pref}.common.escape",
              ${pref}.common.primitives;version="${exported.guava.version}";uses:="${pref}.common.base",
              ${pref}.common.reflect;version="${exported.guava.version}";uses:="${pref}.common.collect,${pref}.common.io",
              ${pref}.common.util.concurrent;version="${exported.guava.version}";uses:="${pref}.common.base,${pref}.common.collect,${pref}.common.util.concurrent.internal",
              ${pref}.common.xml;version="${exported.guava.version}";uses:="${pref}.common.escape"
            </Export-Package>
            <Import-Package>
              javax.annotation;resolution:=optional;version="[3.0,4)",
              javax.crypto;resolution:=optional,
              javax.crypto.spec;resolution:=optional,
              sun.misc;resolution:=optional
            </Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>${shaded.guava.version}</version>
    </dependency>
    <dependency>
      <groupId>org.jetbrains</groupId>
      <artifactId>annotations</artifactId>
    </dependency>
  </dependencies>
</project>
