<?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>4.0.0-M1</version>
    </parent>

    <artifactId>camel-zendesk</artifactId>
    <packaging>jar</packaging>
    <name>Camel :: Zendesk</name>
    <description>Camel Zendesk Component</description>

    <properties>
        <schemeName>zendesk</schemeName>
        <componentName>Zendesk</componentName>
        <componentPackage>org.apache.camel.component.zendesk</componentPackage>
        <outPackage>org.apache.camel.component.zendesk.internal</outPackage>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-support</artifactId>
        </dependency>
        <dependency>
            <groupId>com.cloudbees.thirdparty</groupId>
            <artifactId>zendesk-java-client</artifactId>
        </dependency>

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

    <build>
        <defaultGoal>install</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-api-component-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-test-component-classes</id>
                        <goals>
                            <goal>fromApis</goal>
                        </goals>
                        <configuration>
                            <apis>
                                <api>
                                    <apiName />
                                    <proxyClass>org.zendesk.client.v2.Zendesk</proxyClass>
                                    <fromJavasource>
                                        <excludeMethods>isClosed|close|getTicketsByStatus|createGroups|importTickets|recoverSuspendedTickets|createMapper|getSearchResults
                                        </excludeMethods>
                                    </fromJavasource>
                                    <substitutions>
                                        <substitution>
                                            <method>deleteSuspendedTicket|checkHasId</method>
                                            <argType>SuspendedTicket</argType>
                                            <argName>ticket</argName>
                                            <replacement>suspendedTicket</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>deleteAutomation</method>
                                            <argType>long</argType>
                                            <argName>automationId</argName>
                                            <replacement>automationId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>createUsers|createUsersAsync</method>
                                            <argType>java.util.List</argType>
                                            <argName>users</argName>
                                            <replacement>userList</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>getTicketAudits</method>
                                            <argType>java.lang.Long</argType>
                                            <argName>id</argName>
                                            <replacement>ticketId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>updateMacro</method>
                                            <argType>java.lang.Long</argType>
                                            <argName>macroId</argName>
                                            <replacement>macroId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>deleteArticleAttachment</method>
                                            <argType>ArticleAttachments</argType>
                                            <argName>attachment</argName>
                                            <replacement>articleAttachments</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>createTickets|createTicketsAsync|updateTickets|updateTicketsAsync</method>
                                            <argType>java.util.List</argType>
                                            <argName>tickets</argName>
                                            <replacement>ticketList</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>updateInstallation</method>
                                            <argType>int</argType>
                                            <argName>id</argName>
                                            <replacement>installationId</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>getUserSubscriptions</method>
                                            <argType>java.lang.Long</argType>
                                            <argName>userId</argName>
                                            <replacement>userId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>createOrganizations|createOrganizationsAsync|updateOrganizations|updateOrganizationsAsync</method>
                                            <argType>java.util.List</argType>
                                            <argName>organizations</argName>
                                            <replacement>organizationList</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>createOrganizationMemberships|createOrganizationMembershipsAsync</method>
                                            <argType>java.util.List</argType>
                                            <argName>organizationMemberships</argName>
                                            <replacement>organizationMembershipList</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>createUsers|createUsersAsync|createOrUpdateUsers|createOrUpdateUsersAsync|updateUsers|updateUsersAsync</method>
                                            <argType>java.util.List</argType>
                                            <argName>users</argName>
                                            <replacement>usersList</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>updateTrigger</method>
                                            <argType>java.lang.Long</argType>
                                            <argName>triggerId</argName>
                                            <replacement>triggerId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>createUploadArticle</method>
                                            <argType>long</argType>
                                            <argName>articleId</argName>
                                            <replacement>articleId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>getAttachmentsFromArticle</method>
                                            <argType>java.lang.Long</argType>
                                            <argName>articleID</argName>
                                            <replacement>articleId</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>getSearchResults</method>
                                            <argType>java.lang.String</argType>
                                            <argName>params</argName>
                                            <replacement>parameters</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>getUsersByExternalIds</method>
                                            <argType>long</argType>
                                            <argName>externalId</argName>
                                            <replacement>externalId0</replacement>
                                        </substitution>
                                        <substitution>
                                            <method>getTriggers</method>
                                            <argType>java.lang.String</argType>
                                            <argName>categoryId</argName>
                                            <replacement>categoryId0</replacement>
                                        </substitution>
                                    </substitutions>
                                </api>
                            </apis>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.cloudbees.thirdparty</groupId>
                        <artifactId>zendesk-java-client</artifactId>
                        <version>${zendesk-client-version}</version>
                        <classifier>sources</classifier>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.camel</groupId>
                    <artifactId>camel-api-component-maven-plugin</artifactId>
                    <version>${project.version}</version>
                    <configuration>
                        <scheme>${schemeName}</scheme>
                        <componentName>${componentName}</componentName>
                        <componentPackage>${componentPackage}</componentPackage>
                        <outPackage>${outPackage}</outPackage>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
