<?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.camel</groupId>
        <artifactId>components</artifactId>
        <version>3.7.5</version>
    </parent>

    <artifactId>camel-braintree</artifactId>
    <packaging>jar</packaging>
    <name>Camel :: Braintree</name>
    <description>Camel Braintree support</description>

    <properties>
        <schemeName>braintree</schemeName>
        <componentName>Braintree</componentName>
        <componentPackage>org.apache.camel.component.braintree</componentPackage>
        <outPackage>org.apache.camel.component.braintree.internal</outPackage>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <camel.osgi.private.pkg>${outPackage}</camel.osgi.private.pkg>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-support</artifactId>
        </dependency>
        <dependency>
            <groupId>com.braintreepayments.gateway</groupId>
            <artifactId>braintree-java</artifactId>
            <version>${braintree-gateway-version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.json</groupId>
                    <artifactId>json</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>

        <!-- testing - logging -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- testing -->
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-test-junit5</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <defaultGoal>install</defaultGoal>

        <plugins>
            <!-- generate Component source and test source -->
            <plugin>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-api-component-maven-plugin</artifactId>
                <version>${project.version}</version>
                <executions>
                    <execution>
                        <id>generate-test-component-classes</id>
                        <goals>
                            <goal>fromApis</goal>
                        </goals>
                        <configuration>
                            <apis>
                                <api>
                                    <apiName>addOn</apiName>
                                    <proxyClass>com.braintreegateway.AddOnGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>address</apiName>
                                    <proxyClass>com.braintreegateway.AddressGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>clientToken</apiName>
                                    <proxyClass>com.braintreegateway.ClientTokenGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>creditCardVerification</apiName>
                                    <apiDescription>To verify credit card information</apiDescription>
                                    <proxyClass>com.braintreegateway.CreditCardVerificationGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>customer</apiName>
                                    <proxyClass>com.braintreegateway.CustomerGateway</proxyClass>
                                    <fromJavasource>
                                        <excludeMethods>.*ransparent.*</excludeMethods>
                                    </fromJavasource>
                                </api>
                                <api>
                                    <apiName>discount</apiName>
                                    <proxyClass>com.braintreegateway.DiscountGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>dispute</apiName>
                                    <proxyClass>com.braintreegateway.DisputeGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>documentUpload</apiName>
                                    <apiDescription>API to upload evidence documents</apiDescription>
                                    <proxyClass>com.braintreegateway.DocumentUploadGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>merchantAccount</apiName>
                                    <apiDescription>Provides methods to create, find, and update MerchantAccount objects</apiDescription>
                                    <proxyClass>com.braintreegateway.MerchantAccountGateway</proxyClass>
                                    <fromJavasource />
                                    <substitutions>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.MerchantAccountRequest</argType>
                                            <replacement>request</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.MerchantAccountCreateForCurrencyRequest
                                            </argType>
                                            <replacement>currencyRequest</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                    </substitutions>
                                </api>
                                <api>
                                    <apiName>paymentMethod</apiName>
                                    <apiDescription>Provides methods to interact with payments</apiDescription>
                                    <proxyClass>com.braintreegateway.PaymentMethodGateway</proxyClass>
                                    <fromJavasource>
                                        <excludeMethods>.*parse.*</excludeMethods>
                                    </fromJavasource>
                                    <substitutions>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.PaymentMethodRequest</argType>
                                            <replacement>request</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.PaymentMethodDeleteRequest</argType>
                                            <replacement>deleteRequest</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                    </substitutions>
                                </api>
                                <api>
                                    <apiName>paymentMethodNonce</apiName>
                                    <apiDescription>Provides methods to interact with nonce payments</apiDescription>
                                    <proxyClass>com.braintreegateway.PaymentMethodNonceGateway</proxyClass>
                                    <fromJavasource>
                                        <excludeMethods>.*parse.*</excludeMethods>
                                    </fromJavasource>
                                </api>
                                <api>
                                    <apiName>plan</apiName>
                                    <proxyClass>com.braintreegateway.PlanGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>report</apiName>
                                    <proxyClass>com.braintreegateway.ReportGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>settlementBatchSummary</apiName>
                                    <apiDescription>Provides methods to interact wit settlement summaries</apiDescription>
                                    <proxyClass>com.braintreegateway.SettlementBatchSummaryGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>subscription</apiName>
                                    <proxyClass>com.braintreegateway.SubscriptionGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                                <api>
                                    <apiName>transaction</apiName>
                                    <proxyClass>com.braintreegateway.TransactionGateway</proxyClass>
                                    <fromJavasource>
                                        <excludeMethods>.*TrData.*|.*ransparent.*</excludeMethods>
                                    </fromJavasource>
                                    <substitutions>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.TransactionRequest</argType>
                                            <replacement>request</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.TransactionRefundRequest</argType>
                                            <replacement>refundRequest</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                        <substitution>
                                            <method>^.+$</method>
                                            <argName>^.+$</argName>
                                            <argType>com.braintreegateway.TransactionCloneRequest</argType>
                                            <replacement>cloneRequest</replacement>
                                            <replaceWithType>false</replaceWithType>
                                        </substitution>
                                    </substitutions>
                                </api>
                                <api>
                                    <apiName>webhookNotification</apiName>
                                    <apiDescription>To retrieve notifications via webhooks</apiDescription>
                                    <proxyClass>com.braintreegateway.WebhookNotificationGateway</proxyClass>
                                    <fromJavasource />
                                </api>
                            </apis>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <!-- Component API to read API signatures -->
                    <dependency>
                        <groupId>com.braintreepayments.gateway</groupId>
                        <artifactId>braintree-java</artifactId>
                        <version>${braintree-gateway-version}</version>
                        <classifier>sources</classifier>
                        <exclusions>
                            <exclusion>
                                <groupId>org.json</groupId>
                                <artifactId>json</artifactId>
                            </exclusion>
                        </exclusions>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <!-- we need to generate additional configurer classes -->
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-package-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-configurer</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>generate-configurer</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.camel</groupId>
                    <artifactId>camel-api-component-maven-plugin</artifactId>
                    <configuration>
                        <scheme>${schemeName}</scheme>
                        <componentName>${componentName}</componentName>
                        <componentPackage>${componentPackage}</componentPackage>
                        <outPackage>${outPackage}</outPackage>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

    </build>

    <profiles>
        <profile>
            <id>braintree-test</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <systemPropertyVariables>
                                <braintreeAuthenticationType>PUBLIC_PRIVATE_KEYS</braintreeAuthenticationType>
                            </systemPropertyVariables>
                            <childDelegation>false</childDelegation>
                            <useFile>true</useFile>
                            <forkCount>1</forkCount>
                            <reuseForks>true</reuseForks>
                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
                            <includes>
                                <include>**/*Test.java</include>
                            </includes>
                            <excludes>
                                <exclude>**/*XXXTest.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>braintree-access-token-test</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <systemPropertyVariables>
                                <braintreeAuthenticationType>ACCESS_TOKEN</braintreeAuthenticationType>
                            </systemPropertyVariables>
                            <childDelegation>false</childDelegation>
                            <useFile>true</useFile>
                            <forkCount>1</forkCount>
                            <reuseForks>true</reuseForks>
                            <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
                            <includes>
                                <include>**/*Test.java</include>
                            </includes>
                            <excludes>
                                <exclude>**/*XXXTest.java</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
