/*
 * Licensed to Elasticsearch B.V. under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch B.V. 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.
 */
import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask
import org.elasticsearch.gradle.internal.AbstractDependenciesTask

apply plugin: 'elasticsearch.build'
apply plugin: 'elasticsearch.publish'

java {
  targetCompatibility = JavaVersion.VERSION_1_8
  sourceCompatibility = JavaVersion.VERSION_1_8
}

group = 'org.elasticsearch.client'
base {
  archivesName = 'elasticsearch-rest-client-sniffer'
}

// rest client sniffer is licenses under Apache 2.0
projectLicenses.set(['The Apache Software License, Version 2.0': providers.provider(() -> 'http://www.apache.org/licenses/LICENSE-2.0')])
licenseFile.set(layout.getSettingsDirectory().file('licenses/APACHE-LICENSE-2.0.txt').asFile)

dependencies {
  api project(":client:rest")
  api "org.apache.httpcomponents:httpclient:${versions.httpclient}"
  api "org.apache.httpcomponents:httpcore:${versions.httpcore}"
  api "commons-codec:commons-codec:${versions.commonscodec}"
  api "commons-logging:commons-logging:${versions.commonslogging}"
  api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"

  testImplementation project(":client:test")
  testImplementation "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${versions.randomizedrunner}"
  testImplementation "junit:junit:${versions.junit}"
  testImplementation "org.elasticsearch:mocksocket:${versions.mocksocket}"
}

tasks.named('forbiddenApisMain').configure {
  //client does not depend on server, so only jdk signatures should be checked
  replaceSignatureFiles 'jdk-signatures'
}


tasks.named('forbiddenApisTest').configure {
  //we are using jdk-internal instead of jdk-non-portable to allow for com.sun.net.httpserver.* usage
  modifyBundledSignatures { bundledSignatures ->
    bundledSignatures -= 'jdk-non-portable'
    bundledSignatures += 'jdk-internal'
    bundledSignatures
  }

  //client does not depend on server, so only jdk signatures should be checked
  replaceSignatureFiles 'jdk-signatures'
}

tasks.withType(AbstractDependenciesTask).configureEach {
  mapping from: /http.*/, to: 'httpclient'
  mapping from: /commons-.*/, to: 'commons'
}

// JarHell is part of es server, which we don't want to pull in
// TODO: Not anymore. Now in :libs:core
tasks.named("jarHell").configure { enabled = false }

tasks.named("testTestingConventions").configure {
  baseClass 'org.elasticsearch.client.RestClientTestCase'
}

tasks.named("thirdPartyAudit").configure {
  ignoreMissingClasses(
          //commons-logging optional dependencies
          'org.apache.avalon.framework.logger.Logger',
          'org.apache.log.Hierarchy',
          'org.apache.log.Logger',
          'org.apache.log4j.Level',
          'org.apache.log4j.Logger',
          'org.apache.log4j.Priority',
          //commons-logging provided dependencies
          'javax.servlet.ServletContextEvent',
          'javax.servlet.ServletContextListener'
  )
}

tasks.withType(LicenseHeadersTask.class).configureEach {
  approvedLicenses = ['Apache', 'Generated', 'Vendored']
}
