<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.catchpoint</groupId>
        <artifactId>cp-trace-parent</artifactId>
        <version>0.0.20</version>
    </parent>

    <groupId>com.catchpoint</groupId>
    <artifactId>cp-trace-lambda-layer</artifactId>
    <name>cp-trace-lambda-layer</name>

    <properties>
        <maven.assembly.plugin.version>3.1.0</maven.assembly.plugin.version>
        <cp.trace.layer.bucket.prefix>cp-tracing-dist</cp.trace.layer.bucket.prefix>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-lambda-core</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-lambda-trace</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-lambda-metric</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-lambda-log</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-lambda-cr</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-jdk-attach</artifactId>
            <version>${project.parent.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-core</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-api-invocation</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-opentracing-v0.32</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-opentelemetry-v1.4</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-jdbc</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-redis</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-redis-redisson</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-redis-jedis</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-redis-lettuce-v4</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-redis-lettuce-v5</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-http-apache-httpclient</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-http-apache-httpclient-v4</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-http-okhttp-v3</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-aws-sdk</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-aws-sdk-v1.11.0</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-aws-sdk-v2.2</artifactId>
            <version>${version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-elasticsearch</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-elasticsearch-v6.4</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-elasticsearch-v7</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-mongodb</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-mongodb-v3.1</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-mongodb-v4</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-kafka</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-hazelcast</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-instrument-integrations-hazelcast-v4.0</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-log-integrations-log4j1</artifactId>
            <version>${project.parent.version}</version>
        </dependency>
        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-log-integrations-log4j2</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

        <dependency>
            <groupId>com.catchpoint</groupId>
            <artifactId>cp-trace-lambda-container-springboot</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <configuration>
                    <shadedArtifactAttached>false</shadedArtifactAttached>
                    <relocations>
                        <relocation>
                            <pattern>org.apache</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.apache</shadedPattern>
                            <excludes>
                                <exclude>org.apache.http.**</exclude>
                            </excludes>
                        </relocation>
                        <relocation>
                            <pattern>org.antlr</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.antlr</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.eclipse</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.eclipse</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.intellij</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.intellij</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.jetbrains</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.jetbrains</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.json</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.json</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.objectweb.asm</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.objectweb.asm</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.pmw.tinylog</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.pmw.tinylog</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.slf4j</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.slf4j</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.yaml.snakeyaml</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.yaml.snakeyaml</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>kotlin</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.kotlin</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>javassist</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.javassist</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>net.bytebuddy</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.net.bytebuddy</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.fasterxml.jackson</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.com.fasterxml.jackson</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.blogspot.mydailyjava</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.com.blogspot.mydailyjava</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.googlecode</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.com.googlecode</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>net.minidev</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.net.minidev</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>org.jd</pattern>
                            <shadedPattern>com.catchpoint.trace.thirdparty.org.jd</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.amazonaws.services.lambda.runtime.serialization</pattern>
                            <shadedPattern>com.catchpoint.trace.lambda.thirdparty.com.amazonaws.services.lambda.runtime.serialization</shadedPattern>
                        </relocation>
                        <!-- Netty is relocated in the modules it is internally used (for ex "cp-trace-debug-core") -->
                    </relocations>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <!-- netty is included in the modules it is internally used (for ex "cp-trace-debug-core") -->
                                <exclude>io/netty/**</exclude>
                                <!-- okio is included in the modules it is internally used (for ex "cp-trace-utils-http") -->
                                <exclude>okio/**</exclude>
                                <!-- okhttp3 is included in the modules it is internally used (for ex "cp-trace-utils-http") -->
                                <exclude>okhttp3/**</exclude>
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>${maven.assembly.plugin.version}</version>
                <executions>
                    <execution>
                        <id>assembly-on-package</id>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/resources/assemblies/assembly.xml</descriptor>
                            </descriptors>
                            <finalName>${project.build.finalName}</finalName>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>release-layer</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.bazaarvoice.maven.plugins</groupId>
                        <artifactId>s3-upload-maven-plugin</artifactId>
                        <version>1.4</version>
                        <configuration>
                            <accessKey>${AWS_ACCESS_KEY_ID}</accessKey>
                            <secretKey>${AWS_SECRET_KEY}</secretKey>
                            <bucketName>${cp.trace.layer.bucket.prefix}</bucketName>
                            <endpoint>s3.us-west-2.amazonaws.com</endpoint>
                            <source>${project.basedir}/target/${project.artifactId}-${project.version}.zip</source>
                            <destination>layers/java/${project.artifactId}-${project.version}.zip</destination>
                        </configuration>
                        <executions>
                            <!-- Tokyo -->
                            <execution>
                                <id>s3-upload-ap-northeast-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.ap-northeast-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-ap-northeast-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Seoul -->
                            <execution>
                                <id>s3-upload-ap-northeast-2</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.ap-northeast-2.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-ap-northeast-2</bucketName>
                                </configuration>
                            </execution>
                            <!-- Mumbai -->
                            <execution>
                                <id>s3-upload-ap-south-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.ap-south-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-ap-south-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Singapore -->
                            <execution>
                                <id>s3-upload-ap-southeast-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.ap-southeast-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-ap-southeast-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Sydney -->
                            <execution>
                                <id>s3-upload-ap-southeast-2</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.ap-southeast-2.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-ap-southeast-2</bucketName>
                                </configuration>
                            </execution>
                            <!-- Central -->
                            <execution>
                                <id>s3-upload-ca-central-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.ca-central-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-ca-central-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Frankfurt -->
                            <execution>
                                <id>s3-upload-eu-central-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.eu-central-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-eu-central-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Stockholm -->
                            <execution>
                                <id>s3-upload-eu-north-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.eu-north-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-eu-north-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Ireland -->
                            <execution>
                                <id>s3-upload-eu-west-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.eu-west-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-eu-west-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- London -->
                            <execution>
                                <id>s3-upload-eu-west-2</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.eu-west-2.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-eu-west-2</bucketName>
                                </configuration>
                            </execution>
                            <!-- Paris -->
                            <execution>
                                <id>s3-upload-eu-west-3</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.eu-west-3.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-eu-west-3</bucketName>
                                </configuration>
                            </execution>
                            <!-- Sao Paulo -->
                            <execution>
                                <id>s3-upload-sa-east-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.sa-east-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-sa-east-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- N. Virginia -->
                            <execution>
                                <id>s3-upload-us-east-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.us-east-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-us-east-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Ohio -->
                            <execution>
                                <id>s3-upload-us-east-2</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.us-east-2.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-us-east-2</bucketName>
                                </configuration>
                            </execution>
                            <!-- N. California -->
                            <execution>
                                <id>s3-upload-us-west-1</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.us-west-1.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-us-west-1</bucketName>
                                </configuration>
                            </execution>
                            <!-- Oregon -->
                            <execution>
                                <id>s3-upload-us-west-2</id>
                                <goals>
                                    <goal>s3-upload</goal>
                                </goals>
                                <phase>install</phase>
                                <configuration>
                                    <endpoint>s3.us-west-2.amazonaws.com</endpoint>
                                    <bucketName>${cp.trace.layer.bucket.prefix}-us-west-2</bucketName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
