// Copyright 2017 Google Inc.
//
//  Licensed 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.
// [START gradle]
buildscript {      // Configuration for building
  repositories {
    jcenter()      // Bintray's repository - a fast Maven Central mirror & more
    mavenCentral()
  }
  dependencies {
    classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.5.0'
    classpath 'org.akhikhl.gretty:gretty:+'
  }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'  // To get webappcopy
apply plugin: 'com.google.cloud.tools.appengine'

group = 'com.example.google.cloud.bigtable'
version = '0.1-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8

tasks.withType(JavaCompile) {
	options.encoding = 'UTF-8'
}

repositories {
  maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
  jcenter()
  mavenCentral()
}

dependencies {
    compile group: 'com.google.cloud.bigtable', name: 'bigtable-hbase-1.2', version:'1.0.0-pre3'
    compile group: 'org.apache.hbase', name: 'hbase-client', version:'2.5.6'
    compile group: 'io.netty', name: 'netty-tcnative-boringssl-static', version:'2.0.62.Final'
    compile group: 'jstl', name: 'jstl', version:'1.2'

    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version:'3.1.0'

    testCompile group: 'com.google.truth', name: 'truth', version:'1.1.5'
    testCompile group: 'junit', name: 'junit', version:'4.13.2'
    testCompile group: 'org.mockito', name: 'mockito-core', version:'4.11.0'
}

import org.apache.tools.ant.filters.ReplaceTokens
gretty {
    contextPath = '/'
    servletContainer = 'jetty9'

    jvmArgs = [ '-DBIGTABLE_PROJECT=' + System.getProperty("bigtable.projectID"),
          '-DBIGTABLE_INSTANCE=' + System.getProperty("bigtable.instanceID")]

    webappCopy {
    // Enable filtering on all xml files in WEB-INF
    filesMatching "**/WEB-INF/*.xml", { FileCopyDetails fileDetails ->
      logger.lifecycle 'File filtered: {}', fileDetails.path
      filter (ReplaceTokens, tokens: [
        'bigtable.projectID' : System.getProperty("bigtable.projectID"),
        'bigtable.instanceID': System.getProperty("bigtable.instanceID")
      ])
    }
  }
}

// Always run unit tests
appengineDeploy.dependsOn test

// [START model]
appengine {
    run {

    }
  deploy {   // deploy configuration
    stopPreviousVersion = true  // default - stop the current version
    promote = true              // default - & make this the current version
  }
}

test {
  useJUnit()
  testLogging.showStandardStreams = true

  systemProperty 'BIGTABLE_PROJECT', System.getProperty("bigtable.projectID")
  systemProperty 'BIGTABLE_INSTANCE',System.getProperty("bigtable.instanceID")

  beforeTest { descriptor ->
     logger.lifecycle("test: " + descriptor + "  Running")
  }

  onOutput { descriptor, event ->
     logger.lifecycle("test: " + descriptor + ": " + event.message )
  }
  afterTest { descriptor, result ->
    logger.lifecycle("test: " + descriptor + ": " + result )
  }
}
// [END model]
// [END gradle]
