diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 262bba7..0000000 --- a/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -.hg -.gradle -build -target -out -.idea -*.iml -*.ipr -*.iws -*.log* -.DS_Store -Thumbs.db -/public/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 4e15160..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,52 +0,0 @@ -image: openjdk:8u171-jdk-stretch -#services: -#- docker:dind - -variables: - TERM: dumb - DOCKER_DRIVER: overlay2 - -cache: - key: ${CI_BUILD_REF_NAME} - untracked: true - paths: - - ${HOME}/.m2 - - ${HOME}/.gradle - -ci-job: - before_script: - - pwd - - whoami - - ls -lah . - - uname -a - - which bash - - which apt-get - - which apt || true - - apt-get update -y >/dev/null || true - - apt-get install -y --no-install-recommends curl jq bash sudo lsof >/dev/null - - source <(curl -s https://raw.githubusercontent.com/daggerok/bash-functions/master/main.bash) - - stop_any 80 8080 - - script: - - echo "uncomment what's needed." - - #./gradlew -S >/dev/null - - #bash build/libs/*.jar & - - #wait_for 8080 - - #curl -s 127.0.0.1:8080 - - #curl -s 127.0.0.1:8080/api/ | jq . - - #stop_any 80 8080 - # - - #./mvnw >/dev/hull - - #bash target/*.jar & - - #wait_for 8080 - - #curl http://127.0.0.1:8080 - - #curl -sH'content-type:application/json' http://127.0.0.1:8080/api/ | jq . - - #stop_any 80 8080 - -pages: - script: - - ./gradlew documentation >/dev/null - - artifacts: - paths: - - public diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 121d275..0000000 --- a/.hgignore +++ /dev/null @@ -1,16 +0,0 @@ -syntax: glob -^.gradle/* -.gradle -^.git/* -.git -*/build/* -*/target/* -.DS_Store -Thumbs.db -*/out/* -^.idea/* -.idea -*.iml -*.ipr -*.iws -*.log* diff --git a/.mvn/Dockerfile b/.mvn/Dockerfile deleted file mode 100644 index d90b16d..0000000 --- a/.mvn/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM openjdk:8u151-jre-alpine3.7 -MAINTAINER Maksim Kostromin https://github.com/daggerok -RUN apk --no-cache --update add busybox-suid bash curl unzip sudo openssh-client shadow wget \ - && adduser -h /home/appuser -s /bin/bash -D -u 1025 appuser wheel \ - && echo 'appuser ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \ - && sed -i 's/.*requiretty$/Defaults !requiretty/' /etc/sudoers \ - && wget --no-cookies \ - --no-check-certificate \ - --header 'Cookie: oraclelicense=accept-securebackup-cookie' \ - 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip' \ - -O /tmp/jce_policy-8.zip \ - && unzip -o /tmp/jce_policy-8.zip -d /tmp \ - && mv -f ${JAVA_HOME}/lib/security ${JAVA_HOME}/lib/backup-security \ - && mv -f /tmp/UnlimitedJCEPolicyJDK8 ${JAVA_HOME}/lib/security \ - && apk del busybox-suid unzip openssh-client shadow wget \ - && rm -rf /var/cache/apk/* /tmp/* -USER appuser -WORKDIR /home/appuser -VOLUME /home/appuser -ARG JAVA_OPTS_ARGS='\ - -Djavax.net.debug=ssl \ - -Djava.net.preferIPv4Stack=true \ - -XX:+UnlockExperimentalVMOptions \ - -XX:+UseCGroupMemoryLimitForHeap \ - -XshowSettings:vm ' -ENV JAVA_OPTS="${JAVA_OPTS} ${JAVA_OPTS_ARGS}" -ENTRYPOINT java ${JAVA_OPTS} -jar ./app.jar -CMD /bin/bash -#EXPOSE 8080 -#HEALTHCHECK --timeout=1s \ -# --retries=66 \ -# CMD curl -f http://127.0.0.1:8080/actuator/health || exit 1 -COPY --chown=appuser ./target/*-all.jar ./app.jar diff --git a/.mvn/redeploy.sh b/.mvn/redeploy.sh deleted file mode 100644 index f4bede8..0000000 --- a/.mvn/redeploy.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# bash mvnw clean war:war -DskipTests; bash .mvn/redeploy.sh -container=java-examples_maven-java-examples-app_1 -docker cp ./target/*.war ${container}:/home/jboss-eap-7.1/jboss-eap-7.1/standalone/deployments/app.war - diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar deleted file mode 100755 index 41c70a7..0000000 Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties deleted file mode 100755 index c9023ed..0000000 --- a/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1 +0,0 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a452595..0000000 --- a/.travis.yml +++ /dev/null @@ -1,76 +0,0 @@ -service: -- docker -env: - global: - - TERM=dumb - - secure: WPou9qMnFvvUsWHnwg21Q6GvWPl05rnnTiZzOZS7a4WH/D6xqdhAJS3mLXRrJiz1YMAaPtMPUjdWut4oMKPdZDLmxz6+GLE48K/kvx5XaiPIl7/oAOi8FgcWL2yGOM01sv0vNQln6c3pOuxdJFpc+wPzqgPplubVXjhfrY03E0GKGi4YQRMR2ldWSVG3B9RmcQZ5+UAbnwqz2FFYeKctcKHhg7WOAQpdUIuSGo02ht5LCzmO62gDfUwHcdckFGPJMTGYdk8/7bamxzAevJQlsxydhNZ2fn+HUVr8ZAUVOZArKnjjIKkMxnfsT+kRUS3v0zkxqDa0PjkCwhaIMOOjDVYunZrLlO35q22DPR0XrnCGe0aw2Zk0lTXcnqJs3CuAiELAARFu/sahp+Yw3phKqnlwJON2Awsv2k8zBGgLbaSXSjpeC6qLxJdrzt7YxCBBmZO3LoXR0o/B96yirYlTr3uHFX27fx4qvoKWMfRGr1AOO7p/nFhReAz/wnwSdLNGscNsaLJjQt2FHHgiMcDgv2gtVX0gszp8AatdeL+InqncB5K8kkGzNcSRnGO9XZqDDsKfsMUiGxUkmPEyEzf/qWYpLGt7QyZBzdArhIu0rBl73pwLhug1BYrsVBcNUZ6KiofDBY3QxlhczdLoU0voVwlgw+Pz7iUjUooQ+PZ2Bgg= -language: java -jdk: -- openjdk8 -- openjdk11 -python: 3.8 -addons: - apt: - update: true - packages: - - jq - - sudo - - lsof - - bash - - curl - - unzip - - httpie - - docker-ce - - docker-compose -install: true -before_script: -- source <(curl -s https://raw.githubusercontent.com/daggerok/bash-functions/master/main.bash) -jobs: - includes: - - stage: test - name: tests - script: - - bash gradlew >/dev/null - - java -jar ./build/libs/*-all.jar - # - - bash gradlew clean installDist >/dev/null - - bash ./build/install/java-examples/bin/java-examples - # - - bash gradlew clean distZip >/dev/null - - unzip -o ./build/distributions/java-examples-0.0.1.zip -d /tmp - - bash /tmp/java-examples-0.0.1/bin/java-examples - # - - bash gradlew clean composeUp - - bash gradlew composeDown - # - - bash mvnw clean package >/dev/null - - java -jar target/*-all.jar - # - - bash mvnw com.dkanejs.maven.plugins:docker-compose-maven-plugin:1.0.1:up -P docker - - bash mvnw com.dkanejs.maven.plugins:docker-compose-maven-plugin:1.0.1:down -P docker - - stage: deploy - name: GitHub pages - before_deploy: - - ./mvnw -Pdocs - deploy: - provider: pages - skip-cleanup: true - keep-history: true - target_branch: gh-pages - github-token: "$GITHUB_TOKEN" - # travis encrypt GITHUB_TOKEN=.. - local-dir: target/generated-docs - on: - branch: master -before_cache: -- | - for item in $(find ~/.gradle -name "*.lock") ; do - sudo rm -rf $item ; - done -- ./gradlew --stop -cache: - packages: true - directories: - - ~/.m2 - - ~/.gradle - - ~/.docker diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 00aad36..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Maksim Kostromin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.adoc b/README.adoc deleted file mode 100644 index ceffee3..0000000 --- a/README.adoc +++ /dev/null @@ -1,24 +0,0 @@ -= java-examples image:https://travis-ci.org/daggerok/java-examples.svg?branch=master["Build Status", link="https://travis-ci.org/daggerok/java-examples"] - -//// -image:https://gitlab.com/daggerok/java-examples/badges/master/build.svg["Build Status", link="https://gitlab.com/daggerok/java-examples/-/jobs"] -image:https://img.shields.io/bitbucket/pipelines/daggerok/java-examples.svg["Build Status", link="https://bitbucket.com/daggerok/java-examples"] -//// - -//tag::content[] -in progress... - -Read link:https://daggerok.github.io/java-examples[project reference documentation] - -Initially generated by using link:https://github.com/daggerok/generator-jvm/[generator-jvm] yeoman generator (java) - -//end::content[] - -== other repositories - -- link:https://github.com/daggerok/java-11-http-client[java-11-http-client] -- link:https://github.com/daggerok/java-14[java-14] -- link:https://github.com/daggerok/lazy-java[lazy-java] -- link:https://github.com/daggerok/java-examples[java-examples] -- link:https://github.com/daggerok/learn-jvm[learn-jvm] -- link:https://github.com/daggerok/fold-java[fold-java] diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml deleted file mode 100644 index 71c38fc..0000000 --- a/bitbucket-pipelines.yml +++ /dev/null @@ -1,19 +0,0 @@ -# This is a sample build configuration for Docker. -# Check our guides at https://confluence.atlassian.com/x/O1toN for more examples. -# Only use spaces to indent your .yml configuration. -# ----- -# You can specify a custom docker image from Docker Hub as your build environment. -image: openjdk:8u171-jdk-stretch - -pipelines: - default: - - step: - services: - - docker - script: - - #export IMAGE_NAME=daggerok/java-examples:$BITBUCKET_COMMIT - - #docker build -t $IMAGE_NAME . - - #docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - - #docker push $IMAGE_NAME - - #./gradlew -Si - - #./mvnw diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 4dd3197..0000000 --- a/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -buildscript { - ext { - javaVersion = JavaVersion.VERSION_1_8 - lombokVersion = '1.18.2' // java 10 - //lombokVersion = '1.16.20' // java 8 - logbackVersion = '1.2.3' - slf4jVersion = '1.7.25' - vavrVersion = '0.9.2' - - phantomjsDriverVersion = '1.4.4' - seleniumDriverVersion = '3.12.0' - junitPlatformVersion = '1.2.0' - junitJupiterVersion = '5.2.0' - selenideVersion = '4.11.4' - assertjVersion = '3.10.0' - jgivenVersion = '0.15.3' - hamcrestVersion = '1.3' - junit4Version = '4.12' - - allureVersion = '2.6.0' - - asciidoctorjPdfVersion = '1.5.0-alpha.15' - } - - dependencies { - classpath "org.asciidoctor:asciidoctorj-pdf:$asciidoctorjPdfVersion" - } - - //// spring-boot versions overriding, be careful with it! - // In our case we are fixing PhantomJS (replacing older spring-boot version): - ext['selenium.version'] = "$seleniumDriverVersion" -} - -plugins { - id 'org.asciidoctor.convert' version '1.5.7' apply false - id 'org.ajoberstar.git-publish' version '0.3.0' apply false - id 'io.spring.dependency-management' version '1.0.5.RELEASE' apply false - id 'com.avast.gradle.docker-compose' version '0.6.13' apply false - id 'com.github.johnrengelman.shadow' version '2.0.2' apply false - id 'io.franzbecker.gradle-lombok' version '1.14' apply false - id 'cn.bestwu.propdeps-eclipse' version '0.0.10' apply false - id 'cn.bestwu.propdeps-maven' version '0.0.10' apply false - id 'cn.bestwu.propdeps-idea' version '0.0.10' apply false - id 'cn.bestwu.propdeps' version '0.0.10' apply false - id 'io.qameta.allure' version '2.5' apply false -} - -/* -wrapper { - gradleVersion = '4.9' - distributionType = 'BIN' -} -*/ - -apply from: "$projectDir/gradle/ide.gradle" -apply from: "$projectDir/gradle/clean.gradle" -apply from: "$projectDir/gradle/repositories.gradle" -apply from: "$projectDir/gradle/java.gradle" -apply from: "$projectDir/gradle/main.gradle" -apply from: "$projectDir/gradle/junit.gradle" -apply from: "$projectDir/gradle/publish.gradle" -apply from: "$projectDir/gradle/findbugs.gradle" -//apply from: "$projectDir/gradle/jacoco.gradle" -//apply from: "$projectDir/gradle/allure.gradle" -//apply from: "$projectDir/gradle/selenide.gradle" -apply from: "$projectDir/gradle/docker-compose.gradle" -apply from: "$projectDir/gradle/docs.gradle" diff --git a/docker-compose-gradle.yaml b/docker-compose-gradle.yaml deleted file mode 100644 index a1045ea..0000000 --- a/docker-compose-gradle.yaml +++ /dev/null @@ -1,20 +0,0 @@ -version: "2.1" - -services: - - gradle-java-examples-app: - build: - context: . - dockerfile: gradle/Dockerfile - volumes: ["gradle-java-examples-app-data:/home/appuser"] - networks: [backing-services] - #ports: ["8080:8080"] - #restart: unless-stopped - #mem_limit: 209715200 # container limit: 200Mb (200 * 1024 * 1024) - -volumes: - gradle-java-examples-app-data: {} - -networks: - backing-services: - driver: bridge diff --git a/docker-compose-maven.yaml b/docker-compose-maven.yaml deleted file mode 100644 index dbff6df..0000000 --- a/docker-compose-maven.yaml +++ /dev/null @@ -1,20 +0,0 @@ -version: "2.1" - -services: - - maven-java-examples-app: - build: - context: . - dockerfile: .mvn/Dockerfile - volumes: ["maven-java-examples-app-data:/home/appuser"] - networks: [backing-services] - #ports: ["8080:8080"] - #restart: unless-stopped - #mem_limit: 209715200 # container limit: 200Mb (200 * 1024 * 1024) - -volumes: - maven-java-examples-app-data: {} - -networks: - backing-services: - driver: bridge diff --git a/docs/docinfo.html b/docs/docinfo.html deleted file mode 100644 index 82c7c6a..0000000 --- a/docs/docinfo.html +++ /dev/null @@ -1,29 +0,0 @@ -<style> - #content { - max-width: 98%; - } - .positioned-image { - position: absolute; - top: 0; - right: 0; - border: 0; - } -</style> - -<meta name="keywords" - content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples"> -<meta name="description" - content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples"> - -<!-- highlight.js highlighter --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css"> - -<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"> -<div> - <!--<a href="https://gitlab.com/daggerok/java-examples">--> - <a href="https://github.com/daggerok/java-examples"> - <img class="positioned-image" - src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" - alt="Don't fork me!"> - </a> -</div> diff --git a/docs/footer-docinfo.html b/docs/footer-docinfo.html deleted file mode 100644 index ff77690..0000000 --- a/docs/footer-docinfo.html +++ /dev/null @@ -1,24 +0,0 @@ - -<!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> -<!-- highlight.js highlighter --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/dos.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/bash.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/java.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/scala.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/kotlin.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/json.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/javascript.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/typescript.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/markdown.min.js"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/yaml.min.js"></script> -<!-- add other npn standard languages you are using in your documentation... --> -<script> - (function main() { - 'use strict'; - window.document.addEventListener('DOMContentLoaded', function onDOMContentLoaded() { - window.hljs.initHighlighting(); - }, false); - })(); -</script> diff --git a/docs/index.adoc b/docs/index.adoc deleted file mode 100644 index 212dbf8..0000000 --- a/docs/index.adoc +++ /dev/null @@ -1,64 +0,0 @@ -ifdef::backend-html5[] -= {root-project-name} ({project-version}) image:https://travis-ci.org/daggerok/{root-project-name}.svg?branch=master["Build Status", link={github-url}] -endif::backend-html5[] -ifndef::backend-html5[] -= {root-project-name} ({project-version}) -endif::backend-html5[] -//// -image:https://travis-ci.org/daggerok/root-project-name.svg?branch=master["Build Status", link=github-url] -image:https://gitlab.com/daggerok/root-project-name/badges/master/build.svg["Build Status", link=gitlab-url] -image:https://img.shields.io/bitbucket/pipelines/daggerok/root-project-name.svg["Build Status", link=bitbucket-url] -//// -Maksim Kostromin <daggerok@gmail.com> -{docdatetime} -:doctype: book -:toc: left -:toclevels: 4 -:numbered: -:icons: font -:hide-uri-scheme: -:revnumber: {project-version} -:example-caption!: -:source-highlighter: highlightjs - -Travis CI status: -image:https://travis-ci.org/daggerok/{root-project-name}.svg?branch=master["Build Status", link={github-url}] - -//// -GitLab CI status: -image:https://gitlab.com/daggerok/{root-project-name}/badges/master/build.svg["Build Status", link={gitlab-url}] - -BitBucket CI status: -image:https://img.shields.io/bitbucket/pipelines/daggerok/{root-project-name}.svg["Build Status", link={bitbucket-url}] -//// - -== Introduction - -include::../README.adoc[tags=content] - -== Implementation - -=== predicate (java 7 API): - -.impl -[source,java] ----- -include::../src/main/java/daggerok/java7/predicate/Java7Predicate.java[tags=content] ----- - -.test -[source,java] ----- -include::../src/test/java/daggerok/java7/predicate/Java7PredicateTest.java[tags=content] ----- - -== Links - -ifdef::backend-html5[- link:./index.pdf[Documentation in PFD format]] -- link:{github-url}[GitHub repo] -- link:https://daggerok.github.io/{root-project-name}[GitHub pages] -//// -- link:{gitlab-url}[GitLab repo] -- link:https://daggerok.gitlab.io/{root-project-name}[GitLab pages] -- link:{bitbucket-url}[BitBucket repo] -//// diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 5d34ecc..0000000 --- a/gradle.properties +++ /dev/null @@ -1,4 +0,0 @@ -org.gradle.daemon=false -#org.gradle.console=rich -org.gradle.console=plain -#org.gradle.console=verbose diff --git a/gradle/Dockerfile b/gradle/Dockerfile deleted file mode 100644 index a2ae83a..0000000 --- a/gradle/Dockerfile +++ /dev/null @@ -1,40 +0,0 @@ -FROM openjdk:8u151-jre-alpine3.7 -MAINTAINER Maksim Kostromin https://github.com/daggerok -RUN apk --no-cache --update add busybox-suid bash curl unzip sudo openssh-client shadow wget \ - && adduser -h /home/appuser -s /bin/bash -D -u 1025 appuser wheel \ - && echo 'appuser ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \ - && sed -i 's/.*requiretty$/Defaults !requiretty/' /etc/sudoers \ - && wget --no-cookies \ - --no-check-certificate \ - --header 'Cookie: oraclelicense=accept-securebackup-cookie' \ - 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip' \ - -O /tmp/jce_policy-8.zip \ - && unzip -o /tmp/jce_policy-8.zip -d /tmp \ - && mv -f ${JAVA_HOME}/lib/security ${JAVA_HOME}/lib/backup-security \ - && mv -f /tmp/UnlimitedJCEPolicyJDK8 ${JAVA_HOME}/lib/security \ - && apk del busybox-suid unzip openssh-client shadow wget \ - && rm -rf /var/cache/apk/* /tmp/* -USER appuser -WORKDIR /home/appuser -VOLUME /home/appuser -ARG JAVA_OPTS_ARGS='\ - -Djavax.net.debug=ssl \ - -Djava.net.preferIPv4Stack=true \ - -XX:+UnlockExperimentalVMOptions \ - -XX:+UseCGroupMemoryLimitForHeap \ - -XshowSettings:vm ' -ENV JAVA_OPTS="${JAVA_OPTS} ${JAVA_OPTS_ARGS}" -ENTRYPOINT java ${JAVA_OPTS} -jar ./app.jar -CMD /bin/bash -#ENTRYPOINT java -XX:+UnlockExperimentalVMOptions \ -# -XX:+UseCGroupMemoryLimitForHeap \ -# -XshowSettings:vm \ -# -Djava.net.preferIPv4Stack=true \ -# -Djavax.net.debug=ssl \ -# -jar ./app.jar -#CMD /bin/bash -#EXPOSE 8080 -#HEALTHCHECK --timeout=2s \ -# --retries=22 \ -# CMD curl -f http://127.0.0.1:8080/api/health || exit 1 -COPY --chown=appuser ./build/libs/*-all.jar ./app.jar diff --git a/gradle/allure.gradle b/gradle/allure.gradle deleted file mode 100644 index c271ae3..0000000 --- a/gradle/allure.gradle +++ /dev/null @@ -1,25 +0,0 @@ -allprojects { - apply plugin: 'io.qameta.allure' - - dependencies { - testCompile "io.qameta.allure:allure-selenide:$allureVersion" - } - - allure { - - useJUnit4 { - version = project.allureVersion - } - - useJUnit5 { - version = project.allureVersion - } - - version = project.allureVersion - autoconfigure = true - allureJavaVersion = project.allureVersion - //reportDir = file("$rootDir/build/allure-report") - //resultsDir = file("$rootDir/build/allure-results") - downloadLink = "https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/$allureVersion/allure-${allureVersion}.zip" - } -} diff --git a/gradle/clean.gradle b/gradle/clean.gradle deleted file mode 100644 index 9f8e4ad..0000000 --- a/gradle/clean.gradle +++ /dev/null @@ -1,29 +0,0 @@ -allprojects { - apply plugin: 'base' - - clean.doFirst { - [ - project.buildDir, - project.file('out'), - project.file('bin'), - project.file('build'), - project.file('target'), - project.file('public'), - project.file('.allure'), - project.file('.project'), - project.file('.settings'), - project.file('.classpath'), - project.file("$rootDir/dist"), - project.file('allure-report'), - project.file('allure-results'), - project.file("$rootDir/src/main/resources/public/docs"), - ].each { delete it } - // rm -rf $(find . -name 'ajcore.*.txt') - delete fileTree(rootDir).matching { - include '**/ajcore.*.txt' - include '**/allure-results/**' - include '**/allure-report/**' - include '**/.allure/**' - } - } -} diff --git a/gradle/docker-compose.gradle b/gradle/docker-compose.gradle deleted file mode 100644 index 5aac9ec..0000000 --- a/gradle/docker-compose.gradle +++ /dev/null @@ -1,29 +0,0 @@ -def dockerComposeFile = project.file("$rootDir/docker-compose-gradle.yaml") -def profile = 'gradle' - -if (project.hasProperty('profile')) { - profile = project.property('profile') ?: '' - if (!profile.trim().isEmpty()) { - def path = dockerComposeFile.absolutePath.replace('-gradle.yaml', "-${profile}.yaml") - dockerComposeFile = project.file(path) - } -} - -apply plugin: 'com.avast.gradle.docker-compose' - -dockerCompose { - useComposeFiles = [dockerComposeFile] - // captureContainersOutput = true - captureContainersOutput = false - stopContainers = true - removeContainers = true - removeImages = 'Local' - removeVolumes = true - removeOrphans = true - forceRecreate = true - waitForTcpPorts = false - projectName = project.name -} - -composeUp.dependsOn assemble -composeUp.shouldRunAfter clean, assemble diff --git a/gradle/docs.gradle b/gradle/docs.gradle deleted file mode 100644 index 4d60dbe..0000000 --- a/gradle/docs.gradle +++ /dev/null @@ -1,79 +0,0 @@ -buildscript { - ext { - adocProcessingOutputDir = project.file("$buildDir/asciidoc") - adocOutputDir = project.file("$rootDir/target/generated-docs") - } -} - -apply plugin: 'org.asciidoctor.convert' -apply plugin: 'org.ajoberstar.git-publish' - -asciidoctor { - sourceDir = project.file("$rootDir/docs") - sources { - include 'index.adoc' - } - outputDir = adocProcessingOutputDir - attributes toc: 'left', - doctype: 'book', - ruby: 'erubis', - encoding: 'utf-8', - linkattrs: true, - numbered: true, - sectanchors: true, - sectlink: true, - idprefix: '', - docinfo1: '', - icons: 'font', - idseparator: '-', - setanchors: 'true', - imagesdir: './images', - 'toc-title': 'Table of Contents', - 'source-highlighter': 'highlightjs', - 'root-project-name': rootProject.name, - 'build-gradle': project.file('build.gradle'), - 'github-url': "https://github.com/daggerok/$rootProject.name", - 'gitlab-url': "https://gitlab.com/daggerok/$rootProject.name", - 'bitbucket-url': "https://bitbucket.com/daggerok/$rootProject.name" - - logDocuments = true - //backends 'pdf', 'html5' - backends = ['html5', 'pdf'] -} - -asciidoctor.doLast { - def html5 = "$adocProcessingOutputDir/html5" - project.file("$html5/404.html").text = project.file("$html5/index.html").text - project.file("$html5/.nojekyll").text = '' -} - -task documentation(type: Copy, dependsOn: asciidoctor) { - shouldRunAfter clean, asciidoctor - from "$asciidoctor.outputDir/html5" - from "$asciidoctor.outputDir/pdf" - from "$asciidoctor.sourceDir/static", { - into '.' - } - into adocOutputDir -} - -gitPublish { - // repoUri = "git@gitlab.com:daggerok/${rootProject.name}.git" // same gitlab plugin? - repoUri = "git@github.com:daggerok/${rootProject.name}.git" - branch = 'gh-pages' - - contents { - from adocOutputDir, { - into '.' - } - } - - commitMessage = "Publish $rootProject.name documentation (${project.group}:${project.name}:$project.version)" -} - -gitPublishPush.dependsOn documentation -gitPublishPush.shouldRunAfter clean, documentation - -task docs(dependsOn: gitPublishPush) { - shouldRunAfter clean, asciidoctor -} diff --git a/gradle/findbugs.gradle b/gradle/findbugs.gradle deleted file mode 100644 index 857dd33..0000000 --- a/gradle/findbugs.gradle +++ /dev/null @@ -1,52 +0,0 @@ -allprojects { - apply plugin: 'findbugs' - - tasks.withType(FindBugs) { - reports { - xml.enabled false - html.enabled true - //// see for details/example: https://github.com/findbugsproject/findbugs/blob/master/findbugs/src/xsl/default.xsl - //html.stylesheet resources.text.fromFile('config/xsl/findbugs-custom.xsl') - } - } - - findbugs { - reportsDir = file("$rootProject.buildDir/findbugs") - ignoreFailures = true - } - - /* // hell, no! - findbugs { - reportsDir = file("$project.buildDir/findbugs") - - // specify concrete tested and worked version for you - toolVersion = '...' - - // specify custome sources for analysis: - sourceSets = [ - sourceSets.main, - sourceSets.test, - ] - - // do not fail on errors - ignoreFailures = true - - effort = 'max' - showProgress = true - reportLevel = 'high' - - // specify which bugs detect to analysis: - visitors = ['FindSqlInjection', 'SwitchFallthrough'] - // specify which bugs skip for analysis: - omitVisitors = ['FindNonShortCircuit'] - - //// avoid configuration errors: - // Cannot read file specified for FindBugs 'excludeFilter' property: /private/tmp/findbugs-example/config/findbugs/excludeFilter.xml - excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml") - // Cannot read file specified for FindBugs 'includeFilter' property: /private/tmp/findbugs-example/config/findbugs/includeFilter.xml - includeFilter = file("$rootProject.projectDir/config/findbugs/includeFilter.xml") - // Cannot read file specified for FindBugs 'excludeBugsFilter' property: /private/tmp/findbugs-example/config/findbugs/excludeBugsFilter.xml - excludeBugsFilter = file("$rootProject.projectDir/config/findbugs/excludeBugsFilter.xml") - } - */ -} diff --git a/gradle/ide.gradle b/gradle/ide.gradle deleted file mode 100644 index 6528f22..0000000 --- a/gradle/ide.gradle +++ /dev/null @@ -1,31 +0,0 @@ -/* -// Plugin 'idea' is a core Gradle plugin, which is already on the classpath. Requesting it with the 'apply false' option is a no-op. -plugins { - id 'idea' apply false // will fail -} -*/ - -apply plugin: 'idea' -allprojects*.apply plugin: 'cn.bestwu.propdeps-idea' - -idea { - module { - downloadJavadoc = false - downloadSources = true - } -} - -/* -apply plugin: 'eclipse' -allprojects*.apply plugin: 'cn.bestwu.propdeps-eclipse' - -eclipse { - classpath { - downloadJavadoc = false - downloadSources = true - } -} - -allprojects*.apply plugin: 'maven' -allprojects*.apply plugin: 'cn.bestwu.propdeps-maven' -*/ diff --git a/gradle/jacoco.gradle b/gradle/jacoco.gradle deleted file mode 100644 index 824ec44..0000000 --- a/gradle/jacoco.gradle +++ /dev/null @@ -1,83 +0,0 @@ -// read more: https://docs.gradle.org/current/userguide/jacoco_plugin.html -// Also got some thoughts from here: https://gist.github.com/aalmiray/e6f54aa4b3803be0bcac - -allprojects { - apply plugin: 'jacoco' - - jacoco { - toolVersion = '0.8.1' - } - - jacocoTestCoverageVerification { - violationRules { - rule { - limit { - minimum = 0.5 - } - } - rule { - enabled = false - element = 'CLASS' - includes = [ - 'org.gradle.*', - ] - limit { - counter = 'LINE' - value = 'TOTALCOUNT' - maximum = 0.3 - } - } - } - } -} - -subprojects { - jacocoTestReport { - def main = sourceSets.main - def srcDirs = main.allSource.srcDirs - additionalSourceDirs = files(srcDirs) - sourceDirectories = files(srcDirs) - classDirectories = files(main.output) - reports { - xml.enabled = false - csv.enabled = false - html.enabled = true - html.destination file("$buildDir/jacoco/html") - } - } -} - -jacocoTestReport { - def main = subprojects.sourceSets.main - def srcDirs = main.allSource.srcDirs - dependsOn = subprojects.check - additionalSourceDirs = files(srcDirs) - sourceDirectories = files(srcDirs) - classDirectories = files(main.output) - executionData = files(subprojects.jacocoTestReport.executionData) - afterEvaluate { - classDirectories = files(classDirectories.files.collect { - fileTree( - dir : it, - exclude: [ - '*donot/check/me*', - '*dont/check/metoo*', - ] - ) - }) - } - reports { - xml.enabled = false - csv.enabled = false - html.enabled = true - html.destination file("$rootProject.buildDir/jacoco/html") - } - onlyIf = { - true - } - doFirst { - executionData = files(executionData.findAll { - it.exists() - }) - } -} diff --git a/gradle/java.gradle b/gradle/java.gradle deleted file mode 100644 index f06d5df..0000000 --- a/gradle/java.gradle +++ /dev/null @@ -1,19 +0,0 @@ -allprojects { - apply plugin: 'java' - - apply plugin: 'io.franzbecker.gradle-lombok' - lombok.version = project.lombokVersion - - version = '0.0.1' - group = 'com.github.daggerok' - sourceCompatibility = targetCompatibility = "$javaVersion" - - defaultTasks 'clean', 'build' - - dependencies { - // In java we trust... - implementation "io.vavr:vavr:$vavrVersion" - implementation "org.slf4j:slf4j-api:$slf4jVersion" - implementation "ch.qos.logback:logback-classic:$logbackVersion" - } -} diff --git a/gradle/jgiven.gradle b/gradle/jgiven.gradle deleted file mode 100644 index 2db5cc5..0000000 --- a/gradle/jgiven.gradle +++ /dev/null @@ -1,16 +0,0 @@ -dependencies { - testCompile "com.tngtech.jgiven:jgiven-junit:$jgivenVersion" - testCompile "com.tngtech.jgiven:jgiven-junit5:$jgivenVersion" - testRuntime "com.tngtech.jgiven:jgiven-html5-report:$jgivenVersion" - //testRuntime "org.slf4j:slf4j-api:$slf4jVersion" - testCompile "ch.qos.logback:logback-classic:$logbackVersion" -} - -task jgivenTestReport(type: JavaExec, dependsOn: 'test') { - main = 'com.tngtech.jgiven.report.ReportGenerator' - args '--targetDir=./build/jgiven-report', '--format=html' - classpath = configurations.testCompile - shouldRunAfter clean, assemble -} - -test.finalizedBy jgivenTestReport diff --git a/gradle/junit.gradle b/gradle/junit.gradle deleted file mode 100644 index 37c8515..0000000 --- a/gradle/junit.gradle +++ /dev/null @@ -1,26 +0,0 @@ -allprojects { - // read more: https://docs.gradle.org/4.6/release-notes.html#junit-5-support - - dependencies { - testImplementation "org.assertj:assertj-core:$assertjVersion" - testImplementation "junit:junit:$junit4Version" - testImplementation "org.hamcrest:hamcrest-core:$hamcrestVersion" - testImplementation "org.junit.jupiter:junit-jupiter-api:$junitJupiterVersion" - testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junitJupiterVersion" - testRuntimeOnly "org.junit.vintage:junit-vintage-engine:$junitJupiterVersion", { - because 'allows JUnit 3 and JUnit 4 tests to run' - } - testRuntime "org.junit.platform:junit-platform-launcher:$junitPlatformVersion", { - because 'allows tests to run from IDEs that bundle older version of launcher' - } - //testCompileOnly 'org.apiguardian:apiguardian-api:1.0.0' - } - - test { - useJUnitPlatform { - includeEngines 'junit-jupiter', 'junit-vintage' - } - } - - //apply from: "$project.rootDir/gradle/jgiven.gradle" -} diff --git a/gradle/kotlin.gradle b/gradle/kotlin.gradle deleted file mode 100644 index 1028c45..0000000 --- a/gradle/kotlin.gradle +++ /dev/null @@ -1,50 +0,0 @@ -allprojects { - apply plugin: 'org.jetbrains.kotlin.jvm' - apply plugin: 'org.jetbrains.kotlin.plugin.noarg' - apply plugin: 'org.jetbrains.kotlin.plugin.spring' - - def projectIncremental = true - def projectFreeCompileArgs = [ - '-Xjsr305=strict', - '-java-parameters', - //1.2.41: - //"-Xenable-jvm-default", - //1.2.50: - "-Xjvm-default=compatibility", - ] - - kotlin { - experimental { - coroutines 'enable' - } - } - - kapt { - useBuildCache = true - } - - compileKotlin { - incremental = projectIncremental - kotlinOptions { - jvmTarget = "$javaVersion" - freeCompilerArgs = projectFreeCompileArgs - } - } - - compileTestKotlin { - incremental = projectIncremental - kotlinOptions { - jvmTarget = "$javaVersion" - freeCompilerArgs = projectFreeCompileArgs - } - } - - dependencies { - //implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonKotlinVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion" - implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion" - - testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlinVersion" - testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion" - } -} diff --git a/gradle/main.gradle b/gradle/main.gradle deleted file mode 100644 index 6e2d021..0000000 --- a/gradle/main.gradle +++ /dev/null @@ -1,6 +0,0 @@ -apply plugin: 'application' -apply plugin: 'com.github.johnrengelman.shadow' - -mainClassName = 'daggerok.App' -shadowJar.mustRunAfter jar -defaultTasks 'clean', 'build', 'installDist', 'distZip', 'publish' diff --git a/gradle/publish.gradle b/gradle/publish.gradle deleted file mode 100644 index 693b817..0000000 --- a/gradle/publish.gradle +++ /dev/null @@ -1,102 +0,0 @@ -/* please, read this: https://docs.gradle.org/4.8/userguide/publishing_maven.html#publishing_m */ - -allprojects { - apply plugin: 'java' - - project.javadoc.failOnError = false - - task sourcesJar(type: Jar) { - from sourceSets.main.allJava - classifier 'sources' - } - - task javadocJar(type: Jar) { - from javadoc - classifier 'javadoc' - } - - apply plugin: 'maven-publish' - - publishing { - publications { - mavenJava(MavenPublication) { publication -> - afterEvaluate { - project.shadow.component(publication) - artifact sourcesJar - artifact javadocJar - //artifactId = jar.baseName - - pom { - name = project.name - description = project.description - url = "https://github.com/daggerok/$project.name" as String - licenses { - license { - name = 'MIT License' - url = "https://github.com/daggerok/${project.name}/blob/master/LICENSE" as String - } - } - developers { - developer { - id = 'daggerok' - name = 'Maksim Kostromin' - email = 'daggerok@gmail.com' - } - } - scm { - connection = "scm:git:git://github.com/daggeropk/${project.name}.git" as String - developerConnection = "scm:git:ssh://github.com/daggeropk/${project.name}.git" as String - url = "http://github.com/daggeropk/$project.name" as String - } - } - } - } - } - } - - publishing { - repositories { - maven { - url """$rootProject.buildDir/maven-publish/repos/${( - project.version.endsWith("SNAPSHOT") ? 'snapshots' : 'releases' - )}""" - } - } - } - - publish.dependsOn assemble - - /* // This one is required signatory to be configured (gpg stuff...) - apply plugin: 'signing' - - signing { - sign project.publishing.publications.mavenJava - } - */ -} - -/* -allprojects { - // with shadow plugin - publishing { - publications { - mavenJava(MavenPublication) { publication -> - project.shadow.component(publication) - artifact sourcesJar - artifact javadocJar - // ... - } - } - } - // without shadow plugin - publishing { - publications { - mavenJava(MavenPublication) -> - artifact sourcesJar - artifact javadocJar - } - } - } - // ... -} -*/ diff --git a/gradle/redeploy.sh b/gradle/redeploy.sh deleted file mode 100755 index 17c4006..0000000 --- a/gradle/redeploy.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -# ./grdlew clean war; bash ./gradle/redeploy.sh -container=jax-rs-hateoas-links_gradle-jax-rs-hateoas-links-app_1 -docker cp ./build/libs/*.war ${container}:/home/jboss-eap-7.1/jboss-eap-7.1/standalone/deployments/app.war diff --git a/gradle/repositories-config.gradle b/gradle/repositories-config.gradle deleted file mode 100644 index fe50614..0000000 --- a/gradle/repositories-config.gradle +++ /dev/null @@ -1,6 +0,0 @@ -repositories { - //mavenLocal() // for some reasons code source not attaching with this mavenLocal repository enabled in idea... - mavenCentral() - jcenter() - //maven { url 'https://repo.spring.io/libs-milestone' } -} diff --git a/gradle/repositories.gradle b/gradle/repositories.gradle deleted file mode 100644 index 30d999d..0000000 --- a/gradle/repositories.gradle +++ /dev/null @@ -1,6 +0,0 @@ -allprojects { - buildscript { - apply from: "$rootDir/gradle/repositories-config.gradle" - } - apply from: "$rootDir/gradle/repositories-config.gradle" -} diff --git a/gradle/selenide.gradle b/gradle/selenide.gradle deleted file mode 100644 index 5477451..0000000 --- a/gradle/selenide.gradle +++ /dev/null @@ -1,59 +0,0 @@ -dependencies { - testImplementation "com.codeborne:selenide:$selenideVersion", { - exclude module: 'selenium-opera-driver' - exclude module: 'selenium-safari-driver' - exclude module: 'selenium-edge-driver' - exclude module: 'selenium-ie-driver' - because "we don't wanna use any of these..." - } - testImplementation "com.codeborne:phantomjsdriver:$phantomjsDriverVersion" - ////these are must be included by selenide library as a transitive dependencies: - //testImplementation "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumDriverVersion" - //testImplementation "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumDriverVersion" -} - -static def findAllSelenideSystemProps() { - System.properties?.findAll { it.key.startsWith('selenide') } ?: [:] -} - -test { - systemProperties = findAllSelenideSystemProps() + [ - 'selenide.browser': System.getProperty('selenide.browser', 'chrome') - ] -} - -['firefox', 'chrome', 'phantomjs'].each { taskName -> - Task e2eTestBrowserSelectorTask = tasks.create(name: taskName) { - def systemProps = findAllSelenideSystemProps() - systemProps['selenide.browser'] = taskName - - doFirst { - test { - systemProperties = systemProps - } - } - } - test.shouldRunAfter(e2eTestBrowserSelectorTask) -} - -task headless { - def systemProps = findAllSelenideSystemProps() - systemProps['selenide.headless'] = true - - doFirst { - test { - systemProperties = systemProps - } - } -} - -task headful { - def systemProps = findAllSelenideSystemProps() - systemProps['selenide.headless'] = false - - doFirst { - test { - systemProperties = systemProps - } - } -} diff --git a/gradle/spring-boot.gradle b/gradle/spring-boot.gradle deleted file mode 100644 index c552dca..0000000 --- a/gradle/spring-boot.gradle +++ /dev/null @@ -1,68 +0,0 @@ -apply plugin: 'idea' -apply plugin: 'cn.bestwu.propdeps' -apply plugin: 'org.springframework.boot' -apply plugin: 'io.spring.dependency-management' - -defaultTasks 'clean', 'build' - -compileJava.dependsOn(processResources) - -dependencies { - - // spring-boot - implementation 'org.springframework.boot:spring-boot-starter-webflux' - implementation 'org.springframework.boot:spring-boot-starter-actuator' - //runtime 'org.springframework.boot:spring-boot-devtools' - - //annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' - //testAnnotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' - - //// JPA (+embedded) - //runtime 'com.h2database:h2' - //implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - //implementation 'org.springframework.boot:spring-boot-starter-data-rest' - - //// Kafka (+embedded) - //implementation 'org.springframework.cloud:spring-cloud-stream' - //implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka' - //implementation 'org.springframework.kafka:spring-kafka' - //implementation 'org.springframework.kafka:spring-kafka-test' - //testImplementation 'org.springframework.cloud:spring-cloud-stream-test-support' - - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'io.projectreactor:reactor-test' -} - -dependencyManagement { - imports { - mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion" - mavenBom "org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion" - } -} - -bootJar { - launchScript() -} - -/* -// spring-boot multi-module preamble: -// this in dependencies closure really doesn't work: -// compile project(':submodule').sourceSets.main.output // dot't do this! - -// 1. in spring-boot submodules use next configs: - -bootJar { - enabled = false -} -jar { - enabled = true -} - -// 2. in spring-boot target main module to fix gradle compile build + lombok issue use all of these: - -dependencies { - annotationProcessor(project(':submodule')) - compileOnly(project(':submodule')) - compile(project(':submodule')) -} -*/ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100755 index 91ca28c..0000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index a95009c..0000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew deleted file mode 100755 index cccdd3d..0000000 --- a/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100755 index e95643d..0000000 --- a/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/idea.xml b/idea.xml deleted file mode 100644 index bda9eab..0000000 --- a/idea.xml +++ /dev/null @@ -1,114 +0,0 @@ -<code_scheme name="Default" version="173"> - <option name="OTHER_INDENT_OPTIONS"> - <value> - <option name="INDENT_SIZE" value="2" /> - <option name="TAB_SIZE" value="2" /> - </value> - </option> - <option name="FORMATTER_TAGS_ENABLED" value="true" /> - <JSCodeStyleSettings> - <option name="FORCE_SEMICOLON_STYLE" value="true" /> - <option name="USE_DOUBLE_QUOTES" value="false" /> - <option name="FORCE_QUOTE_STYlE" value="true" /> - <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" /> - <option name="SPACES_WITHIN_IMPORTS" value="true" /> - </JSCodeStyleSettings> - <TypeScriptCodeStyleSettings> - <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" /> - <option name="SPACES_WITHIN_IMPORTS" value="true" /> - </TypeScriptCodeStyleSettings> - <codeStyleSettings language="CSS"> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="GSP"> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="Groovy"> - <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> - <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> - <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" /> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="HTML"> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="JAVA"> - <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> - <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> - <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" /> - <option name="ALIGN_MULTILINE_CHAINED_METHODS" value="true" /> - <option name="ALIGN_MULTILINE_PARAMETERS_IN_CALLS" value="true" /> - <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" /> - <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" /> - <option name="CALL_PARAMETERS_WRAP" value="5" /> - <option name="METHOD_CALL_CHAIN_WRAP" value="5" /> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="JSP"> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="JSPX"> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="JavaScript"> - <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="2" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="TypeScript"> - <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="2" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="XML"> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> - <codeStyleSettings language="kotlin"> - <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" /> - <option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> - <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" /> - <indentOptions> - <option name="INDENT_SIZE" value="2" /> - <option name="CONTINUATION_INDENT_SIZE" value="4" /> - <option name="TAB_SIZE" value="2" /> - </indentOptions> - </codeStyleSettings> -</code_scheme> \ No newline at end of file diff --git a/docs/images/favicon.ico b/images/favicon.ico similarity index 100% rename from docs/images/favicon.ico rename to images/favicon.ico diff --git a/index.html b/index.html new file mode 100644 index 0000000..5c04223 --- /dev/null +++ b/index.html @@ -0,0 +1,603 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="UTF-8"> +<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="generator" content="Asciidoctor 1.5.6.1"> +<meta name="author" content="Maksim Kostromin"> +<title>java-examples (0.0.1)</title> +<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"> +<style> +/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ +/* Remove comment around @import statement below when using as a custom stylesheet */ +/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/ +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} +audio,canvas,video{display:inline-block} +audio:not([controls]){display:none;height:0} +[hidden],template{display:none} +script{display:none!important} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} +a{background:transparent} +a:focus{outline:thin dotted} +a:active,a:hover{outline:0} +h1{font-size:2em;margin:.67em 0} +abbr[title]{border-bottom:1px dotted} +b,strong{font-weight:bold} +dfn{font-style:italic} +hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} +mark{background:#ff0;color:#000} +code,kbd,pre,samp{font-family:monospace;font-size:1em} +pre{white-space:pre-wrap} +q{quotes:"\201C" "\201D" "\2018" "\2019"} +small{font-size:80%} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sup{top:-.5em} +sub{bottom:-.25em} +img{border:0} +svg:not(:root){overflow:hidden} +figure{margin:0} +fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} +legend{border:0;padding:0} +button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} +button,input{line-height:normal} +button,select{text-transform:none} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} +button[disabled],html input[disabled]{cursor:default} +input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} +input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} +textarea{overflow:auto;vertical-align:top} +table{border-collapse:collapse;border-spacing:0} +*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} +html,body{font-size:100%} +body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} +a:hover{cursor:pointer} +img,object,embed{max-width:100%;height:auto} +object,embed{height:100%} +img{-ms-interpolation-mode:bicubic} +.left{float:left!important} +.right{float:right!important} +.text-left{text-align:left!important} +.text-right{text-align:right!important} +.text-center{text-align:center!important} +.text-justify{text-align:justify!important} +.hide{display:none} +img,object,svg{display:inline-block;vertical-align:middle} +textarea{height:auto;min-height:50px} +select{width:100%} +.center{margin-left:auto;margin-right:auto} +.spread{width:100%} +p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6} +.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} +div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} +a{color:#2156a5;text-decoration:underline;line-height:inherit} +a:hover,a:focus{color:#1d4b8f} +a img{border:none} +p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} +p aside{font-size:.875em;line-height:1.35;font-style:italic} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} +h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} +h1{font-size:2.125em} +h2{font-size:1.6875em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} +h4,h5{font-size:1.125em} +h6{font-size:1em} +hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} +em,i{font-style:italic;line-height:inherit} +strong,b{font-weight:bold;line-height:inherit} +small{font-size:60%;line-height:inherit} +code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} +ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} +ul,ol{margin-left:1.5em} +ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} +ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} +ul.square{list-style-type:square} +ul.circle{list-style-type:circle} +ul.disc{list-style-type:disc} +ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} +dl dt{margin-bottom:.3125em;font-weight:bold} +dl dd{margin-bottom:1.25em} +abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} +abbr{text-transform:none} +blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} +blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} +blockquote cite:before{content:"\2014 \0020"} +blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} +blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} +@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} +h1{font-size:2.75em} +h2{font-size:2.3125em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} +h4{font-size:1.4375em}} +table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} +table thead,table tfoot{background:#f7f8f7;font-weight:bold} +table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} +table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} +table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} +table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} +h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} +.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table} +.clearfix:after,.float-group:after{clear:both} +*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word} +*:not(pre)>code.nobreak{word-wrap:normal} +*:not(pre)>code.nowrap{white-space:nowrap} +pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} +em em{font-style:normal} +strong strong{font-weight:400} +.keyseq{color:rgba(51,51,51,.8)} +kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} +.keyseq kbd:first-child{margin-left:0} +.keyseq kbd:last-child{margin-right:0} +.menuseq,.menuref{color:#000} +.menuseq b:not(.caret),.menuref{font-weight:inherit} +.menuseq{word-spacing:-.02em} +.menuseq b.caret{font-size:1.25em;line-height:.8} +.menuseq i.caret{font-weight:bold;text-align:center;width:.45em} +b.button:before,b.button:after{position:relative;top:-1px;font-weight:400} +b.button:before{content:"[";padding:0 3px 0 2px} +b.button:after{content:"]";padding:0 2px 0 3px} +p a>code:hover{color:rgba(0,0,0,.9)} +#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} +#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table} +#header:after,#content:after,#footnotes:after,#footer:after{clear:both} +#content{margin-top:1.25em} +#content:before{content:none} +#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} +#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} +#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} +#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} +#header .details span:first-child{margin-left:-.125em} +#header .details span.email a{color:rgba(0,0,0,.85)} +#header .details br{display:none} +#header .details br+span:before{content:"\00a0\2013\00a0"} +#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} +#header .details br+span#revremark:before{content:"\00a0|\00a0"} +#header #revnumber{text-transform:capitalize} +#header #revnumber:after{content:"\00a0"} +#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} +#toc{border-bottom:1px solid #efefed;padding-bottom:.5em} +#toc>ul{margin-left:.125em} +#toc ul.sectlevel0>li>a{font-style:italic} +#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} +#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} +#toc li{line-height:1.3334;margin-top:.3334em} +#toc a{text-decoration:none} +#toc a:active{text-decoration:underline} +#toctitle{color:#7a2518;font-size:1.2em} +@media only screen and (min-width:768px){#toctitle{font-size:1.375em} +body.toc2{padding-left:15em;padding-right:0} +#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} +#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} +#toc.toc2>ul{font-size:.9em;margin-bottom:0} +#toc.toc2 ul ul{margin-left:0;padding-left:1em} +#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} +body.toc2.toc-right{padding-left:0;padding-right:15em} +body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} +@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} +#toc.toc2{width:20em} +#toc.toc2 #toctitle{font-size:1.375em} +#toc.toc2>ul{font-size:.95em} +#toc.toc2 ul ul{padding-left:1.25em} +body.toc2.toc-right{padding-left:0;padding-right:20em}} +#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +#content #toc>:first-child{margin-top:0} +#content #toc>:last-child{margin-bottom:0} +#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} +#footer-text{color:rgba(255,255,255,.8);line-height:1.44} +.sect1{padding-bottom:.625em} +@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}} +.sect1+.sect1{border-top:1px solid #efefed} +#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} +#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} +#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} +#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} +.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} +.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} +table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0} +.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)} +table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit} +.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} +.admonitionblock>table td.icon{text-align:center;width:80px} +.admonitionblock>table td.icon img{max-width:initial} +.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} +.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} +.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} +.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} +.exampleblock>.content>:first-child{margin-top:0} +.exampleblock>.content>:last-child{margin-bottom:0} +.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +.sidebarblock>:first-child{margin-top:0} +.sidebarblock>:last-child{margin-bottom:0} +.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} +.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} +.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} +.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} +.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} +.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} +@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} +@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} +.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} +.listingblock pre.highlightjs{padding:0} +.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} +.listingblock pre.prettyprint{border-width:0} +.listingblock>.content{position:relative} +.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} +.listingblock:hover code[data-lang]:before{display:block} +.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999} +.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"} +table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} +table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} +table.pyhltable td.code{padding-left:.75em;padding-right:0} +pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} +pre.pygments .lineno{display:inline-block;margin-right:.25em} +table.pyhltable .linenodiv{background:none!important;padding-right:0!important} +.quoteblock{margin:0 1em 1.25em 1.5em;display:table} +.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} +.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} +.quoteblock blockquote{margin:0;padding:0;border:0} +.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} +.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} +.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} +.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} +.quoteblock .quoteblock blockquote{padding:0 0 0 .75em} +.quoteblock .quoteblock blockquote:before{display:none} +.verseblock{margin:0 1em 1.25em 1em} +.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} +.verseblock pre strong{font-weight:400} +.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} +.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} +.quoteblock .attribution br,.verseblock .attribution br{display:none} +.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} +.quoteblock.abstract{margin:0 0 1.25em 0;display:block} +.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0} +.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none} +table.tableblock{max-width:100%;border-collapse:separate} +table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0} +table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} +table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0} +table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0} +table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0} +table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0} +table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0} +table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0} +table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0} +table.frame-all{border-width:1px} +table.frame-sides{border-width:0 1px} +table.frame-topbot{border-width:1px 0} +th.halign-left,td.halign-left{text-align:left} +th.halign-right,td.halign-right{text-align:right} +th.halign-center,td.halign-center{text-align:center} +th.valign-top,td.valign-top{vertical-align:top} +th.valign-bottom,td.valign-bottom{vertical-align:bottom} +th.valign-middle,td.valign-middle{vertical-align:middle} +table thead th,table tfoot th{font-weight:bold} +tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} +tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} +p.tableblock>code:only-child{background:none;padding:0} +p.tableblock{font-size:1em} +td>div.verse{white-space:pre} +ol{margin-left:1.75em} +ul li ol{margin-left:1.5em} +dl dd{margin-left:1.125em} +dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} +ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} +ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} +ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} +ul.unstyled,ol.unstyled{margin-left:0} +ul.checklist{margin-left:.625em} +ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} +ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em} +ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden} +ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block} +ul.inline>li>*{display:block} +.unstyled dl dt{font-weight:400;font-style:normal} +ol.arabic{list-style-type:decimal} +ol.decimal{list-style-type:decimal-leading-zero} +ol.loweralpha{list-style-type:lower-alpha} +ol.upperalpha{list-style-type:upper-alpha} +ol.lowerroman{list-style-type:lower-roman} +ol.upperroman{list-style-type:upper-roman} +ol.lowergreek{list-style-type:lower-greek} +.hdlist>table,.colist>table{border:0;background:none} +.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} +td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} +td.hdlist1{font-weight:bold;padding-bottom:1.25em} +.literalblock+.colist,.listingblock+.colist{margin-top:-.5em} +.colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top} +.colist>table tr>td:first-of-type img{max-width:initial} +.colist>table tr>td:last-of-type{padding:.25em 0} +.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} +.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} +.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} +.imageblock>.title{margin-bottom:0} +.imageblock.thumb,.imageblock.th{border-width:6px} +.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} +.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} +.image.left{margin-right:.625em} +.image.right{margin-left:.625em} +a.image{text-decoration:none;display:inline-block} +a.image object{pointer-events:none} +sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} +sup.footnote a,sup.footnoteref a{text-decoration:none} +sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} +#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} +#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0} +#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em} +#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none} +#footnotes .footnote:last-of-type{margin-bottom:0} +#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} +.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} +.gist .file-data>table td.line-data{width:99%} +div.unbreakable{page-break-inside:avoid} +.big{font-size:larger} +.small{font-size:smaller} +.underline{text-decoration:underline} +.overline{text-decoration:overline} +.line-through{text-decoration:line-through} +.aqua{color:#00bfbf} +.aqua-background{background-color:#00fafa} +.black{color:#000} +.black-background{background-color:#000} +.blue{color:#0000bf} +.blue-background{background-color:#0000fa} +.fuchsia{color:#bf00bf} +.fuchsia-background{background-color:#fa00fa} +.gray{color:#606060} +.gray-background{background-color:#7d7d7d} +.green{color:#006000} +.green-background{background-color:#007d00} +.lime{color:#00bf00} +.lime-background{background-color:#00fa00} +.maroon{color:#600000} +.maroon-background{background-color:#7d0000} +.navy{color:#000060} +.navy-background{background-color:#00007d} +.olive{color:#606000} +.olive-background{background-color:#7d7d00} +.purple{color:#600060} +.purple-background{background-color:#7d007d} +.red{color:#bf0000} +.red-background{background-color:#fa0000} +.silver{color:#909090} +.silver-background{background-color:#bcbcbc} +.teal{color:#006060} +.teal-background{background-color:#007d7d} +.white{color:#bfbfbf} +.white-background{background-color:#fafafa} +.yellow{color:#bfbf00} +.yellow-background{background-color:#fafa00} +span.icon>.fa{cursor:default} +a span.icon>.fa{cursor:inherit} +.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c} +.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} +.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900} +.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400} +.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000} +.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} +.conum[data-value] *{color:#fff!important} +.conum[data-value]+b{display:none} +.conum[data-value]:after{content:attr(data-value)} +pre .conum[data-value]{position:relative;top:-.125em} +b.conum *{color:inherit!important} +.conum:not([data-value]):empty{display:none} +dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} +h1,h2,p,td.content,span.alt{letter-spacing:-.01em} +p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} +p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} +p{margin-bottom:1.25rem} +.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} +.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} +.print-only{display:none!important} +@media print{@page{margin:1.25cm .75cm} +*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} +a{color:inherit!important;text-decoration:underline!important} +a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} +a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} +abbr[title]:after{content:" (" attr(title) ")"} +pre,blockquote,tr,img,object,svg{page-break-inside:avoid} +thead{display:table-header-group} +svg{max-width:100%} +p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} +h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} +#toc,.sidebarblock,.exampleblock>.content{background:none!important} +#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} +.sect1{padding-bottom:0!important} +.sect1+.sect1{border:0!important} +#header>h1:first-child{margin-top:1.25rem} +body.book #header{text-align:center} +body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0} +body.book #header .details{border:0!important;display:block;padding:0!important} +body.book #header .details span:first-child{margin-left:0!important} +body.book #header .details br{display:block} +body.book #header .details br+span:before{content:none!important} +body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} +body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} +.listingblock code[data-lang]:before{display:block} +#footer{background:none!important;padding:0 .9375em} +#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em} +.hide-on-print{display:none!important} +.print-only{display:block!important} +.hide-for-print{display:none!important} +.show-for-print{display:inherit!important}} +</style> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css"> +<style> + #content { + max-width: 98%; + } + .positioned-image { + position: absolute; + top: 0; + right: 0; + border: 0; + } +</style> + +<meta name="keywords" + content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples"> +<meta name="description" + content="Gradle, doc, docs, adoc, asciidoc, asciidoctor, documentation, java-examples"> + +<!-- highlight.js highlighter --> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css"> + +<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"> +<div> + <!--<a href="https://gitlab.com/daggerok/java-examples">--> + <a href="https://github.com/daggerok/java-examples"> + <img class="positioned-image" + src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" + alt="Don't fork me!"> + </a> +</div> +</head> +<body class="book toc2 toc-left"> +<div id="header"> +<h1>java-examples (0.0.1) <span class="image"><a class="image" href="https://github.com/daggerok/java-examples"><img src="https://travis-ci.org/daggerok/java-examples.svg?branch=master" alt="Build Status"></a></span></h1> +<div class="details"> +<span id="author" class="author">Maksim Kostromin</span><br> +<span id="email" class="email"><a href="mailto:daggerok@gmail.com">daggerok@gmail.com</a></span><br> +<span id="revnumber">version 0.0.1,</span> +<span id="revdate">2020-04-18 12:10:32 UTC</span> +</div> +<div id="toc" class="toc2"> +<div id="toctitle">Table of Contents</div> +<ul class="sectlevel1"> +<li><a href="#introduction">1. Introduction</a></li> +<li><a href="#implementation">2. Implementation</a> +<ul class="sectlevel2"> +<li><a href="#predicate-java-7-api">2.1. predicate (java 7 API):</a></li> +</ul> +</li> +<li><a href="#links">3. Links</a></li> +</ul> +</div> +</div> +<div id="content"> +<div id="preamble"> +<div class="sectionbody"> +<div class="paragraph"> +<p>Travis CI status: +<span class="image"><a class="image" href="https://github.com/daggerok/java-examples"><img src="https://travis-ci.org/daggerok/java-examples.svg?branch=master" alt="Build Status"></a></span></p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="introduction"><a class="anchor" href="#introduction"></a>1. Introduction</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>in progress…​</p> +</div> +<div class="paragraph"> +<p>Read <a href="https://daggerok.github.io/java-examples">project reference documentation</a></p> +</div> +<div class="paragraph"> +<p>Initially generated by using <a href="https://github.com/daggerok/generator-jvm/">generator-jvm</a> yeoman generator (java)</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="implementation"><a class="anchor" href="#implementation"></a>2. Implementation</h2> +<div class="sectionbody"> +<div class="sect2"> +<h3 id="predicate-java-7-api"><a class="anchor" href="#predicate-java-7-api"></a>2.1. predicate (java 7 API):</h3> +<div class="listingblock"> +<div class="title">impl</div> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class Java7Predicate { + + public interface MyPredicate { + boolean test(final String value); + } + + @RequiredArgsConstructor + public static class Is implements MyPredicate { + final String value; + + @Override + public boolean test(String value) { + return value != null && value.contains(this.value); + } + } + + public static class IsRed implements MyPredicate { + @Override + public boolean test(final String value) { + return nonNull(value) && value.toLowerCase().contains("red"); + } + } + + public static void sideEffect(final MyPredicate predicate) { + final List<String> list = Arrays.asList("ololo", "trololo", "red", "blue", "green", "red devil"); + for (String i : list) { + if (predicate.test(i)) { + System.out.println("i = " + i); + } + } + } +}</code></pre> +</div> +</div> +<div class="listingblock"> +<div class="title">test</div> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@Slf4j +@CaptureSystemOutput +@DisplayName("test predicate API: java 7") +class Java7PredicateTest { + + @Test + @DisplayName("test positive") + void testPredicate(final CaptureSystemOutput.OutputCapture outputCapture) { + + assertAll(() -> { + + sideEffect(new Java7Predicate.IsRed()); + Assertions.assertThat(outputCapture.toString()) + .contains("i = red", "i = red devil"); + + sideEffect(new Java7Predicate.Is("green")); + Assertions.assertThat(outputCapture.toString().contains("t = green")); + }); + } +}</code></pre> +</div> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="links"><a class="anchor" href="#links"></a>3. Links</h2> +<div class="sectionbody"> +<div class="ulist"> +<ul> +<li> +<p><a href="./index.pdf">Documentation in PFD format</a></p> +</li> +<li> +<p><a href="https://github.com/daggerok/java-examples">GitHub repo</a></p> +</li> +<li> +<p><a href="https://daggerok.github.io/java-examples">GitHub pages</a></p> +</li> +</ul> +</div> +</div> +</div> +</div> +<div id="footer"> +<div id="footer-text"> +Version 0.0.1<br> +Last updated 2020-04-18 12:10:32 UTC +</div> +</div> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script> +<script>hljs.initHighlighting()</script> +</body> +</html> \ No newline at end of file diff --git a/index.pdf b/index.pdf new file mode 100644 index 0000000..1307442 Binary files /dev/null and b/index.pdf differ diff --git a/index.xml b/index.xml new file mode 100644 index 0000000..0b3d45f --- /dev/null +++ b/index.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?asciidoc-toc maxdepth="4"?> +<?asciidoc-numbered?> +<book xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en"> +<info> +<title>java-examples (0.0.1)</title> +<date>2020-04-18 12:10:32 UTC</date> +<author> +<personname> +<firstname>Maksim</firstname> +<surname>Kostromin</surname> +</personname> +<email>daggerok@gmail.com</email> +</author> +<authorinitials>MK</authorinitials> +<revhistory> +<revision> +<revnumber>0.0.1</revnumber> +<date>2020-04-18 12:10:32 UTC</date> +<authorinitials>MK</authorinitials> +</revision> +</revhistory> +</info> +<preface> +<title></title> +<simpara>Travis CI status: +<inlinemediaobject> +<imageobject> +<imagedata fileref="https://travis-ci.org/daggerok/java-examples.svg?branch=master"/> +</imageobject> +<textobject><phrase>Build Status</phrase></textobject> +</inlinemediaobject></simpara> +</preface> +<chapter xml:id="introduction"> +<title>Introduction</title> +<simpara>in progress…​</simpara> +<simpara>Read <link xl:href="https://daggerok.github.io/java-examples">project reference documentation</link></simpara> +<simpara>Initially generated by using <link xl:href="https://github.com/daggerok/generator-jvm/">generator-jvm</link> yeoman generator (java)</simpara> +</chapter> +<chapter xml:id="implementation"> +<title>Implementation</title> +<section xml:id="predicate-java-7-api"> +<title>predicate (java 7 API):</title> +<formalpara> +<title>impl</title> +<para> +<programlisting language="java" linenumbering="unnumbered">public class Java7Predicate { + + public interface MyPredicate { + boolean test(final String value); + } + + @RequiredArgsConstructor + public static class Is implements MyPredicate { + final String value; + + @Override + public boolean test(String value) { + return value != null && value.contains(this.value); + } + } + + public static class IsRed implements MyPredicate { + @Override + public boolean test(final String value) { + return nonNull(value) && value.toLowerCase().contains("red"); + } + } + + public static void sideEffect(final MyPredicate predicate) { + final List<String> list = Arrays.asList("ololo", "trololo", "red", "blue", "green", "red devil"); + for (String i : list) { + if (predicate.test(i)) { + System.out.println("i = " + i); + } + } + } +}</programlisting> +</para> +</formalpara> +<formalpara> +<title>test</title> +<para> +<programlisting language="java" linenumbering="unnumbered">@Slf4j +@CaptureSystemOutput +@DisplayName("test predicate API: java 7") +class Java7PredicateTest { + + @Test + @DisplayName("test positive") + void testPredicate(final CaptureSystemOutput.OutputCapture outputCapture) { + + assertAll(() -> { + + sideEffect(new Java7Predicate.IsRed()); + Assertions.assertThat(outputCapture.toString()) + .contains("i = red", "i = red devil"); + + sideEffect(new Java7Predicate.Is("green")); + Assertions.assertThat(outputCapture.toString().contains("t = green")); + }); + } +}</programlisting> +</para> +</formalpara> +</section> +</chapter> +<chapter xml:id="links"> +<title>Links</title> +<itemizedlist> +<listitem> +<simpara><link xl:href="https://github.com/daggerok/java-examples">GitHub repo</link></simpara> +</listitem> +<listitem> +<simpara><link xl:href="https://daggerok.github.io/java-examples">GitHub pages</link></simpara> +</listitem> +</itemizedlist> +</chapter> +</book> \ No newline at end of file diff --git a/mvnw b/mvnw deleted file mode 100755 index e96ccd5..0000000 --- a/mvnw +++ /dev/null @@ -1,227 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven2 Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" - else - export JAVA_HOME="/Library/Java/Home" - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` - fi - # end of workaround - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -BASE_DIR=`find_maven_basedir "$(pwd)"` -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR -fi -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` -fi - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd deleted file mode 100755 index 48c810e..0000000 --- a/mvnw.cmd +++ /dev/null @@ -1,143 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven2 Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" - -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml deleted file mode 100644 index aeb5885..0000000 --- a/pom.xml +++ /dev/null @@ -1,423 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://maven.apache.org/POM/4.0.0" - xsi:schemaLocation=" - http://maven.apache.org/POM/4.0.0 - http://maven.apache.org/xsd/maven-4.0.0.xsd"> - - <modelVersion>4.0.0</modelVersion> - - <groupId>com.github.daggerok</groupId> - <version>0.0.1</version> - <artifactId>java-examples</artifactId> - <packaging>jar</packaging> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <junit.platform.version>1.2.0</junit.platform.version> - <junit.jupiter.version>5.1.0</junit.jupiter.version> - <maven.compiler.source>1.8</maven.compiler.source> - <maven.compiler.target>1.8</maven.compiler.target> - <assertj.version>3.10.0</assertj.version> - <lombok.version>1.18.0</lombok.version> - <jgiven.version>0.15.3</jgiven.version> - <junit4.version>4.12</junit4.version> - <slf4j.version>1.7.25</slf4j.version> - <vavr.version>0.9.2</vavr.version> - </properties> - - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.junit</groupId> - <artifactId>junit-bom</artifactId> - <version>${junit.jupiter.version}</version> - </dependency> - </dependencies> - </dependencyManagement> - - <dependencies> - <dependency> - <groupId>io.vavr</groupId> - <artifactId>vavr</artifactId> - <version>${vavr.version}</version> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - <optional>true</optional> - <scope>provided</scope> - </dependency> - <!-- logging --> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>1.2.3</version> - </dependency> - - <!-- assertj --> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <version>3.10.0</version> - <scope>test</scope> - </dependency> - <!-- junit 4 --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>${junit4.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - <version>${junit.jupiter.version}</version> - <scope>test</scope> - </dependency> - <!-- junit 5 --> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-api</artifactId> - <version>${junit.jupiter.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-engine</artifactId> - <version>${junit.jupiter.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.platform</groupId> - <artifactId>junit-platform-commons</artifactId> - <version>${junit.platform.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.platform</groupId> - <artifactId>junit-platform-launcher</artifactId> - <version>${junit.platform.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.platform</groupId> - <artifactId>junit-platform-runner</artifactId> - <version>${junit.platform.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-params</artifactId> - <version>${junit.jupiter.version}</version> - <scope>test</scope> - </dependency> - <!-- jgiven --> - <dependency> - <groupId>com.tngtech.jgiven</groupId> - <artifactId>jgiven-html5-report</artifactId> - <version>${jgiven.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.jgiven</groupId> - <artifactId>jgiven-junit</artifactId> - <version>${jgiven.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.tngtech.jgiven</groupId> - <artifactId>jgiven-junit5</artifactId> - <version>${jgiven.version}</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <defaultGoal>clean package</defaultGoal> - - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.7.0</version> - </plugin> - - <!-- fat jar --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-assembly-plugin</artifactId> - <version>3.1.0</version> - <configuration> - <finalName>${project.artifactId}-${project.version}-all</finalName> - <!-- - <descriptors> - <descriptor>${project.basedir}/.mvn/assembly.xml</descriptor> - </descriptors> - --> - <appendAssemblyId>false</appendAssemblyId> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - <archive> - <manifest> - <mainClass>daggerok.App</mainClass> - </manifest> - </archive> - </configuration> - <executions> - <execution> - <id>assemble-jar-with-dependencies</id> - <phase>package</phase> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - - <!-- junit --> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <version>2.21.0</version> - <dependencies> - <dependency> - <groupId>org.junit.platform</groupId> - <artifactId>junit-platform-surefire-provider</artifactId> - <version>${junit.platform.version}</version> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-engine</artifactId> - <version>${junit.jupiter.version}</version> - </dependency> - <dependency> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - <version>${junit.jupiter.version}</version> - </dependency> - </dependencies> - <configuration> - <properties> - <!-- - <includeTags>acceptance | !feature-a</includeTags> - <excludeTags>integration, regression</excludeTags> - <configurationParameters> - junit.jupiter.conditions.deactivate = * - junit.jupiter.extensions.autodetection.enabled = true - junit.jupiter.testinstance.lifecycle.default = per_class - </configurationParameters> - --> - </properties> - </configuration> - </plugin> - - <!-- jgiven: `mvn verify` --> - <plugin> - <groupId>com.tngtech.jgiven</groupId> - <artifactId>jgiven-maven-plugin</artifactId> - <version>${jgiven.version}</version> - <executions> - <execution> - <goals> - <goal>report</goal> - </goals> - </execution> - </executions> - <configuration> - <format>html</format> - <outputDirectory>${project.build.directory}/jgiven-report</outputDirectory> - </configuration> - </plugin> - </plugins> - </build> - - <!-- generate findbugs html report `target/site/findbugs.html as part of maven-project-info-report `mvn verify site` --> - <reporting> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-site-plugin</artifactId> - <version>3.6</version> - <configuration> - <reportPlugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>findbugs-maven-plugin</artifactId> - <configuration> - <!-- specify classes for analysis --> - <onlyAnalyze>*daggerok*</onlyAnalyze> - </configuration> - </plugin> - </reportPlugins> - </configuration> - </plugin> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>findbugs-maven-plugin</artifactId> - <version>3.0.5</version> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-project-info-reports-plugin</artifactId> - <version>2.9</version> - <configuration> - <skip>true</skip> - </configuration> - </plugin> - </plugins> - </reporting> - - <!-- deploy `mvn deploy` --> - <distributionManagement> - <repository> - <id>local-repo</id> - <url>file://${project.basedir}/target/local-repo</url> - </repository> - </distributionManagement> - - <profiles> - <profile> - <id>docker</id> - <build> - <plugins> - <plugin> - <groupId>com.dkanejs.maven.plugins</groupId> - <artifactId>docker-compose-maven-plugin</artifactId> - <version>1.0.1</version> - <executions> - <execution> - <id>up</id> - <!--<phase>process-resources</phase>--> - <phase>verify</phase> - <goals> - <goal>up</goal> - </goals> - </execution> - <execution> - <id>down</id> - <!--<phase>test</phase>--> - <phase>verify</phase> - <goals> - <goal>down</goal> - </goals> - </execution> - </executions> - <configuration> - <composeFile>${project.basedir}/docker-compose-maven.yaml</composeFile> - <detachedMode>true</detachedMode> - <removeVolumes>true</removeVolumes> - <detail>true</detail> - </configuration> - </plugin> - </plugins> - </build> - </profile> - - <profile> - <id>docs</id> - <build> - <plugins> - <plugin> - <groupId>org.asciidoctor</groupId> - <artifactId>asciidoctor-maven-plugin</artifactId> - <version>1.5.6</version> - <dependencies> - <dependency> - <groupId>org.asciidoctor</groupId> - <artifactId>asciidoctorj-pdf</artifactId> - <version>1.5.0-alpha.16</version> - </dependency> - <dependency> - <groupId>org.asciidoctor</groupId> - <artifactId>asciidoctorj-diagram</artifactId> - <version>1.5.4</version> - </dependency> - </dependencies> - <configuration> - <outputDirectory>target/generated-docs</outputDirectory> - <sourceDirectory>docs</sourceDirectory> - <relativeBaseDir>true</relativeBaseDir> - <headerFooter>true</headerFooter> - <imagesDir>.</imagesDir><!-- Don't know why, but yes - use base sources dir... --> - <sourceHighlighter>highlightjs</sourceHighlighter> - <attributes> - <toc>left</toc> - <linkcss>false</linkcss> - <doctype>book</doctype> - <ruby>erubis</ruby> - <encoding>${project.build.sourceEncoding}</encoding> - <linkattrs>true</linkattrs> - <numbered>true</numbered> - <sectanchors>true</sectanchors> - <sectlink>true</sectlink> - <idprefix/> - <docinfo1/> - <icons>font</icons> - <idseparator>-</idseparator> - <setanchors>true</setanchors> - <toc-title>Table of Contents</toc-title> - <project-name>${project.artifactId}</project-name> - <root-project-name>${project.artifactId}</root-project-name> - <project-version>${project.version}</project-version> - <github-url>https://github.com/daggerok/${project.artifactId}</github-url> - </attributes> - </configuration> - <executions> - <execution> - <id>output-html</id> - <phase>generate-resources</phase> - <goals> - <goal>process-asciidoc</goal> - </goals> - <configuration> - <backend>html</backend> - </configuration> - </execution> - <execution> - <id>output-docbook</id> - <phase>generate-resources</phase> - <goals> - <goal>process-asciidoc</goal> - </goals> - <configuration> - <backend>docbook</backend> - </configuration> - </execution> - <execution> - <id>output-pdf-doc</id> - <phase>generate-resources</phase> - <goals> - <goal>process-asciidoc</goal> - </goals> - <configuration> - <backend>pdf</backend> - <sourceHighlighter>coderay</sourceHighlighter> - <requires> - <require>asciidoctor-diagram</require> - <require>coderay</require> - </requires> - <attributes> - <icons>font</icons> - <pagenums/> - </attributes> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - - <defaultGoal>clean process-resources</defaultGoal> - </build> - </profile> - </profiles> -</project> diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index ead6ed0..0000000 --- a/settings.gradle +++ /dev/null @@ -1,3 +0,0 @@ -rootProject.name = 'java-examples' -enableFeaturePreview 'STABLE_PUBLISHING' -include 'docs' diff --git a/src/main/java/daggerok/App.java b/src/main/java/daggerok/App.java deleted file mode 100644 index 81fa5f6..0000000 --- a/src/main/java/daggerok/App.java +++ /dev/null @@ -1,10 +0,0 @@ -package daggerok; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class App { - public static void main(String[] args) { - log.info("yo!"); - } -} diff --git a/src/main/java/daggerok/java7/predicate/Java7Predicate.java b/src/main/java/daggerok/java7/predicate/Java7Predicate.java deleted file mode 100644 index 5350f26..0000000 --- a/src/main/java/daggerok/java7/predicate/Java7Predicate.java +++ /dev/null @@ -1,43 +0,0 @@ -package daggerok.java7.predicate; - -import lombok.RequiredArgsConstructor; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import static java.util.Objects.nonNull; -//tag::content[] -public class Java7Predicate { - - public interface MyPredicate { - boolean test(final String value); - } - - @RequiredArgsConstructor - public static class Is implements MyPredicate { - final String value; - - @Override - public boolean test(String value) { - return value != null && value.contains(this.value); - } - } - - public static class IsRed implements MyPredicate { - @Override - public boolean test(final String value) { - return nonNull(value) && value.toLowerCase().contains("red"); - } - } - - public static void sideEffect(final MyPredicate predicate) { - final List<String> list = Arrays.asList("ololo", "trololo", "red", "blue", "green", "red devil"); - for (String i : list) { - if (predicate.test(i)) { - System.out.println("i = " + i); - } - } - } -} -//end::content[] diff --git a/src/main/java/lombok.config b/src/main/java/lombok.config deleted file mode 100644 index d959b09..0000000 --- a/src/main/java/lombok.config +++ /dev/null @@ -1 +0,0 @@ -lombok.var.flagUsage = ALLOW diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml deleted file mode 100644 index bf92a14..0000000 --- a/src/main/resources/logback.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<configuration> - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <!-- - %black, %red, %green, %yellow, %blue, %magenta, %cyan, %white, %gray, %boldRed, - %boldGreen, %boldYellow, %boldBlue, %boldMagenta, %boldCyan, %boldWhite, %highlight - --> - <!--<pattern>faint(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) [%-40.40logger{10}] - %msg%n</pattern>--> - <!--<pattern>%gray(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta(%thread{10}) [ %cyan(%-25.25logger{24})] - %boldWhite(%msg%n)</pattern>--> - <pattern>%boldWhite(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %magenta(%-10.10thread{10}) [ %cyan(%-25.25logger{25}) ] - %gray(%msg%n)</pattern> - </encoder> - </appender> - <root level="info"> - <appender-ref ref="STDOUT"/> - </root> -</configuration> diff --git a/src/test/java/daggerok/AppJUnit4Test.java b/src/test/java/daggerok/AppJUnit4Test.java deleted file mode 100644 index bdee874..0000000 --- a/src/test/java/daggerok/AppJUnit4Test.java +++ /dev/null @@ -1,19 +0,0 @@ -package daggerok; - -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.is; - -public class AppJUnit4Test { - - @Test - public void testPositive() { - assertThat(true, is(true)); - } - - @Test(expected = AssertionError.class) - public void testNegative() { - assertThat(false, is(true)); - } -} diff --git a/src/test/java/daggerok/extensions/CaptureSystemOutput.java b/src/test/java/daggerok/extensions/CaptureSystemOutput.java deleted file mode 100644 index 6afba8d..0000000 --- a/src/test/java/daggerok/extensions/CaptureSystemOutput.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2012-2017 the original author or authors. - * - * 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. - */ - -// origina located here: -// https://github.com/sbrannen/junit5-demo/blob/master/src/test/java/extensions/CaptureSystemOutput.java -package daggerok.extensions; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.AllOf.allOf; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintStream; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; -import java.util.ArrayList; -import java.util.List; - -import org.hamcrest.Matcher; -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.ExtensionContext.Namespace; -import org.junit.jupiter.api.extension.ExtensionContext.Store; -import org.junit.jupiter.api.extension.ParameterContext; -import org.junit.jupiter.api.extension.ParameterResolver; -import org.junit.platform.commons.support.ReflectionSupport; - -/** - * {@code @CaptureSystemOutput} is a JUnit JUpiter extension for capturing - * output to {@code System.out} and {@code System.err} with expectations - * supported via Hamcrest matchers. - * - * <h4>Example Usage</h4> - * - * <pre style="code"> - * {@literal @}Test - * {@literal @}CaptureSystemOutput - * void systemOut(OutputCapture outputCapture) { - * outputCapture.expect(containsString("System.out!")); - * - * System.out.println("Printed to System.out!"); - * } - * - * {@literal @}Test - * {@literal @}CaptureSystemOutput - * void systemErr(OutputCapture outputCapture) { - * outputCapture.expect(containsString("System.err!")); - * - * System.err.println("Printed to System.err!"); - * } - * </pre> - * - * <p>Based on code from Spring Boot's - * <a href="https://github.com/spring-projects/spring-boot/blob/d3c34ee3d1bfd3db4a98678c524e145ef9bca51c/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/rule/OutputCapture.java">OutputCapture</a> - * rule for JUnit 4 by Phillip Webb and Andy Wilkinson. - * - * @author Sam Brannen - * @author Phillip Webb - * @author Andy Wilkinson - */ -@Target({ TYPE, METHOD }) -@Retention(RUNTIME) -@ExtendWith(CaptureSystemOutput.Extension.class) -public @interface CaptureSystemOutput { - - class Extension implements BeforeEachCallback, AfterEachCallback, ParameterResolver { - - @Override - public void beforeEach(ExtensionContext context) throws Exception { - getOutputCapture(context).captureOutput(); - } - - @Override - public void afterEach(ExtensionContext context) throws Exception { - OutputCapture outputCapture = getOutputCapture(context); - try { - if (!outputCapture.matchers.isEmpty()) { - String output = outputCapture.toString(); - assertThat(output, allOf(outputCapture.matchers)); - } - } - finally { - outputCapture.releaseOutput(); - } - } - - @Override - public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) { - boolean isTestMethodLevel = extensionContext.getTestMethod().isPresent(); - boolean isOutputCapture = parameterContext.getParameter().getType() == OutputCapture.class; - return isTestMethodLevel && isOutputCapture; - } - - @Override - public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) { - return getOutputCapture(extensionContext); - } - - private OutputCapture getOutputCapture(ExtensionContext context) { - return getOrComputeIfAbsent(getStore(context), OutputCapture.class); - } - - private <V> V getOrComputeIfAbsent(Store store, Class<V> type) { - return store.getOrComputeIfAbsent(type, ReflectionSupport::newInstance, type); - } - - private Store getStore(ExtensionContext context) { - return context.getStore(Namespace.create(getClass(), context.getRequiredTestMethod())); - } - - } - - /** - * {@code OutputCapture} captures output to {@code System.out} and {@code System.err}. - * - * <p>To obtain an instance of {@code OutputCapture}, declare a parameter of type - * {@code OutputCapture} in a JUnit Jupiter {@code @Test}, {@code @BeforeEach}, - * or {@code @AfterEach} method. - * - * <p>{@linkplain #expect Expectations} are supported via Hamcrest matchers. - * - * <p>To obtain all output to {@code System.out} and {@code System.err}, simply - * invoke {@link #toString()}. - * - * @author Phillip Webb - * @author Andy Wilkinson - * @author Sam Brannen - */ - static class OutputCapture { - - private final List<Matcher<? super String>> matchers = new ArrayList<>(); - - private CaptureOutputStream captureOut; - - private CaptureOutputStream captureErr; - - private ByteArrayOutputStream copy; - - void captureOutput() { - this.copy = new ByteArrayOutputStream(); - this.captureOut = new CaptureOutputStream(System.out, this.copy); - this.captureErr = new CaptureOutputStream(System.err, this.copy); - System.setOut(new PrintStream(this.captureOut)); - System.setErr(new PrintStream(this.captureErr)); - } - - void releaseOutput() { - System.setOut(this.captureOut.getOriginal()); - System.setErr(this.captureErr.getOriginal()); - this.copy = null; - } - - private void flush() { - try { - this.captureOut.flush(); - this.captureErr.flush(); - } - catch (IOException ex) { - // ignore - } - } - - /** - * Verify that the captured output is matched by the supplied {@code matcher}. - * - * <p>Verification is performed after the test method has executed. - * - * @param matcher the matcher - */ - public void expect(Matcher<? super String> matcher) { - this.matchers.add(matcher); - } - - /** - * Return all captured output to {@code System.out} and {@code System.err} - * as a single string. - */ - @Override - public String toString() { - flush(); - return this.copy.toString(); - } - - private static class CaptureOutputStream extends OutputStream { - - private final PrintStream original; - - private final OutputStream copy; - - CaptureOutputStream(PrintStream original, OutputStream copy) { - this.original = original; - this.copy = copy; - } - - PrintStream getOriginal() { - return this.original; - } - - @Override - public void write(int b) throws IOException { - this.copy.write(b); - this.original.write(b); - this.original.flush(); - } - - @Override - public void write(byte[] b) throws IOException { - write(b, 0, b.length); - } - - @Override - public void write(byte[] b, int off, int len) throws IOException { - this.copy.write(b, off, len); - this.original.write(b, off, len); - } - - @Override - public void flush() throws IOException { - this.copy.flush(); - this.original.flush(); - } - - } - - } - -} diff --git a/src/test/java/daggerok/java7/predicate/Java7PredicateTest.java b/src/test/java/daggerok/java7/predicate/Java7PredicateTest.java deleted file mode 100644 index 0979fa8..0000000 --- a/src/test/java/daggerok/java7/predicate/Java7PredicateTest.java +++ /dev/null @@ -1,33 +0,0 @@ -package daggerok.java7.predicate; - -import daggerok.extensions.CaptureSystemOutput; -import lombok.extern.slf4j.Slf4j; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import static daggerok.java7.predicate.Java7Predicate.sideEffect; -import static org.junit.jupiter.api.Assertions.*; - -//tag::content[] -@Slf4j -@CaptureSystemOutput -@DisplayName("test predicate API: java 7") -class Java7PredicateTest { - - @Test - @DisplayName("test positive") - void testPredicate(final CaptureSystemOutput.OutputCapture outputCapture) { - - assertAll(() -> { - - sideEffect(new Java7Predicate.IsRed()); - Assertions.assertThat(outputCapture.toString()) - .contains("i = red", "i = red devil"); - - sideEffect(new Java7Predicate.Is("green")); - Assertions.assertThat(outputCapture.toString().contains("t = green")); - }); - } -} -//end::content[]