<?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.18.7</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>
        </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>
</project>
