diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index ba5b292..0000000 --- a/.editorconfig +++ /dev/null @@ -1,19 +0,0 @@ -# .editorconfig -# http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 2 -end_of_line = lf -indent_style = space -max_line_length = 120 -trim_trailing_whitespace = true - -[*.md] -max_line_length = 80 -trim_trailing_whitespace = false - -[Makefile] -indent_style = tab diff --git a/.github/workflows/broken_links_checker.yml b/.github/workflows/broken_links_checker.yml index 6a69306..c268e21 100644 --- a/.github/workflows/broken_links_checker.yml +++ b/.github/workflows/broken_links_checker.yml @@ -4,13 +4,21 @@ on: schedule: - cron: "0 5 * * *" push: + branches: + - main + pull_request: jobs: linkChecker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - name: Configure broken links checker + run: | + mkdir -p ./target + echo '{ "aliveStatusCodes": [429, 200] }' > ./target/broken_links_checker.json - uses: gaurav-nelson/github-action-markdown-link-check@v1 with: use-quiet-mode: 'yes' - use-verbose-mode: 'yes' \ No newline at end of file + use-verbose-mode: 'yes' + config-file: ./target/broken_links_checker.json \ No newline at end of file diff --git a/.github/workflows/ci-build-next-java.yml b/.github/workflows/ci-build-next-java.yml new file mode 100644 index 0000000..2abe7cb --- /dev/null +++ b/.github/workflows/ci-build-next-java.yml @@ -0,0 +1,37 @@ +name: CI Build next Java + +on: + push: + branches: + - main + pull_request: + +jobs: + java-17-compatibility: + runs-on: ubuntu-latest + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 17 + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Run tests and build with Maven + run: | + mvn --batch-mode --update-snapshots clean package -DtrimStackTrace=false \ + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn + - name: Publish Test Report + uses: scacap/action-surefire-report@v1 + if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index ad822f5..b669a0a 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -1,72 +1,71 @@ name: CI Build on: - - push + push: + branches: + - main + pull_request: jobs: build: - name: Building with Scala ${{ matrix.scala }} + name: Building with Scala ${{ matrix.scala-version }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: - scala: [ 2.12.15, 2.13.6 ] - + include: + - { scala-version: 'scala2.12', project-keeper-skip: true } + - { scala-version: 'scala2.13', project-keeper-skip: false } steps: - - name: Checkout the Repository + - name: Checkout the repository uses: actions/checkout@v2 with: fetch-depth: 0 - - - name: Setup Java and Scala with JDK 11 - uses: olafurpg/setup-scala@v10 + - name: Set up JDK 11 + uses: actions/setup-java@v2 with: + distribution: 'temurin' java-version: 11 - - - name: Cache Local SBT Dependencies + - name: Cache local Maven repository uses: actions/cache@v2 with: - path: | - ~/.sbt - ~/.ivy2/cache - ~/.coursier/cache/v1 - ~/.cache/coursier/v1 - key: ${{ runner.os }}-sbt-cache-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }} + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | - ${{ runner.os }}-sbt-cache- - - - name: Check Formatting - run: sbt ++${{ matrix.scala }} scalafmtSbtCheck scalafmtCheckAll - - - name: Run CI - run: ./scripts/ci.sh - env: - SCALA_VERSION: ${{ matrix.scala }} - - - name: Upload Coverage Results to Coveralls - run: sbt ++${{ matrix.scala }} coveralls - env: - COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - # This required because of the sonarcloud-github-action docker volume mapping. - - name: Prepare for Sonar Cloud Scan - if: startsWith(matrix.scala, '2.13') + ${{ runner.os }}-maven- + - name: Cache SonarCloud packages + uses: actions/cache@v2 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Run scalafix linting run: | - find . -name scoverage.xml -exec sed -i \ - 's#/home/runner/work/import-export-udf-common-scala/import-export-udf-common-scala#/github/workspace#g' {} + - - - name: Sonar Cloud Scan - if: startsWith(matrix.scala, '2.13') - uses: sonarsource/sonarcloud-github-action@master + mvn --batch-mode clean compile test scalafix:scalafix \ + -P${{ matrix.scala-version }} \ + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ + -DtrimStackTrace=false + - name: Run tests and build with Maven + run: | + mvn --batch-mode verify \ + -P${{ matrix.scala-version }} \ + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ + -DtrimStackTrace=false \ + -Dproject-keeper.skip=${{ matrix.project-keeper-skip }} + - name: Publish Test Report + uses: scacap/action-surefire-report@v1 + if: ${{ always() && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' && startsWith(matrix.scala-version, 'scala2.13') }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Sonar analysis + if: ${{ env.SONAR_TOKEN != null && startsWith(matrix.scala-version, 'scala2.13') }} + run: | + mvn --batch-mode scoverage:report sonar:sonar \ + -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ + -DtrimStackTrace=false \ + -Dsonar.organization=exasol \ + -Dsonar.host.url=https://sonarcloud.io \ + -Dsonar.login=$SONAR_TOKEN env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - - name: Cleanup - run: | - rm -rf "$HOME/.ivy2/local" || true - find $HOME/Library/Caches/Coursier/v1 -name "ivydata-*.properties" -delete || true - find $HOME/.ivy2/cache -name "ivydata-*.properties" -delete || true - find $HOME/.cache/coursier/v1 -name "ivydata-*.properties" -delete || true - find $HOME/.coursier/cache -name "*.lock" -delete || true - find $HOME/.sbt -name "*.lock" -delete || true + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/dependencies_check.yml b/.github/workflows/dependencies_check.yml new file mode 100644 index 0000000..d28c0b4 --- /dev/null +++ b/.github/workflows/dependencies_check.yml @@ -0,0 +1,26 @@ +name: Dependencies Check + +on: + schedule: + - cron: "0 2 * * *" + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 11 + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Checking dependencies for vulnerabilities + run: mvn org.sonatype.ossindex.maven:ossindex-maven-plugin:audit -f pom.xml \ No newline at end of file diff --git a/.github/workflows/release_droid_prepare_original_checksum.yml b/.github/workflows/release_droid_prepare_original_checksum.yml new file mode 100644 index 0000000..1ce35e5 --- /dev/null +++ b/.github/workflows/release_droid_prepare_original_checksum.yml @@ -0,0 +1,44 @@ +name: Release Droid - Prepare Original Checksum + +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - { scala-version: 'scala2.12', project-keeper-skip: true } + - { scala-version: 'scala2.13', project-keeper-skip: false } + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 11 + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Run tests and build with Maven for ${{ matrix.scala-version }} + run: | + mvn --batch-mode clean verify --file pom.xml \ + -P${{ matrix.scala-version }} \ + -Dproject-keeper.skip=${{ matrix.project-keeper-skip }} + - name: Prepare checksum + run: find target -maxdepth 1 -name *.jar -exec sha256sum "{}" + > original_checksum + - name: Upload checksum to the artifactory + uses: actions/upload-artifact@v2 + with: + name: original_checksum + retention-days: 5 + path: original_checksum \ No newline at end of file diff --git a/.github/workflows/release_droid_print_quick_checksum.yml b/.github/workflows/release_droid_print_quick_checksum.yml new file mode 100644 index 0000000..9eb5c00 --- /dev/null +++ b/.github/workflows/release_droid_print_quick_checksum.yml @@ -0,0 +1,39 @@ +name: Release Droid - Print Quick Checksum + +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - { scala-version: 'scala2.12', project-keeper-skip: true } + - { scala-version: 'scala2.13', project-keeper-skip: false } + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 11 + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Build with Maven skipping tests for ${{ matrix.scala-version }} + run: | + mvn --batch-mode clean verify \ + -P${{ matrix.scala-version }} \ + -DskipTests \ + -Dproject-keeper.skip=${{ matrix.project-keeper-skip }} + - name: Print checksum + run: echo 'checksum_start==';find target -maxdepth 1 -name *.jar -exec sha256sum "{}" + | xargs;echo '==checksum_end' diff --git a/.github/workflows/release_droid_release_on_maven_central.yml b/.github/workflows/release_droid_release_on_maven_central.yml new file mode 100644 index 0000000..4e05e8f --- /dev/null +++ b/.github/workflows/release_droid_release_on_maven_central.yml @@ -0,0 +1,47 @@ +name: Release Droid - Release On Maven Central + +on: + workflow_dispatch: + +jobs: + publish: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - { scala-version: 'scala2.12', project-keeper-skip: true } + - { scala-version: 'scala2.13', project-keeper-skip: false } + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Maven Central Repository + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 11 + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + - name: Import GPG Key + run: gpg --import --batch <(echo "${{ secrets.OSSRH_GPG_SECRET_KEY }}") + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Publish to Central Repository for ${{ matrix.scala-version }} + run: | + mvn clean deploy \ + -P${{ matrix.scala-version }} \ + -Dgpg.skip=false \ + -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \ + -DskipTests \ + -Dproject-keeper.skip=${{ matrix.project-keeper-skip }} + env: + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} diff --git a/.github/workflows/release_droid_upload_github_release_assets.yml b/.github/workflows/release_droid_upload_github_release_assets.yml new file mode 100644 index 0000000..c76a142 --- /dev/null +++ b/.github/workflows/release_droid_upload_github_release_assets.yml @@ -0,0 +1,58 @@ +name: Release Droid - Upload GitHub Release Assets + +on: + workflow_dispatch: + inputs: + upload_url: + description: 'Assets upload URL' + required: true + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - { scala-version: 'scala2.12', project-keeper-skip: true } + - { scala-version: 'scala2.13', project-keeper-skip: false } + steps: + - name: Checkout the repository + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: 11 + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Build with Maven skipping tests for ${{ matrix.scala-version }} + run: | + mvn --batch-mode clean verify \ + -P${{ matrix.scala-version }} \ + -DskipTests \ + -Dproject-keeper.skip=${{ matrix.project-keeper-skip }} + - name: Generate sha256sum files + run: find target -maxdepth 1 -name *.jar -exec bash -c 'sha256sum {} > {}.sha256' \; + - name: Upload assets to the GitHub release draft + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ github.event.inputs.upload_url }} + asset_path: target/*.jar + - name: Upload sha256sum files + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ github.event.inputs.upload_url }} + asset_path: target/*.sha256 + - name: Upload error-code-report + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ github.event.inputs.upload_url }} + asset_path: target/error_code_report.json \ No newline at end of file diff --git a/.gitignore b/.gitignore index 257cc15..2ee6f23 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,8 @@ project/.gnupg/local* # sbt +target project/target -target/ .history .bsp .bloop @@ -14,25 +14,39 @@ metals.sbt # Java *.class +dependency-reduced-pom.xml +pom.xml.versionsBackup +.dbeaver* +.directory +local + +# Python +venv/ # Logs +~* *.log +**/*.log log/ logs/ +*.lock +*.orig # Temporary files *~ *.bak *.old +*.swp *.tmp nohup.out -tmp/ +tmp +*.md.html # vim .*.sw[a-z] # IntelliJ -.idea/ +.idea .idea_modules/ *.iml *.ipr @@ -43,7 +57,6 @@ tmp/ .classpath .project .scala_dependencies -.settings/ *.sc # Ensime diff --git a/.scalafix.conf b/.scalafix.conf new file mode 100644 index 0000000..6093ef3 --- /dev/null +++ b/.scalafix.conf @@ -0,0 +1,44 @@ +rules = [ + ExplicitResultTypes + Disable + DisableSyntax + LeakingImplicitClassVal + MissingFinal + NoAutoTupling + NoValInForComprehension + ProcedureSyntax + OrganizeImports + RemoveUnused +] + +Disable { + ifSynthetic = [ + "scala/Option.option2Iterable" + "scala/Predef.any2stringadd" + ] +} + +DisableSyntax { + noFinalize = true + noImplicitConversion = true + noImplicitObject = true + noSemicolons = true + noTabs = true + noValPatterns = true + noXml = true +} + +ExplicitResultTypes { + fatalWarnings = true + skipSimpleDefinitions = false +} + +OrganizeImports { + groups = ["re:javax?\\.", "scala.", "com.exasol.", "*"] + groupExplicitlyImportedImplicitsSeparately = true +} + +RemoveUnused { + // handled by OrganizeImports + imports = false +} diff --git a/.scalafmt.conf b/.scalafmt.conf index b07d2f4..0a70cfe 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,5 +1,6 @@ -version = 3.0.1 +version = 3.1.2 project.git = true +runner.dialect = scala213 maxColumn = 120 docstrings.style = Asterisk diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8b5a9aa --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,502 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.processAnnotations=enabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false +org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false +org.eclipse.jdt.core.formatter.align_with_spaces=false +org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant=49 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=49 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=49 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=49 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=49 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=0 +org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=49 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assertion_message=0 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 +org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_record_components=16 +org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_type_annotations=0 +org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 +org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true +org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false +org.eclipse.jdt.core.formatter.comment.indent_root_tags=false +org.eclipse.jdt.core.formatter.comment.indent_tag_description=false +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert +org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false +org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.lineSplit=120 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0 +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0 +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0 +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.text_block_indentation=0 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true +org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true +org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator=true +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true +org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true +org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true +org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..1add06a --- /dev/null +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,205 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=true +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_functional_interfaces=true +cleanup.convert_to_enhanced_for_loop=true +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.insert_inferred_type_arguments=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=true +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=true +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=false +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=true +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_redundant_modifiers=false +cleanup.remove_redundant_semicolons=true +cleanup.remove_redundant_type_arguments=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=true +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_anonymous_class_creation=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_lambda=true +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=false +cleanup.use_this_for_non_static_method_access=false +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_Exasol +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_Exasol +formatter_settings_version=21 +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=java;javax;org;com; +org.eclipse.jdt.ui.ondemandthreshold=3 +org.eclipse.jdt.ui.staticondemandthreshold=3 +sp_cleanup.add_all=false +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=true +sp_cleanup.always_use_this_for_non_static_field_access=true +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.array_with_curly=false +sp_cleanup.arrays_fill=false +sp_cleanup.bitwise_conditional_expression=false +sp_cleanup.boolean_literal=false +sp_cleanup.boolean_value_rather_than_comparison=false +sp_cleanup.break_loop=false +sp_cleanup.collection_cloning=false +sp_cleanup.comparing_on_criteria=false +sp_cleanup.comparison_statement=false +sp_cleanup.controlflow_merge=false +sp_cleanup.convert_functional_interfaces=true +sp_cleanup.convert_to_enhanced_for_loop=true +sp_cleanup.convert_to_enhanced_for_loop_if_loop_var_used=false +sp_cleanup.convert_to_switch_expressions=false +sp_cleanup.correct_indentation=true +sp_cleanup.do_while_rather_than_while=false +sp_cleanup.double_negation=false +sp_cleanup.else_if=false +sp_cleanup.embedded_if=false +sp_cleanup.evaluate_nullable=false +sp_cleanup.extract_increment=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.hash=false +sp_cleanup.if_condition=false +sp_cleanup.insert_inferred_type_arguments=false +sp_cleanup.instanceof=false +sp_cleanup.instanceof_keyword=false +sp_cleanup.invert_equals=false +sp_cleanup.join=false +sp_cleanup.lazy_logical_operator=false +sp_cleanup.make_local_variable_final=true +sp_cleanup.make_parameters_final=true +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=true +sp_cleanup.map_cloning=false +sp_cleanup.merge_conditional_blocks=false +sp_cleanup.multi_catch=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=false +sp_cleanup.no_string_creation=false +sp_cleanup.no_super=false +sp_cleanup.number_suffix=false +sp_cleanup.objects_equals=false +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false +sp_cleanup.operand_factorization=false +sp_cleanup.organize_imports=true +sp_cleanup.overridden_assignment=false +sp_cleanup.plain_replacement=false +sp_cleanup.precompile_regex=false +sp_cleanup.primitive_comparison=false +sp_cleanup.primitive_parsing=false +sp_cleanup.primitive_rather_than_wrapper=false +sp_cleanup.primitive_serialization=false +sp_cleanup.pull_out_if_from_if_else=false +sp_cleanup.pull_up_assignment=false +sp_cleanup.push_down_negation=false +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=true +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.reduce_indentation=false +sp_cleanup.redundant_comparator=false +sp_cleanup.redundant_falling_through_block_end=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_modifiers=false +sp_cleanup.remove_redundant_semicolons=true +sp_cleanup.remove_redundant_type_arguments=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_array_creation=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.return_expression=false +sp_cleanup.simplify_lambda_expression_and_method_ref=false +sp_cleanup.single_used_field=false +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.standard_comparison=false +sp_cleanup.static_inner_class=false +sp_cleanup.strictly_equal_or_different=false +sp_cleanup.stringbuffer_to_stringbuilder=false +sp_cleanup.stringbuilder=false +sp_cleanup.stringbuilder_for_local_vars=false +sp_cleanup.substring=false +sp_cleanup.switch=false +sp_cleanup.system_property=false +sp_cleanup.system_property_boolean=false +sp_cleanup.system_property_file_encoding=false +sp_cleanup.system_property_file_separator=false +sp_cleanup.system_property_line_separator=false +sp_cleanup.system_property_path_separator=false +sp_cleanup.ternary_operator=false +sp_cleanup.try_with_resource=false +sp_cleanup.unlooped_while=false +sp_cleanup.unreachable_block=false +sp_cleanup.use_anonymous_class_creation=false +sp_cleanup.use_autoboxing=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_directly_map_method=false +sp_cleanup.use_lambda=true +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_string_is_blank=false +sp_cleanup.use_this_for_non_static_field_access=true +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=false +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true +sp_cleanup.use_unboxing=false +sp_cleanup.use_var=false +sp_cleanup.useless_continue=false +sp_cleanup.useless_return=false +sp_cleanup.valueof_rather_than_instantiation=false diff --git a/README.md b/README.md index 0c8de55..0a299d0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ # Import Export UDF Common Scala [![Build Status](https://github.com/exasol/import-export-udf-common-scala/actions/workflows/ci-build.yml/badge.svg)](https://github.com/exasol/import-export-udf-common-scala/actions/workflows/ci-build.yml) -[![Coveralls](https://img.shields.io/coveralls/exasol/import-export-udf-common-scala.svg)](https://coveralls.io/github/exasol/import-export-udf-common-scala) -[![Maven Central](https://img.shields.io/maven-central/v/com.exasol/import-export-udf-common-scala_2.13)](https://search.maven.org/artifact/com.exasol/import-export-udf-common-scala_2.13) +[![Maven Central](https://img.shields.io/maven-central/v/com.exasol/import-export-udf-common-scala)](https://search.maven.org/artifact/com.exasol/import-export-udf-common-scala_2.13) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Aimport-export-udf-common-scala&metric=alert_status)](https://sonarcloud.io/dashboard?id=com.exasol%3Aimport-export-udf-common-scala) @@ -16,8 +15,7 @@ [![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Aimport-export-udf-common-scala&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=com.exasol%3Aimport-export-udf-common-scala) [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=com.exasol%3Aimport-export-udf-common-scala&metric=ncloc)](https://sonarcloud.io/dashboard?id=com.exasol%3Aimport-export-udf-common-scala) -Common libraries for Exasol IMPORT and EXPORT user defined functions in Scala -programming language. +Common libraries for Exasol IMPORT and EXPORT user defined functions in Scala programming language. ## Features @@ -27,69 +25,8 @@ programming language. ## Information for Users - [Changelog](doc/changes/changelog.md) +- [Dependencies](dependencies.md) ## Information for Contributors -* [Developer Guide](doc/development/developer_guide.md) - -## Dependencies - -### Runtime Dependencies - -| Dependency | Purpose | License | -|---------------------------------------------|-----------------------------------------------------------------|--------------------| -| [Exasol Script API][exasol-script-api-link] | Accessing Exasol IMPORT / EXPORT API | MIT License | -| [Apache Avro][apache-avro-link] | Integration support for Avro format | Apache License 2.0 | -| [Scala Logging Library][scala-logging-link] | Scala logging library wrapping SLF4J | Apache License 2.0 | - -### Test Dependencies - -| Dependency | Purpose | License | -|---------------------------------------------|-----------------------------------------------------------------|--------------------| -| [Scalatest][scalatest-link] | Testing tool for Scala and Java developers | Apache License 2.0 | -| [Scalatest Plus][scalatestplus-link] | Integration support between Scalatest and Mockito | Apache License 2.0 | -| [Mockito Core][mockitocore-link] | Mocking framework for unit tests | MIT License | - -### Compiler Plugin Dependencies - -These plugins help with project development. - -| Plugin Name | Purpose | License | -|---------------------------------------------|-----------------------------------------------------------------|----------------------| -| [SBT Coursier][sbt-coursier-link] | Pure Scala artifact fetching | Apache License 2.0 | -| [SBT Wartremover][sbt-wartremover-link] | Flexible Scala code linting tool | Apache License 2.0 | -| [SBT Wartremover Contrib][sbt-wcontrib-link]| Community managed additional warts for wartremover | Apache License 2.0 | -| [SBT Assembly][sbt-assembly-link] | Create fat jars with all project dependencies | MIT License | -| [SBT API Mappings][sbt-apimapping-link] | A plugin that fetches API mappings for common Scala libraries | Apache License 2.0 | -| [SBT Scoverage][sbt-scoverage-link] | Integrates the scoverage code coverage library | Apache License 2.0 | -| [SBT Coveralls][sbt-coveralls-link] | Uploads scala code coverage results to https://coveralls.io | Apache License 2.0 | -| [SBT Updates][sbt-updates-link] | Checks Maven and Ivy repositories for dependency updates | BSD 3-Clause License | -| [SBT Scalafmt][sbt-scalafmt-link] | A plugin for https://scalameta.org/scalafmt/ formatting | Apache License 2.0 | -| [SBT Scalastyle][sbt-style-link] | A plugin for http://www.scalastyle.org/ Scala style checker | Apache License 2.0 | -| [SBT Dependency Graph][sbt-depgraph-link] | A plugin for visualizing dependency graph of your project | Apache License 2.0 | -| [SBT Explicit Dependencies][sbt-expdep-link]| Checks which direct libraries required to compile your code | Apache License 2.0 | -| [SBT Sonatype][sbt-sonatype-link] | Sbt plugin for publishing Scala projects to the Maven central | Apache License 2.0 | -| [SBT PGP][sbt-pgp-link] | PGP plugin for `sbt` | BSD 3-Clause License | -| [SBT Git][sbt-git-link] | A plugin for Git integration, used to version the release jars | BSD 2-Clause License | - -[apache-avro-link]: https://avro.apache.org/ -[scala-logging-link]: https://github.com/lightbend/scala-logging -[exasol-script-api-link]: https://docs.exasol.com/database_concepts/udf_scripts.htm -[scalatest-link]: http://www.scalatest.org/ -[scalatestplus-link]: https://github.com/scalatest/scalatestplus-mockito -[mockitocore-link]: https://site.mockito.org/ -[sbt-coursier-link]: https://github.com/coursier/coursier -[sbt-wartremover-link]: http://github.com/puffnfresh/wartremover -[sbt-wcontrib-link]: http://github.com/wartremover/wartremover-contrib -[sbt-assembly-link]: https://github.com/sbt/sbt-assembly -[sbt-apimapping-link]: https://github.com/ThoughtWorksInc/sbt-api-mappings -[sbt-scoverage-link]: http://github.com/scoverage/sbt-scoverage -[sbt-coveralls-link]: https://github.com/scoverage/sbt-coveralls -[sbt-updates-link]: http://github.com/rtimush/sbt-updates -[sbt-scalafmt-link]: https://github.com/lucidsoftware/neo-sbt-scalafmt -[sbt-style-link]: https://github.com/scalastyle/scalastyle-sbt-plugin -[sbt-depgraph-link]: https://github.com/jrudolph/sbt-dependency-graph -[sbt-sonatype-link]: https://github.com/xerial/sbt-sonatype -[sbt-pgp-link]: https://github.com/xerial/sbt-sonatype -[sbt-git-link]: https://github.com/sbt/sbt-git -[sbt-expdep-link]: https://github.com/cb372/sbt-explicit-dependencies +- [Developer Guide](doc/development/developer_guide.md) diff --git a/build.sbt b/build.sbt deleted file mode 100644 index 5fa086c..0000000 --- a/build.sbt +++ /dev/null @@ -1,29 +0,0 @@ -import com.exasol.common.sbt.Dependencies -import com.exasol.common.sbt.Settings - -lazy val orgSettings = Seq( - name := "import-export-udf-common-scala", - description := "Common Import Export Libraries used in Exasol User Defined Functions", - organization := "com.exasol", - organizationHomepage := Some(url("http://www.exasol.com")) -) - -lazy val buildSettings = Seq( - scalaVersion := "2.13.6", - crossScalaVersions := Seq("2.12.15", "2.13.6") -) - -lazy val root = - project - .in(file(".")) - .settings(moduleName := "import-export-udf-common-scala") - .settings(orgSettings) - .settings(buildSettings) - .settings(Settings.projectSettings(scalaVersion)) - .settings( - resolvers ++= Dependencies.ExasolResolvers, - libraryDependencies ++= Dependencies.AllDependencies - ) - .enablePlugins(GitVersioning) - -addCommandAlias("pluginUpdates", ";reload plugins;dependencyUpdates;reload return") diff --git a/dependencies.md b/dependencies.md new file mode 100644 index 0000000..058e5da --- /dev/null +++ b/dependencies.md @@ -0,0 +1,105 @@ + +# Dependencies + +## Compile Dependencies + +| Dependency | License | +| -------------------------------------- | --------------------------------------------- | +| [Scala Library][0] | [Apache-2.0][1] | +| [Java Interface for EXASOL Scripts][2] | [MIT License][3] | +| [error-reporting-java][4] | [MIT][5] | +| [Apache Avro][6] | [Apache License, Version 2.0][7] | +| [jackson-databind][8] | [The Apache Software License, Version 2.0][9] | +| [jackson-module-scala][10] | [The Apache Software License, Version 2.0][7] | +| [SLF4J Simple Binding][12] | [MIT License][13] | +| [scala-logging][14] | [Apache 2.0 License][15] | + +## Test Dependencies + +| Dependency | License | +| --------------------------- | ----------------------------------------- | +| [scalatest][16] | [the Apache License, ASL Version 2.0][17] | +| [scalatestplus-mockito][18] | [Apache-2.0][17] | +| [mockito-core][20] | [The MIT License][21] | + +## Plugin Dependencies + +| Dependency | License | +| ------------------------------------------------------- | --------------------------------------------- | +| [scala-maven-plugin][22] | [Public domain (Unlicense)][23] | +| [Apache Maven Compiler Plugin][24] | [Apache License, Version 2.0][7] | +| [Maven Surefire Plugin][26] | [Apache License, Version 2.0][7] | +| [ScalaTest Maven Plugin][28] | [the Apache License, ASL Version 2.0][17] | +| [Apache Maven Assembly Plugin][30] | [Apache License, Version 2.0][7] | +| [Versions Maven Plugin][32] | [Apache License, Version 2.0][7] | +| [org.sonatype.ossindex.maven:ossindex-maven-plugin][34] | [ASL2][9] | +| [Apache Maven Enforcer Plugin][36] | [Apache License, Version 2.0][7] | +| [OpenFastTrace Maven Plugin][38] | [GNU General Public License v3.0][39] | +| [Apache Maven GPG Plugin][40] | [Apache License, Version 2.0][7] | +| [Apache Maven Deploy Plugin][42] | [Apache License, Version 2.0][7] | +| [Nexus Staging Maven Plugin][44] | [Eclipse Public License][45] | +| [Apache Maven Source Plugin][46] | [Apache License, Version 2.0][7] | +| [Apache Maven Javadoc Plugin][48] | [Apache License, Version 2.0][7] | +| [Reproducible Build Maven Plugin][50] | [Apache 2.0][9] | +| [error-code-crawler-maven-plugin][52] | [MIT][5] | +| [Project keeper maven plugin][54] | [MIT][5] | +| [SCoverage Maven Plugin][56] | [The Apache Software License, Version 2.0][9] | +| [Scalastyle Maven Plugin][58] | [Apache 2.0][15] | +| [spotless-maven-plugin][60] | [The Apache Software License, Version 2.0][7] | +| [scalafix-maven-plugin][62] | [BSD-3-Clause][63] | +| [Apache Maven Clean Plugin][64] | [Apache License, Version 2.0][7] | +| [Apache Maven Resources Plugin][66] | [Apache License, Version 2.0][7] | +| [Apache Maven JAR Plugin][68] | [Apache License, Version 2.0][7] | +| [Apache Maven Install Plugin][70] | [Apache License, Version 2.0][9] | +| [Apache Maven Site Plugin][72] | [Apache License, Version 2.0][7] | + +[54]: https://github.com/exasol/project-keeper-maven-plugin +[56]: https://scoverage.github.io/scoverage-maven-plugin/1.4.1/ +[18]: https://github.com/scalatest/scalatestplus-mockito +[4]: https://github.com/exasol/error-reporting-java +[9]: http://www.apache.org/licenses/LICENSE-2.0.txt +[58]: http://www.scalastyle.org +[26]: https://maven.apache.org/surefire/maven-surefire-plugin/ +[60]: https://github.com/diffplug/spotless +[3]: https://mit-license.org/ +[5]: https://opensource.org/licenses/MIT +[20]: https://github.com/mockito/mockito +[10]: https://github.com/FasterXML/jackson-module-scala +[32]: http://www.mojohaus.org/versions-maven-plugin/ +[24]: https://maven.apache.org/plugins/maven-compiler-plugin/ +[66]: https://maven.apache.org/plugins/maven-resources-plugin/ +[38]: https://github.com/itsallcode/openfasttrace-maven-plugin +[64]: https://maven.apache.org/plugins/maven-clean-plugin/ +[8]: http://github.com/FasterXML/jackson +[42]: https://maven.apache.org/plugins/maven-deploy-plugin/ +[23]: http://unlicense.org/ +[1]: https://www.apache.org/licenses/LICENSE-2.0 +[28]: https://www.scalatest.org/user_guide/using_the_scalatest_maven_plugin +[21]: https://github.com/mockito/mockito/blob/main/LICENSE +[50]: http://zlika.github.io/reproducible-build-maven-plugin +[13]: http://www.opensource.org/licenses/mit-license.php +[63]: https://opensource.org/licenses/BSD-3-Clause +[6]: https://avro.apache.org +[14]: https://github.com/lightbend/scala-logging +[46]: https://maven.apache.org/plugins/maven-source-plugin/ +[12]: http://www.slf4j.org +[62]: https://github.com/evis/scalafix-maven-plugin +[68]: https://maven.apache.org/plugins/maven-jar-plugin/ +[17]: http://www.apache.org/licenses/LICENSE-2.0 +[44]: http://www.sonatype.com/public-parent/nexus-maven-plugins/nexus-staging/nexus-staging-maven-plugin/ +[15]: http://www.apache.org/licenses/LICENSE-2.0.html +[16]: http://www.scalatest.org +[0]: https://www.scala-lang.org/ +[45]: http://www.eclipse.org/legal/epl-v10.html +[72]: https://maven.apache.org/plugins/maven-site-plugin/ +[39]: https://www.gnu.org/licenses/gpl-3.0.html +[7]: https://www.apache.org/licenses/LICENSE-2.0.txt +[36]: https://maven.apache.org/enforcer/maven-enforcer-plugin/ +[2]: http://www.exasol.com +[70]: http://maven.apache.org/plugins/maven-install-plugin/ +[34]: https://sonatype.github.io/ossindex-maven/maven-plugin/ +[40]: https://maven.apache.org/plugins/maven-gpg-plugin/ +[22]: http://github.com/davidB/scala-maven-plugin +[48]: https://maven.apache.org/plugins/maven-javadoc-plugin/ +[52]: https://github.com/exasol/error-code-crawler-maven-plugin +[30]: https://maven.apache.org/plugins/maven-assembly-plugin/ diff --git a/doc/changes/changelog.md b/doc/changes/changelog.md index 1e7d076..d658aa6 100644 --- a/doc/changes/changelog.md +++ b/doc/changes/changelog.md @@ -1,5 +1,6 @@ -# Releases +# Changes +* [0.4.0](changes_0.4.0.md) * [0.3.1](changes_0.3.1.md) * [0.3.0](changes_0.3.0.md) * [0.2.0](changes_0.2.0.md) diff --git a/doc/changes/changes_0.4.0.md b/doc/changes/changes_0.4.0.md new file mode 100644 index 0000000..d73346a --- /dev/null +++ b/doc/changes/changes_0.4.0.md @@ -0,0 +1,55 @@ +# Import Export UDF Common Scala 0.4.0, released 2021-??-?? + +Code name: + +## Features + +* #27: Migrated to `maven` based build + +## Dependency Updates + +### Compile Dependency Updates + +* Added `com.exasol:error-reporting-java:0.4.1` +* Added `com.exasol:exasol-script-api:6.1.7` +* Added `com.fasterxml.jackson.core:jackson-databind:2.12.5` +* Added `com.fasterxml.jackson.module:jackson-module-scala_2.13:2.12.5` +* Added `com.typesafe.scala-logging:scala-logging_2.13:3.9.4` +* Added `org.apache.avro:avro:1.11.0` +* Added `org.scala-lang:scala-library:2.13.6` +* Added `org.slf4j:slf4j-simple:1.7.32` + +### Test Dependency Updates + +* Added `org.mockito:mockito-core:4.1.0` +* Added `org.scalatestplus:scalatestplus-mockito_2.13:1.0.0-M2` +* Added `org.scalatest:scalatest_2.13:3.2.10` + +### Plugin Dependency Updates + +* Added `com.diffplug.spotless:spotless-maven-plugin:2.17.4` +* Added `com.exasol:error-code-crawler-maven-plugin:0.7.1` +* Added `com.exasol:project-keeper-maven-plugin:1.3.4` +* Added `io.github.evis:scalafix-maven-plugin_2.13:0.1.4_0.9.31` +* Added `io.github.zlika:reproducible-build-maven-plugin:0.14` +* Added `net.alchim31.maven:scala-maven-plugin:4.5.4` +* Added `org.apache.maven.plugins:maven-assembly-plugin:3.3.0` +* Added `org.apache.maven.plugins:maven-clean-plugin:3.1.0` +* Added `org.apache.maven.plugins:maven-compiler-plugin:3.8.1` +* Added `org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1` +* Added `org.apache.maven.plugins:maven-enforcer-plugin:3.0.0` +* Added `org.apache.maven.plugins:maven-gpg-plugin:3.0.1` +* Added `org.apache.maven.plugins:maven-install-plugin:2.5.2` +* Added `org.apache.maven.plugins:maven-jar-plugin:3.2.0` +* Added `org.apache.maven.plugins:maven-javadoc-plugin:3.3.1` +* Added `org.apache.maven.plugins:maven-resources-plugin:3.2.0` +* Added `org.apache.maven.plugins:maven-site-plugin:3.9.1` +* Added `org.apache.maven.plugins:maven-source-plugin:3.2.1` +* Added `org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4` +* Added `org.codehaus.mojo:versions-maven-plugin:2.8.1` +* Added `org.itsallcode:openfasttrace-maven-plugin:1.2.0` +* Added `org.scalastyle:scalastyle-maven-plugin:1.0.0` +* Added `org.scalatest:scalatest-maven-plugin:2.0.2` +* Added `org.scoverage:scoverage-maven-plugin:1.4.1` +* Added `org.sonatype.ossindex.maven:ossindex-maven-plugin:3.1.0` +* Added `org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8` diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0b24a6c --- /dev/null +++ b/pom.xml @@ -0,0 +1,647 @@ + + + 4.0.0 + com.exasol + import-export-udf-common-scala + 0.4.0 + Import Export UDF Common Scala + Common import export libraries used in Exasol user defined functions + https://github.com/exasol/import-export-udf-common-scala + + UTF-8 + UTF-8 + 11 + + 6.1.7 + 0.4.1 + 1.11.0 + 2.12.5 + 3.9.4 + 1.7.32 + + 3.2.10 + 1.0.0-M2 + 4.1.0 + true + + + + MIT + https://opensource.org/licenses/MIT + repo + + + + + Exasol + opensource@exasol.com + Exasol AG + https://www.exasol.com/ + + + + scm:git:https://github.com/exasol/import-export-udf-common-scala.git + scm:git:https://github.com/exasol/import-export-udf-common-scala.git + https://github.com/exasol/import-export-udf-common-scala/tree/main + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + maven.exasol.com + https://maven.exasol.com/artifactory/exasol-releases + + false + + + + maven.exasol.com-snapshots + https://maven.exasol.com/artifactory/exasol-snapshots + + true + + + + + + org.scala-lang + scala-library + ${scala.version} + + + com.exasol + exasol-script-api + ${exasol.api.version} + + + com.exasol + error-reporting-java + ${exasol.error-reporting.version} + + + org.apache.avro + avro + ${avro.version} + + + org.slf4j + slf4j-api + + + org.apache.commons + commons-compress + + + com.fasterxml.jackson.core + * + + + com.fasterxml.jackson.module + * + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.module + jackson-module-scala_${scala.compat.version} + ${jackson.version} + + + org.slf4j + slf4j-simple + ${slf4j.simple.version} + + + com.typesafe.scala-logging + scala-logging_${scala.compat.version} + ${typesafe.logging.version} + + + org.slf4j + slf4j-api + + + org.scala-lang + scala-library + + + org.scala-lang + scala-reflect + + + + + + org.scalatest + scalatest_${scala.compat.version} + ${scalatest.version} + test + + + org.scalatestplus + scalatestplus-mockito_${scala.compat.version} + ${scalatestplus.version} + test + + + org.mockito + mockito-core + ${mockito.version} + test + + + + ${project.artifactId}_${scala.compat.version}-${project.version} + + + net.alchim31.maven + scala-maven-plugin + 4.5.4 + + + scala-compile-first + process-resources + + add-source + compile + + + + scala-test-compile + process-test-resources + + testCompile + + + + attach-scaladocs + verify + + doc + doc-jar + + + + + ${scala.version} + ${scala.compat.version} + true + true + incremental + + -unchecked + -deprecation + -feature + -explaintypes + -Xcheckinit + -Xfatal-warnings + -Xlint:_ + -Ywarn-dead-code + -Ywarn-numeric-widen + -Ywarn-value-discard + -Ywarn-extra-implicit + -Ywarn-unused:_ + + + -source + ${java.version} + -target + ${java.version} + -deprecation + -parameters + -Xlint:all + + + -Xmx2048m + -Xss64m + + + + org.scalameta + semanticdb-scalac_${scala.version} + 4.4.30 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + + + + compile + + compile + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M4 + + true + + -Djava.util.logging.config.file=src/test/resources/logging.properties ${argLine} + + + + org.scalatest + scalatest-maven-plugin + 2.0.2 + + . + TestSuite.txt + -Djava.util.logging.config.file=src/test/resources/logging.properties + ${project.build.directory}/surefire-reports + + + + test + + test + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + src/assembly/all-dependencies.xml + + false + + + true + + + + + + make-assembly + package + + single + + + + + + org.codehaus.mojo + versions-maven-plugin + 2.8.1 + + + package + + display-plugin-updates + display-dependency-updates + + + + + file:///${project.basedir}/versionsMavenPluginRules.xml + + + + org.sonatype.ossindex.maven + ossindex-maven-plugin + 3.1.0 + + + package + + audit + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0 + + + enforce-maven + + enforce + + + + + 3.6.3 + + + + + + + + org.itsallcode + openfasttrace-maven-plugin + 1.2.0 + + + trace-requirements + + trace + + + + + html + ALL + true + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.0.1 + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.0.0-M1 + + true + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + + true + ossrh + https://oss.sonatype.org/ + + + + default-deploy + deploy + + deploy + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.1 + + + attach-javadocs + + jar + + + + + UTF-8 + + true + true + true + ${project.basedir}/src/main/java + + + + io.github.zlika + reproducible-build-maven-plugin + 0.14 + + + strip-jar + package + + strip-jar + + + + + + com.exasol + error-code-crawler-maven-plugin + 0.7.1 + + + + verify + + + + + + com.exasol + project-keeper-maven-plugin + 1.3.4 + + + + verify + + + + + + maven_central + + + org.jacoco:jacoco-maven-plugin + + + README.md + .github/workflows/release_droid*.yml + + + + LICENSE-exasol-script-api.txt|https://mit-license.org/ + + + https://github.com/google/guava/guava|https://github.com/google/guava + + + http://wiki.fasterxml.com/JacksonModuleScala|https://github.com/FasterXML/jackson-module-scala + + + http://nexus.sonatype.org/oss-repository-hosting.html|https://www.scalatest.org/user_guide/using_the_scalatest_maven_plugin + + + http://nexus.sonatype.org/oss-repository-hosting.html/scalatest-maven-plugin|https://www.scalatest.org/user_guide/using_the_scalatest_maven_plugin + + + + + + org.scoverage + scoverage-maven-plugin + 1.4.1 + + ${scala.version} + true + true + + + + org.scalastyle + scalastyle-maven-plugin + 1.0.0 + + false + true + true + false + ${project.basedir}/src/main/scala + ${project.basedir}/src/test/scala + ${project.basedir}/scalastyle-config.xml + ${project.build.directory}/scalastyle-output.xml + UTF-8 + + + + + check + + + + + + com.diffplug.spotless + spotless-maven-plugin + 2.17.4 + + + + ${project.basedir}/.scalafmt.conf + + + + + + + check + + + + + + io.github.evis + scalafix-maven-plugin_${scala.compat.version} + 0.1.4_0.9.31 + + + com.github.liancheng + organize-imports_${scala.compat.version} + 0.6.0 + + + com.github.vovapolu + scaluzzi_${scala.compat.version} + 0.1.20 + + + + CHECK + + + + + + + maven-clean-plugin + 3.1.0 + + + maven-install-plugin + 2.5.2 + + + maven-jar-plugin + 3.2.0 + + + maven-resources-plugin + 3.2.0 + + + maven-site-plugin + 3.9.1 + + + + + + + scala2.13 + + true + + + 2.13.6 + 2.13 + + + + scala2.12 + + 2.12.15 + 2.12 + + + + diff --git a/project/Compilation.scala b/project/Compilation.scala deleted file mode 100644 index e96cd4e..0000000 --- a/project/Compilation.scala +++ /dev/null @@ -1,132 +0,0 @@ -package com.exasol.common.sbt - -import sbt._ -import wartremover.Wart -import wartremover.Warts - -/** Compiler related settings (flags, warts, lints) */ -object Compilation { - - def compilerFlagsFn(scalaVersion: String): Seq[String] = - CrossVersion.partialVersion(scalaVersion) match { - case Some((2, 13)) => CompilerFlags.filter(_ != "-Xfuture") - case Some((2, 12)) => CompilerFlags ++ Scala12CompilerFlags - case Some((2, 11)) => CompilerFlags - case _ => CompilerFlags - } - - def consoleFlagsFn(scalaVersion: String): Seq[String] = - compilerFlagsFn(scalaVersion).filterNot( - Set( - "-Xfatal-warnings", - "-Ywarn-unused-import", - "-Ywarn-unused:imports" - ) - ) - - // format: off - /** Compiler flags specific to Scala version 2.12.x */ - private val Scala12CompilerFlags: Seq[String] = Seq( - "-Xlint:constant", // Evaluation of a constant arithmetic expression results in an error. - "-Xlint:by-name-right-associative", // By-name parameter of right associative operator. - "-Xlint:nullary-override", // Warn when non-nullary `def f()' overrides nullary `def f'. - "-Xlint:unsound-match", // Pattern match may not be typesafe. - "-Yno-adapted-args", // Do not adapt an argument list (either by inserting () or creating a tuple) to match the receiver. - "-Ywarn-extra-implicit", // Warn when more than one implicit parameter section is defined. - "-Ywarn-inaccessible", // Warn about inaccessible types in method signatures. - "-Ywarn-infer-any", // Warn when a type argument is inferred to be `Any`. - "-Ywarn-nullary-override", // Warn when non-nullary `def f()' overrides nullary `def f'. - "-Ywarn-nullary-unit", // Warn when nullary methods return Unit. - "-Ywarn-unused:implicits", // Warn if an implicit parameter is unused. - "-Ywarn-unused:imports", // Warn if an import selector is not referenced. - "-Ywarn-unused:locals", // Warn if a local definition is unused. - // "-Ywarn-unused:params", // Warn if a value parameter is unused. - "-Ywarn-unused:patvars", // Warn if a variable bound in a pattern is unused. - "-Ywarn-unused:privates", // Warn if a private member is unused. - "-Ypartial-unification" // Enable partial unification in type constructor inference - ) - - /** - * Compiler flags specific to Scala versions 2.10.x and 2.11.x - * - * From tpolecat, https://tpolecat.github.io/2017/04/25/scalac-flags.html - */ - private val CompilerFlags: Seq[String] = Seq( - "-encoding", "utf-8", // Specify character encoding used by source files. - "-deprecation", // Emit warning and location for usages of deprecated APIs. - "-explaintypes", // Explain type errors in more detail. - "-feature", // Emit warning and location for usages of features that should be imported explicitly. - "-language:existentials", // Existential types (besides wildcard types) can be written and inferred - "-language:experimental.macros", // Allow macro definition (besides implementation and application) - "-language:higherKinds", // Allow higher-kinded types - "-language:implicitConversions", // Allow definition of implicit functions called views - "-unchecked", // Enable additional warnings where generated code depends on assumptions. - "-Xcheckinit", // Wrap field accessors to throw an exception on uninitialized access. - "-Xfatal-warnings", // Fail the compilation if there are any warnings. - "-Xfuture", // Turn on future language features. - "-Xlint:adapted-args", // Warn if an argument list is modified to match the receiver. - "-Xlint:delayedinit-select", // Selecting member of DelayedInit. - "-Xlint:doc-detached", // A Scaladoc comment appears to be detached from its element. - "-Xlint:inaccessible", // Warn about inaccessible types in method signatures. - "-Xlint:infer-any", // Warn when a type argument is inferred to be `Any`. - "-Xlint:missing-interpolator", // A string literal appears to be missing an interpolator id. - "-Xlint:nullary-unit", // Warn when nullary methods return Unit. - "-Xlint:option-implicit", // Option.apply used implicit view. - "-Xlint:package-object-classes", // Class or object defined in package object. - "-Xlint:poly-implicit-overload", // Parameterized overloaded implicit methods are not visible as view bounds. - "-Xlint:private-shadow", // A private field (or class parameter) shadows a superclass field. - "-Xlint:stars-align", // Pattern sequence wildcard must align with sequence component. - "-Xlint:type-parameter-shadow", // A local type parameter shadows a type already in scope. - "-Ywarn-dead-code", // Warn when dead code is identified. - "-Ywarn-numeric-widen", // Warn when numerics are widened. - "-Ywarn-value-discard" // Warn when non-Unit expression results are unused. - ) - // format: on - - val JavacCompilerFlags: Seq[String] = Seq( - "-encoding", - "UTF-8", - "-deprecation", - "-parameters", - "-Xlint:all" - ) - - private def contribWart(name: String) = - Wart.custom(s"org.wartremover.contrib.warts.$name") - - private val ExtraWartremoverFlags = Seq( - contribWart("Apply"), - contribWart("ExposedTuples"), - contribWart("MissingOverride"), - contribWart("NoNeedForMonad"), - contribWart("OldTime"), - contribWart("SealedCaseClass"), - contribWart("SomeApply"), - contribWart("SymbolicName"), - contribWart("UnintendedLaziness"), - contribWart("UnsafeInheritance") - ) - - val WartremoverFlags: Seq[Wart] = ExtraWartremoverFlags ++ Warts.allBut( - Wart.Any, - Wart.AsInstanceOf, - Wart.Equals, - Wart.IsInstanceOf, - Wart.Null, - Wart.MutableDataStructures, - Wart.Overloading, - Wart.Throw, - Wart.Var, - Wart.While - ) - - val WartremoverTestFlags: Seq[Wart] = ExtraWartremoverFlags ++ Warts.allBut( - Wart.Any, - Wart.IsInstanceOf, - Wart.Overloading, - Wart.NonUnitStatements, - Wart.Null, - Wart.Var - ) - -} diff --git a/project/Dependencies.scala b/project/Dependencies.scala deleted file mode 100644 index fe36e0c..0000000 --- a/project/Dependencies.scala +++ /dev/null @@ -1,51 +0,0 @@ -package com.exasol.common.sbt - -import sbt.{ExclusionRule, _} - -/** A list of required dependencies */ -object Dependencies { - - // Runtime dependencies versions - private val ExasolVersion = "6.1.7" - private val AvroVersion = "1.10.2" - private val JacksonVersion = "2.12.5" - private val TypesafeLoggingVersion = "3.9.4" - private val SLF4JSimpleVersion = "1.7.32" - - // Test dependencies versions - private val ScalaTestVersion = "3.2.10" - private val ScalaTestPlusVersion = "1.0.0-M2" - private val MockitoCoreVersion = "4.0.0" - - val ExasolResolvers: Seq[Resolver] = Seq( - "Exasol Releases" at "https://maven.exasol.com/artifactory/exasol-releases" - ) - - lazy val RuntimeDependencies: Seq[ModuleID] = Seq( - "com.exasol" % "exasol-script-api" % ExasolVersion, - "org.slf4j" % "slf4j-simple" % SLF4JSimpleVersion, - "com.exasol" % "error-reporting-java" % "0.4.0", - "com.typesafe.scala-logging" %% "scala-logging" % TypesafeLoggingVersion - exclude ("org.slf4j", "slf4j-api") - exclude ("org.scala-lang", "scala-library") - exclude ("org.scala-lang", "scala-reflect"), - "org.apache.avro" % "avro" % AvroVersion - exclude ("org.slf4j", "slf4j-api") - exclude ("org.apache.commons", "commons-compress") - excludeAll ( - ExclusionRule(organization = "com.fasterxml.jackson.core"), - ExclusionRule(organization = "com.fasterxml.jackson.module") - ), - "com.fasterxml.jackson.core" % "jackson-databind" % JacksonVersion, - "com.fasterxml.jackson.module" %% "jackson-module-scala" % JacksonVersion - ) - - lazy val TestDependencies: Seq[ModuleID] = Seq( - "org.scalatest" %% "scalatest" % ScalaTestVersion, - "org.scalatestplus" %% "scalatestplus-mockito" % ScalaTestPlusVersion, - "org.mockito" % "mockito-core" % MockitoCoreVersion - ).map(_ % Test) - - lazy val AllDependencies: Seq[ModuleID] = RuntimeDependencies ++ TestDependencies - -} diff --git a/project/Publishing.scala b/project/Publishing.scala deleted file mode 100644 index 2aa1893..0000000 --- a/project/Publishing.scala +++ /dev/null @@ -1,97 +0,0 @@ -package com.exasol.common.sbt - -import sbt._ -import sbt.Keys._ -import com.typesafe.sbt.SbtGit.git -import com.jsuereth.sbtpgp.PgpKeys._ -import scala.xml.transform.RewriteRule -import scala.xml.transform.RuleTransformer - -object Publishing { - - val VersionRegex = "v([0-9]+.[0-9]+.[0-9]+)-?(.*)?".r - - def publishSettings(): Seq[Setting[_]] = Seq( - homepage := Some(url("https://github.com/exasol/import-export-udf-common-scala")), - licenses := Seq("MIT" -> url("https://opensource.org/licenses/MIT")), - publishMavenStyle := true, - Test / publishArtifact := false, - pomIncludeRepository := Function.const(false), - publishTo := { - val nexus = "https://oss.sonatype.org/" - if (isSnapshot.value) - Some("snapshots" at nexus + "content/repositories/snapshots") - else - Some("releases" at nexus + "service/local/staging/deploy/maven2") - }, - scmInfo := Some( - ScmInfo( - url("https://github.com/exasol/import-export-udf-common-scala"), - "scm:git:git@github.com:exasol/import-export-udf-common-scala.git" - ) - ), - developers := List( - Developer( - id = "exasol", - name = "Exasol AG", - email = "opensource@exasol.com", - url = url("https://github.com/exasol/") - ) - ), - // Do not include scoverage & wartremover plugins as a dependency in the pom - // https://github.com/scoverage/sbt-scoverage/issues/153 - // This code was copied from https://github.com/http4s/http4s - pomPostProcess := { (node: xml.Node) => - val depsToRemove = Set("org.scoverage", "org.wartremover", "org.danielnixon") - new RuleTransformer(new RewriteRule { - override def transform(node: xml.Node): Seq[xml.Node] = node match { - case e: xml.Elem - if e.label == "dependency" && e.child - .exists(child => child.label == "groupId" && depsToRemove.contains(child.text)) => - Nil - case _ => Seq(node) - } - }).transform(node).head - }, - // Gnupg related settings - // Global scope somehow needed here; otherwise publishLocalSigned looks for these credentials - // in default path of ~/.sbt/gpg/ - Global / useGpg := false, - Global / pgpPublicRing := baseDirectory.value / "project" / ".gnupg" / "local.pubring.asc", - Global / pgpSecretRing := baseDirectory.value / "project" / ".gnupg" / "local.secring.asc", - Global / pgpPassphrase := sys.env.get("PGP_PASSPHRASE").map(_.toArray), - credentials ++= (for { - username <- sys.env.get("SONATYPE_USERNAME") - password <- sys.env.get("SONATYPE_PASSWORD") - } yield Credentials( - "Sonatype Nexus Repository Manager", - "oss.sonatype.org", - username, - password - )).toSeq, - // git.baseVersion setting represents previously released version - git.baseVersion := "0.1.0", - git.gitTagToVersionNumber := { - case VersionRegex(v, "") => Some(v) - case VersionRegex(v, "SNAPSHOT") => Some(s"$v-SNAPSHOT") - case VersionRegex(v, s) => Some(s"$v-$s-SNAPSHOT") - case _ => None - }, - git.formattedShaVersion := { - val suffix = git.makeUncommittedSignifierSuffix( - git.gitUncommittedChanges.value, - git.uncommittedSignifier.value - ) - git.gitHeadCommit.value.map(_.substring(0, 7)).map { sha => - git.baseVersion.value + "-" + sha + suffix - } - } - ) - - def noPublishSettings: Seq[Setting[_]] = Seq( - publish := {}, - publishLocal := {}, - publishArtifact := false - ) - -} diff --git a/project/Settings.scala b/project/Settings.scala deleted file mode 100644 index 7da64f9..0000000 --- a/project/Settings.scala +++ /dev/null @@ -1,56 +0,0 @@ -package com.exasol.common.sbt - -import sbt._ -import sbt.Keys._ - -import com.typesafe.sbt.SbtGit.git -import scoverage.ScoverageSbtPlugin.autoImport._ -import org.scalastyle.sbt.ScalastylePlugin.autoImport._ -import wartremover.WartRemover.autoImport.wartremoverErrors - -/** A list of (boilerplate) settings for build process */ -object Settings { - - def projectSettings(scalaVersion: SettingKey[String]): Seq[Setting[_]] = - buildSettings(scalaVersion) ++ miscSettings ++ scalaStyleSettings ++ Publishing - .publishSettings() - - def buildSettings(scalaVersion: SettingKey[String]): Seq[Setting[_]] = Seq( - // Compiler settings - scalacOptions ++= Compilation.compilerFlagsFn(scalaVersion.value), - Compile / console / scalacOptions := Compilation.consoleFlagsFn(scalaVersion.value), - javacOptions ++= Compilation.JavacCompilerFlags, - Compile / compileOrder := CompileOrder.JavaThenScala - ) - - def miscSettings(): Seq[Setting[_]] = Seq( - // Wartremover settings - Compile / compile / wartremoverErrors := Compilation.WartremoverFlags, - Test / compile / wartremoverErrors := Compilation.WartremoverTestFlags, - // General settings - Global / cancelable := true, - // Scoverage settings - coverageOutputHTML := true, - coverageOutputXML := true, - coverageOutputCobertura := true, - coverageFailOnMinimum := false, - // Git versioning, use git describe - git.useGitDescribe := true - ) - - /** Creates a Scalastyle tasks that run with unit and integration tests. */ - def scalaStyleSettings(): Seq[Setting[_]] = { - lazy val mainScalastyle = taskKey[Unit]("mainScalastyle") - lazy val testScalastyle = taskKey[Unit]("testScalastyle") - Seq( - scalastyleFailOnError := true, - Compile / scalastyleConfig := (ThisBuild / baseDirectory).value / "project" / "scalastyle-config.xml", - Test / scalastyleConfig := (ThisBuild / baseDirectory).value / "project" / "scalastyle-test-config.xml", - mainScalastyle := (Compile / scalastyle).toTask("").value, - testScalastyle := (Compile / scalastyle).toTask("").value, - Test / test := (Test / test).dependsOn(mainScalastyle).value, - Test / test := (Test / test).dependsOn(testScalastyle).value - ) - } - -} diff --git a/project/build.properties b/project/build.properties deleted file mode 100644 index 10fd9ee..0000000 --- a/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=1.5.5 diff --git a/project/plugins.sbt b/project/plugins.sbt deleted file mode 100644 index 5a62e8a..0000000 --- a/project/plugins.sbt +++ /dev/null @@ -1,49 +0,0 @@ -// Adds a `scalafmt` sbt plugin -// https://github.com/scalameta/sbt-scalafmt -addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.3") - -// Adds a `wartremover` a flexible Scala code linting tool -// http://github.com/puffnfresh/wartremover -addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.4.16") - -// Adds Contrib Warts -// http://github.com/wartremover/wartremover-contrib/ -addSbtPlugin("org.wartremover" % "sbt-wartremover-contrib" % "1.3.12") - -// Adds most common doc api mappings -// https://github.com/ThoughtWorksInc/sbt-api-mappings -addSbtPlugin("com.thoughtworks.sbt-api-mappings" % "sbt-api-mappings" % "3.0.0") - -// Adds Scala Code Coverage (Scoverage) used during unit tests -// http://github.com/scoverage/sbt-scoverage -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.1") - -// Adds SBT Coveralls plugin for uploading Scala code coverage to -// https://coveralls.io -// https://github.com/scoverage/sbt-coveralls -addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.3.1") - -// Adds a `dependencyUpdates` task to check Maven repositories for -// dependency updates -// http://github.com/rtimush/sbt-updates -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.0") - -// Adds `scalastyle` a coding style checker and enforcer -// https://github.com/scalastyle/scalastyle-sbt-plugin -addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % "1.0.0") - -// Adds a `dependencyUpdates` task to check for dependency updates -// https://github.com/jrudolph/sbt-dependency-graph -addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.10.0-RC1") - -// Adds a `sonatype` release tasks -// https://github.com/xerial/sbt-sonatype -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.10") - -// Adds a `gnu-pgp` plugin -// https://github.com/sbt/sbt-pgp -addSbtPlugin("com.jsuereth" % "sbt-pgp" % "2.1.1") - -// Adds a `git` plugin -// https://github.com/sbt/sbt-git -addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "1.0.2") diff --git a/project/project/plugins.sbt b/project/project/plugins.sbt deleted file mode 100644 index 353e791..0000000 --- a/project/project/plugins.sbt +++ /dev/null @@ -1,3 +0,0 @@ -// Used to get updates for plugins -// see https://github.com/rtimush/sbt-updates/issues/10 -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.0") diff --git a/project/scalastyle-test-config.xml b/project/scalastyle-test-config.xml deleted file mode 100644 index 4818c68..0000000 --- a/project/scalastyle-test-config.xml +++ /dev/null @@ -1,479 +0,0 @@ - - - Exasol Cloud ETL Scalastyle Configurations (adapted from Spark Scala Style Guide) - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - EQUALS, ELSE, TRY, CATCH, FINALLY, LARROW, RARROW - - - - - - - ARROW, EQUALS, COMMA, COLON, IF, ELSE, DO, WHILE, FOR, MATCH, TRY, CATCH, FINALLY, LARROW, RARROW - - - - - - - - - - - ^println$ - - - - - - - - - mutable\.SynchronizedBuffer - - - - - - - - - Class\.forName - - - - - - - - - Await\.result - - - - - - - - - Await\.ready - - - - - - - - - JavaConversions - - - - - - - - - org\.apache\.commons\.lang\. - - - - - - - - - extractOpt - - - - - - - - - \)\{ - - - - - - - - - (?m)^(\s*)/[*][*].*$(\r|)\n^\1 [*] - - - - - - - - - case[^\n>]*=>\s*\{ - - - - - - - - - - - - - - - - - - java,scala,exasol,others - javax?\..* - scala\..* - com\.exasol\..* - .* - - - - - - - COMMA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/project/scalastyle-config.xml b/scalastyle-config.xml similarity index 98% rename from project/scalastyle-config.xml rename to scalastyle-config.xml index ecfc301..fbf88fe 100644 --- a/project/scalastyle-config.xml +++ b/scalastyle-config.xml @@ -13,7 +13,7 @@ --> - Exasol Cloud ETL Scalastyle Configurations (adapted from Spark Scala Style Guide) + Exasol Scala Scalastyle Configurations (adapted from Spark Scala Style Guide) - + + java,scala,exasol,others javax?\..* @@ -418,7 +419,7 @@ - + diff --git a/scripts/ci.sh b/scripts/ci.sh deleted file mode 100755 index 5fff77f..0000000 --- a/scripts/ci.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env bash - -set -o errtrace -o nounset -o pipefail -o errexit - -# Goto parent (base) directory of this script -BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. && pwd )" -cd "$BASE_DIR" - -DEFAULT_SCALA_VERSION=2.13.6 - -if [[ -z "${SCALA_VERSION:-}" ]]; then - echo "Environment variable SCALA_VERSION is not set" - echo "Using DEFAULT_SCALA_VERSION: $DEFAULT_SCALA_VERSION" - SCALA_VERSION=$DEFAULT_SCALA_VERSION -fi - -run_self_check () { - echo "############################################" - echo "# #" - echo "# Self-check #" - echo "# #" - echo "############################################" - # Don't fail here, failing later at the end when all shell scripts are checked anyway. - shellcheck "$BASE_DIR"/scripts/ci.sh \ - && echo "Self-check succeeded!" || echo "Self-check failed!" -} - -run_cleaning () { - echo "############################################" - echo "# #" - echo "# Cleaning #" - echo "# #" - echo "############################################" - sbt ++$SCALA_VERSION clean -} - -run_unit_tests () { - echo "############################################" - echo "# #" - echo "# Unit testing #" - echo "# #" - echo "############################################" - sbt ++$SCALA_VERSION coverage test -} - -run_coverage_report () { - echo "############################################" - echo "# #" - echo "# Coverage report #" - echo "# #" - echo "############################################" - sbt ++$SCALA_VERSION coverageReport -} - -run_api_doc () { - echo "############################################" - echo "# #" - echo "# Generating API documentaion #" - echo "# #" - echo "############################################" - sbt ++$SCALA_VERSION doc -} - -run_dependency_info () { - echo "############################################" - echo "# #" - echo "# Dependency information #" - echo "# #" - echo "############################################" - sbt ++$SCALA_VERSION dependencyUpdates pluginUpdates dependencyTree -} - -run_shell_check () { - echo "############################################" - echo "# #" - echo "# Shellcheck #" - echo "# #" - echo "############################################" - find . -name "*.sh" -print0 | xargs -n 1 -0 shellcheck -} - -run_clean_worktree_check () { - echo "############################################" - echo "# #" - echo "# Check for clean worktree #" - echo "# #" - echo "############################################" - # To be executed after all other steps, to ensures that there is no uncommitted code and there - # are no untracked files, which means .gitignore is complete and all code is part of a - # reviewable commit. - GIT_STATUS="$(git status --porcelain)" - if [[ $GIT_STATUS ]]; then - echo "Your worktree is not clean," - echo "there is either uncommitted code or there are untracked files:" - echo "${GIT_STATUS}" - exit 1 - fi -} - -run_self_check -run_cleaning -run_unit_tests -run_coverage_report -run_api_doc -run_dependency_info -run_shell_check -run_clean_worktree_check diff --git a/sonar-project.properties b/sonar-project.properties deleted file mode 100644 index dd25f85..0000000 --- a/sonar-project.properties +++ /dev/null @@ -1,8 +0,0 @@ -sonar.host.url=https://sonarcloud.io -sonar.organization=exasol -sonar.projectKey=com.exasol:import-export-udf-common-scala -sonar.sources=src/main/scala -sonar.tests=src/test -sonar.exclusions=project/Dependencies.scala -sonar.scala.coverage.reportPaths=target/scala-2.13/scoverage-report/scoverage.xml -sonar.sourceEncoding=UTF-8 diff --git a/src/assembly/all-dependencies.xml b/src/assembly/all-dependencies.xml new file mode 100644 index 0000000..efe5abc --- /dev/null +++ b/src/assembly/all-dependencies.xml @@ -0,0 +1,22 @@ + + all-dependencies + + jar + + false + + + + metaInf-services + + + + + true + runtime + / + + + diff --git a/src/main/scala/com/exasol/common/AbstractProperties.scala b/src/main/scala/com/exasol/common/AbstractProperties.scala index a1434ad..c32e8a9 100644 --- a/src/main/scala/com/exasol/common/AbstractProperties.scala +++ b/src/main/scala/com/exasol/common/AbstractProperties.scala @@ -72,7 +72,7 @@ abstract class AbstractProperties(private val properties: Map[String, String]) { final def parseConnectionInfo(keyForUsername: String, exaMetadata: Option[ExaMetadata]): Map[String, String] = { val connection = getConnectionInformation(exaMetadata) val username = connection.getUser() - val password = connection.getPassword(); + val password = connection.getPassword() val map = PropertiesParser(getPropertySeparator(), getKeyValueAssignment()).mapFromString(password) if (username.isEmpty()) { map diff --git a/src/main/scala/com/exasol/common/avro/AvroConverter.scala b/src/main/scala/com/exasol/common/avro/AvroConverter.scala index 13e8c42..b3dca12 100644 --- a/src/main/scala/com/exasol/common/avro/AvroConverter.scala +++ b/src/main/scala/com/exasol/common/avro/AvroConverter.scala @@ -4,8 +4,8 @@ import java.nio.ByteBuffer import java.sql.Date import java.sql.Timestamp import java.time._ -import java.util.{Map => JMap} import java.util.Collection +import java.util.{Map => JMap} import com.exasol.common.json.JsonMapper import com.exasol.errorreporting.ExaError @@ -156,9 +156,9 @@ final class AvroConverter { typesSize match { case 1 => getAvroValue(value, types.get(0)) case 2 => - if (types.get(0).getType() == Schema.Type.NULL) { + if (isNullSchemaType(types.get(0).getType())) { getAvroValue(value, types.get(1)) - } else if (types.get(1).getType() == Schema.Type.NULL) { + } else if (isNullSchemaType(types.get(1).getType())) { getAvroValue(value, types.get(0)) } else { throw new IllegalArgumentException(getAvroUnionErrorMessage()) @@ -167,6 +167,11 @@ final class AvroConverter { } } + private[this] def isNullSchemaType(avroType: Schema.Type): Boolean = avroType match { + case Schema.Type.NULL => true + case _ => false + } + private[this] def getAvroUnionErrorMessage(): String = ExaError .messageBuilder("E-IEUCS-7") diff --git a/src/test/resources/logging.properties b/src/test/resources/logging.properties new file mode 100644 index 0000000..8c97abe --- /dev/null +++ b/src/test/resources/logging.properties @@ -0,0 +1,6 @@ +handlers=java.util.logging.ConsoleHandler +.level=INFO +java.util.logging.ConsoleHandler.level=ALL +java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter +java.util.logging.SimpleFormatter.format=%1$tF %1$tT.%1$tL [%4$-7s] %5$s %n +com.exasol.level=ALL diff --git a/src/test/scala/com/exasol/common/AbstractPropertiesTest.scala b/src/test/scala/com/exasol/common/AbstractPropertiesTest.scala index f7f2172..02a28c9 100644 --- a/src/test/scala/com/exasol/common/AbstractPropertiesTest.scala +++ b/src/test/scala/com/exasol/common/AbstractPropertiesTest.scala @@ -1,8 +1,11 @@ package com.exasol.common -import com.exasol.{ExaConnectionInformation, ExaMetadata} +import com.exasol.ExaConnectionInformation +import com.exasol.ExaMetadata -import org.mockito.Mockito.{times, verify, when} +import org.mockito.Mockito.times +import org.mockito.Mockito.verify +import org.mockito.Mockito.when import org.scalatest.BeforeAndAfterEach import org.scalatest.funsuite.AnyFunSuite import org.scalatestplus.mockito.MockitoSugar @@ -181,33 +184,28 @@ class AbstractPropertiesTest extends AnyFunSuite with BeforeAndAfterEach with Mo test("parseConnectionInfo returns key value pairs from password") { properties = Map("CONNECTION_NAME" -> "connection_info") val expected = Map("a" -> "secret1", "b" -> "secret2") - assertParseConnectionInfo("", "a=secret1;b=secret2", properties, expected) + assertParseConnectionInfo("", "a=secret1;b=secret2", expected) } test("parseConnectionInfo returns key value pairs with updated username") { properties = Map("CONNECTION_NAME" -> "connection_info") val expected = Map("userKey" -> "John", "a" -> "secret1", "b" -> "secret2") - assertParseConnectionInfo("John", "a=secret1;b=secret2", properties, expected) + assertParseConnectionInfo("John", "a=secret1;b=secret2", expected) } test("parseConnectionInfo returns key value pairs with custom separators") { properties = Map("CONNECTION_NAME" -> "connection_info", "CONNECTION_SEPARATOR" -> "#") val expected = Map("k1" -> "v1", "k2" -> "v2", "k3" -> "v3;k4=v4") - assertParseConnectionInfo("", "k1=v1#k2=v2#k3=v3;k4=v4", properties, expected) + assertParseConnectionInfo("", "k1=v1#k2=v2#k3=v3;k4=v4", expected) } test("parseConnectionInfo returns key value pairs with custom key-value assignment") { properties = Map("CONNECTION_NAME" -> "connection_info", "CONNECTION_KEYVALUE_ASSIGNMENT" -> "@@") val expected = Map("k1" -> "v1", "k2" -> "v2", "k3" -> "v3", "k4" -> "v4") - assertParseConnectionInfo("", "k1@@v1;k2@@v2;k3@@v3;k4@@v4", properties, expected) + assertParseConnectionInfo("", "k1@@v1;k2@@v2;k3@@v3;k4@@v4", expected) } - private[this] def assertParseConnectionInfo( - user: String, - password: String, - props: Map[String, String], - expected: Map[String, String] - ): Unit = { + private[this] def assertParseConnectionInfo(user: String, password: String, expected: Map[String, String]): Unit = { val metadata = mockMetadata(user, password) val result = BaseProperties(properties).parseConnectionInfo("userKey", Option(metadata)) assert(result === expected) diff --git a/src/test/scala/com/exasol/common/json/JsonMapperTest.scala b/src/test/scala/com/exasol/common/json/JsonMapperTest.scala index 57fd5ad..843fee6 100644 --- a/src/test/scala/com/exasol/common/json/JsonMapperTest.scala +++ b/src/test/scala/com/exasol/common/json/JsonMapperTest.scala @@ -3,7 +3,6 @@ package com.exasol.common.json import java.util.LinkedHashMap import com.fasterxml.jackson.databind.JsonNode - import org.scalatest.funsuite.AnyFunSuite class JsonMapperTest extends AnyFunSuite { diff --git a/versionsMavenPluginRules.xml b/versionsMavenPluginRules.xml new file mode 100644 index 0000000..35bd03d --- /dev/null +++ b/versionsMavenPluginRules.xml @@ -0,0 +1,18 @@ + + + + + (?i).*Alpha(?:-?[\d.]+)? + (?i).*a(?:-?[\d.]+)? + (?i).*Beta(?:-?[\d.]+)? + (?i).*-B(?:-?[\d.]+)? + (?i).*-b(?:-?[\d.]+)? + (?i).*RC(?:-?[\d.]+)? + (?i).*CR(?:-?[\d.]+)? + (?i).*M(?:-?[\d.]+)? + + + + \ No newline at end of file