This is an automated email from the ASF dual-hosted git repository.

chesnay pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-connector-cassandra.git

commit a8611f3c12927ee7be976457d6aa2daf80abe85e
Author: Chesnay Schepler <ches...@apache.org>
AuthorDate: Thu Nov 10 14:15:07 2022 +0100

    Init
---
 .asf.yaml                     |  17 ++
 .github/boring-cyborg.yml     |  87 +++++++
 .github/workflows/ci.yml      | 101 ++++++++
 .github/workflows/push_pr.yml |  27 ++
 .github/workflows/weekly.yml  |  32 +++
 .gitignore                    |  38 +++
 LICENSE                       | 201 +++++++++++++++
 NOTICE                        |  16 ++
 README.md                     |   1 +
 tools/ci/log4j.properties     |  43 ++++
 tools/maven/checkstyle.xml    | 561 ++++++++++++++++++++++++++++++++++++++++++
 tools/maven/suppressions.xml  |  26 ++
 12 files changed, 1150 insertions(+)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 0000000..9e094d7
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,17 @@
+github:
+  enabled_merge_buttons:
+    squash: true
+    merge: false
+    rebase: true
+  labels:
+    - flink
+    - cassandra
+    - connector
+  collaborators:
+    - flinkbot
+notifications:
+  commits:      commits@flink.apache.org
+  issues:       iss...@flink.apache.org
+  pullrequests: iss...@flink.apache.org
+  jobs:         bui...@flink.apache.org
+  jira_options: link label
\ No newline at end of file
diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
new file mode 100644
index 0000000..1331233
--- /dev/null
+++ b/.github/boring-cyborg.yml
@@ -0,0 +1,87 @@
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+labelPRBasedOnFilePath:
+  component=BuildSystem:
+    - .github/**/*
+    - tools/maven/*
+
+  component=Documentation:
+    - docs/**/*
+
+  component=Connectors/Cassandra:
+    - flink-connector-cassandra*/**/*
+    - flink-sql-connector-cassandra*/**/*
+
+###### IssueLink Adder 
#################################################################################################
+# Insert Issue (Jira/Github etc) link in PR description based on the Issue ID 
in PR title.
+insertIssueLinkInPrDescription:
+  # specify the placeholder for the issue link that should be present in the 
description
+  descriptionIssuePlaceholderRegexp: "^Issue link: (.*)$"
+  matchers:
+    # you can have several matches - for different types of issues
+    # only the first matching entry is replaced
+    jiraIssueMatch:
+      # specify the regexp of issue id that you can find in the title of the PR
+      # the match groups can be used to build the issue id (${1}, ${2}, etc.).
+      titleIssueIdRegexp: \[(FLINK-[0-9]+)\]
+      # the issue link to be added. ${1}, ${2} ... are replaced with the match 
groups from the
+      # title match (remember to use quotes)
+      descriptionIssueLink: 
"[${1}](https://issues.apache.org/jira/browse/${1}/)"
+    docOnlyIssueMatch:
+      titleIssueIdRegexp: \[hotfix\]
+      descriptionIssueLink: "`Documentation only change, no JIRA issue`"
+
+###### Title Validator 
#################################################################################################
+# Verifies if commit/PR titles match the regexp specified
+verifyTitles:
+  # Regular expression that should be matched by titles of commits or PR
+  titleRegexp: ^\[FLINK-[0-9]+\].*$|^\[FLINK-XXXXX\].*$|^\[hotfix].*$
+  # If set to true, it will always check the PR title (as opposed to the 
individual commits).
+  alwaysUsePrTitle: false
+  # If set to true, it will only check the commit in case there is a single 
commit.
+  # In case of multiple commits it will check PR title.
+  # This reflects the standard behaviour of Github that for `Squash & Merge` 
GitHub
+  # uses the PR title rather than commit messages for the squashed commit 
¯\_(ツ)_/¯
+  # For single-commit PRs it takes the squashed commit message from the commit 
as expected.
+  #
+  # If set to false it will check all commit messages. This is useful when you 
do not squash commits at merge.
+  validateEitherPrOrSingleCommitTitle: true
+  # The title the GitHub status should appear from.
+  statusTitle: "Title Validator"
+  # A custom message to be displayed when the title passes validation.
+  successMessage: "Validation successful!"
+  # A custom message to be displayed when the title fails validation.
+  # Allows insertion of ${type} (commit/PR), ${title} (the title validated) 
and ${regex} (the titleRegexp above).
+  failureMessage: "Wrong ${type} title: ${title}"
+
+# Various Flags to control behaviour of the "Labeler"
+labelerFlags:
+  # If this flag is changed to 'false', labels would only be added when the PR 
is first created
+  # and not when existing PR is updated.
+  # The default is 'true' which means the labels would be added when PR is 
updated even if they
+  # were removed by the user
+  labelOnPRUpdates: true
+
+# Comment to be posted to welcome users when they open their first PR
+firstPRWelcomeComment: >
+  Thanks for opening this pull request! Please check out our contributing 
guidelines. (https://flink.apache.org/contributing/how-to-contribute.html)
+
+# Comment to be posted to congratulate user on their first merged PR
+firstPRMergeComment: >
+  Awesome work, congrats on your first merged pull request!
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..5694fa6
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,101 @@
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+on:
+  workflow_call:
+    inputs:
+      flink_url:
+        description: "Url to Flink binary."
+        required: true
+        type: string
+      flink_version:
+        description: "Flink version to test against."
+        required: true
+        type: string
+      cache_flink_binary:
+        description: "Whether to cache the Flink binary. Should be false for 
SNAPSHOT URLs, true otherwise."
+        required: true
+        type: boolean
+
+jobs:
+  compile_and_test:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        jdk: [8, 11]
+    timeout-minutes: 40
+    env:
+      MVN_COMMON_OPTIONS: -U -B --no-transfer-progress -Dflink.version=${{ 
inputs.flink_version }}
+      MVN_CONNECTION_OPTIONS: -Dhttp.keepAlive=false 
-Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
+      FLINK_CACHE_DIR: "/tmp/cache/flink"
+      MVN_BUILD_OUTPUT_FILE: "/tmp/mvn_build_output.out"
+      MVN_VALIDATION_DIR: "/tmp/flink-validation-deployment"
+    steps:
+      - run: echo "Running CI pipeline for JDK version ${{ matrix.jdk }}"
+
+      - name: Check out repository code
+        uses: actions/checkout@v2
+
+      - name: Set JDK
+        uses: actions/setup-java@v2
+        with:
+          java-version: ${{ matrix.jdk }}
+          distribution: 'temurin'
+          cache: 'maven'
+
+      - name: Set Maven 3.8.6
+        uses: stCarolas/setup-maven@v4.2
+        with:
+          maven-version: 3.8.6
+
+      - name: Create cache dirs
+        run: mkdir -p ${{ env.FLINK_CACHE_DIR }}
+
+      - name: Cache Flink binary
+        if: ${{ inputs.cache_flink_binary == 'true' }}
+        uses: actions/cache@v3
+        id: cache-flink
+        with:
+          path: ${{ env.FLINK_CACHE_DIR }}
+          key: ${{ inputs.flink_url }}
+
+      - name: Download Flink binary
+        working-directory: ${{ env.FLINK_CACHE_DIR }}
+        if: steps.cache-flink.outputs.cache-hit != 'true'
+        run: wget -q -c ${{ inputs.flink_url }} -O - | tar -xz
+
+      - name: Compile and test flink-connector-cassandra
+        timeout-minutes: 30
+        run: |          
+          set -o pipefail
+
+          mvn clean deploy ${MVN_COMMON_OPTIONS} \
+            -DaltDeploymentRepository=validation_repository::default::file:${{ 
env.MVN_VALIDATION_DIR }} \
+            -Dscala-2.12 \
+            -Prun-end-to-end-tests -DdistDir=${{ env.FLINK_CACHE_DIR 
}}/flink-${{ inputs.flink_version }} \
+            -Dflink.convergence.phase=install -Pcheck-convergence \
+            ${{ env.MVN_CONNECTION_OPTIONS }} \
+            -Dlog4j.configurationFile=file://$(pwd)/tools/ci/log4j.properties \
+            | tee ${{ env.MVN_BUILD_OUTPUT_FILE }}
+
+      - name: Check licensing
+        run: |
+          mvn ${MVN_COMMON_OPTIONS} exec:java@check-license -N \
+            -Dexec.args="${{ env.MVN_BUILD_OUTPUT_FILE }} $(pwd) ${{ 
env.MVN_VALIDATION_DIR }}" \
+            ${{ env.MVN_CONNECTION_OPTIONS }} \
+            -Dlog4j.configurationFile=file://$(pwd)/tools/ci/log4j.properties
diff --git a/.github/workflows/push_pr.yml b/.github/workflows/push_pr.yml
new file mode 100644
index 0000000..b089eba
--- /dev/null
+++ b/.github/workflows/push_pr.yml
@@ -0,0 +1,27 @@
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+name: Build flink-connector-cassandra
+on: [push, pull_request]
+jobs:
+  compile_and_test:
+    uses: ./.github/workflows/ci.yml
+    with:
+      flink_version: 1.16.0
+      flink_url: 
https://dist.apache.org/repos/dist/release/flink/flink-1.16.0/flink-1.16.0-bin-scala_2.12.tgz
+      cache_flink_binary: true
diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml
new file mode 100644
index 0000000..0454187
--- /dev/null
+++ b/.github/workflows/weekly.yml
@@ -0,0 +1,32 @@
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+name: Build flink-connector-cassandra
+on:
+  schedule:
+    - cron: "0 0 * * 0"
+jobs:
+  compile_and_test:
+    strategy:
+      matrix:
+        flink: [1.16-SNAPSHOT, 1.17-SNAPSHOT]
+    uses: ./.github/workflows/ci.yml
+    with:
+      flink_version: ${{ matrix.flink }}
+      flink_url: https://s3.amazonaws.com/flink-nightly/flink-${{ matrix.flink 
}}-bin-scala_2.12.tgz
+      cache_flink_binary: false
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..acbe217
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+.eslintcache
+.cache
+scalastyle-output.xml
+.classpath
+.idea/*
+!.idea/vcs.xml
+.metadata
+.settings
+.project
+.version.properties
+filter.properties
+logs.zip
+.mvn/wrapper/*.jar
+target
+tmp
+*.class
+*.iml
+*.swp
+*.jar
+*.zip
+*.log
+*.pyc
+.DS_Store
+build-target
+atlassian-ide-plugin.xml
+out/
+/docs/api
+/docs/.bundle
+/docs/.rubydeps
+/docs/ruby2/.bundle
+/docs/ruby2/.rubydeps
+/docs/.jekyll-metadata
+*.ipr
+*.iws
+tools/flink
+tools/flink-*
+tools/releasing/release
+tools/japicmp-output
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..2b02b39
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,16 @@
+Apache Flink Cassandra Connector
+Copyright 2014-2022 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Permission to use, copy, modify, and/or distribute this software for any 
purpose with or without fee is hereby
+granted, provided that this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 
REGARD TO THIS SOFTWARE INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 
AUTHOR BE LIABLE FOR ANY SPECIAL,
+DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 
FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 
OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..609dc0f
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# flink-connector-cassandra
diff --git a/tools/ci/log4j.properties b/tools/ci/log4j.properties
new file mode 100644
index 0000000..7daf1c3
--- /dev/null
+++ b/tools/ci/log4j.properties
@@ -0,0 +1,43 @@
+################################################################################
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################
+
+rootLogger.level = INFO
+rootLogger.appenderRef.out.ref = ConsoleAppender
+
+# -----------------------------------------------------------------------------
+# Console (use 'console')
+# -----------------------------------------------------------------------------
+
+appender.console.name = ConsoleAppender
+appender.console.type = CONSOLE
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %d{HH:mm:ss,SSS} [%20t] %-5p %-60c %x - %m%n
+
+# -----------------------------------------------------------------------------
+# File (use 'file')
+# -----------------------------------------------------------------------------
+appender.file.name = FileAppender
+appender.file.type = FILE
+appender.file.fileName = ${sys:log.dir}/mvn-${sys:mvn.forkNumber:-output}.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d{HH:mm:ss,SSS} [%20t] %-5p %-60c %x - %m%n
+appender.file.createOnDemand = true
+
+# suppress the irrelevant (wrong) warnings from the netty channel handler
+logger.netty.name = org.jboss.netty.channel.DefaultChannelPipeline
+logger.netty.level = ERROR
diff --git a/tools/maven/checkstyle.xml b/tools/maven/checkstyle.xml
new file mode 100644
index 0000000..3fc4711
--- /dev/null
+++ b/tools/maven/checkstyle.xml
@@ -0,0 +1,561 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!DOCTYPE module PUBLIC
+       "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+       "http://www.puppycrawl.com/dtds/configuration_1_3.dtd";>
+
+<!--
+This is a checkstyle configuration file. For descriptions of
+what the following rules do, please see the checkstyle configuration
+page at http://checkstyle.sourceforge.net/config.html.
+
+This file is based on the checkstyle file of Apache Beam.
+-->
+
+<module name="Checker">
+
+       <module name="NewlineAtEndOfFile">
+               <!-- windows can use \r\n vs \n, so enforce the most used one 
ie UNIx style -->
+               <property name="lineSeparator" value="lf"/>
+       </module>
+
+       <module name="RegexpSingleline">
+               <!-- Checks that TODOs don't have stuff in parenthesis, e.g., 
username. -->
+               <property name="format" value="((//.*)|(\*.*))TODO\("/>
+               <property name="message" value="TODO comments must not include 
usernames."/>
+               <property name="severity" value="error"/>
+       </module>
+
+       <module name="RegexpSingleline">
+               <property name="format" value="\s+$"/>
+               <property name="message" value="Trailing whitespace"/>
+               <property name="severity" value="error"/>
+       </module>
+
+       <module name="RegexpSingleline">
+               <property name="format" value="Throwables.propagate\("/>
+               <property name="message" value="Throwables.propagate is 
deprecated"/>
+               <property name="severity" value="error"/>
+       </module>
+
+       <!-- Prevent *Tests.java as tools may not pick them up -->
+       <!--<module name="RegexpOnFilename">-->
+       <!--<property name="fileNamePattern" value=".*Tests\.java$" />-->
+       <!--</module>-->
+
+       <module name="SuppressionFilter">
+               <property name="file" value="${checkstyle.suppressions.file}" 
default="suppressions.xml"/>
+       </module>
+
+       <!-- Check that every module has a package-info.java -->
+       <!--<module name="JavadocPackage"/>-->
+
+       <!--
+
+       FLINK CUSTOM CHECKS
+
+       -->
+
+       <module name="FileLength">
+               <property name="max" value="3000"/>
+       </module>
+
+       <!-- All Java AST specific tests live under TreeWalker module. -->
+       <module name="TreeWalker">
+
+               <!-- Allow use of comment to suppress javadocstyle -->
+               <module name="SuppressionCommentFilter">
+                       <property name="offCommentFormat" 
value="CHECKSTYLE.OFF\: ([\w\|]+)"/>
+                       <property name="onCommentFormat" value="CHECKSTYLE.ON\: 
([\w\|]+)"/>
+                       <property name="checkFormat" value="$1"/>
+               </module>
+
+               <!--
+
+               FLINK CUSTOM CHECKS
+
+               -->
+
+               <!-- Prohibit T.getT() methods for standard boxed types -->
+               <module name="Regexp">
+                       <property name="format" value="Boolean\.getBoolean"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message" value="Use 
System.getProperties() to get system properties."/>
+               </module>
+
+               <module name="Regexp">
+                       <property name="format" value="Integer\.getInteger"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message" value="Use 
System.getProperties() to get system properties."/>
+               </module>
+
+               <module name="Regexp">
+                       <property name="format" value="Long\.getLong"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message" value="Use 
System.getProperties() to get system properties."/>
+               </module>
+
+               <!--
+
+               IllegalImport cannot blacklist classes so we have to fall back 
to Regexp.
+
+               -->
+
+               <!-- forbid use of commons lang validate -->
+               <module name="Regexp">
+                       <property name="format" 
value="org\.apache\.commons\.lang3\.Validate"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message"
+                                         value="Use Guava Checks instead of 
Commons Validate. Please refer to the coding guidelines."/>
+               </module>
+               <!-- forbid the use of google.common.base.Preconditions -->
+               <module name="Regexp">
+                       <property name="format" value="import 
com\.google\.common\.base\.Preconditions"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message"
+                                         value="Use Flink's Preconditions 
instead of Guava's Preconditions"/>
+               </module>
+               <!-- forbid the use of 
com.google.common.annotations.VisibleForTesting -->
+               <module name="Regexp">
+                       <property name="format"
+                                         value="import 
com\.google\.common\.annotations\.VisibleForTesting"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message"
+                                         value="Use Flink's VisibleForTesting 
instead of Guava's VisibleForTesting"/>
+               </module>
+               <module name="Regexp">
+                       <property name="format" value="import static 
com\.google\.common\.base\.Preconditions"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message"
+                                         value="Use Flink's Preconditions 
instead of Guava's Preconditions"/>
+               </module>
+               <!-- forbid the use of 
org.apache.commons.lang.SerializationUtils -->
+               <module name="Regexp">
+                       <property name="format" 
value="org\.apache\.commons\.lang\.SerializationUtils"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message"
+                                         value="Use Flink's InstantiationUtil 
instead of common's SerializationUtils"/>
+               </module>
+               <module name="Regexp">
+                       <property name="format" 
value="org\.apache\.commons\.lang3\.SerializationUtils"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message"
+                                         value="Use Flink's InstantiationUtil 
instead of common's SerializationUtils"/>
+               </module>
+               <module name="Regexp">
+                       <property name="format" 
value="org\.apache\.commons\.lang\."/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message" value="Use commons-lang3 
instead of commons-lang."/>
+               </module>
+               <module name="Regexp">
+                       <property name="format" 
value="org\.codehaus\.jettison"/>
+                       <property name="illegalPattern" value="true"/>
+                       <property name="message" value="Use 
com.fasterxml.jackson instead of jettison."/>
+               </module>
+
+               <!-- Enforce Java-style array declarations -->
+               <module name="ArrayTypeStyle"/>
+
+               <module name="TodoComment">
+                       <!-- Checks that disallowed strings are not used in 
comments.  -->
+                       <property name="format" 
value="(FIXME)|(XXX)|(@author)"/>
+               </module>
+
+               <!--
+
+               IMPORT CHECKS
+
+               -->
+
+               <module name="RedundantImport">
+                       <!-- Checks for redundant import statements. -->
+                       <property name="severity" value="error"/>
+                       <message key="import.redundancy"
+                                        value="Redundant import {0}."/>
+               </module>
+
+               <module name="ImportOrder">
+                       <!-- Checks for out of order import statements. -->
+                       <property name="severity" value="error"/>
+                       <property name="groups"
+                                         
value="org.apache.flink,org.apache.flink.shaded,*,javax,java,scala"/>
+                       <property name="separated" value="true"/>
+                       <property name="sortStaticImportsAlphabetically" 
value="true"/>
+                       <property name="option" value="bottom"/>
+                       <property name="tokens" value="STATIC_IMPORT, IMPORT"/>
+                       <message key="import.ordering"
+                                        value="Import {0} appears after other 
imports that it should precede"/>
+               </module>
+
+               <module name="AvoidStarImport">
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="IllegalImport">
+                       <property name="illegalPkgs"
+                                         value="autovalue.shaded, avro.shaded, 
com.google.api.client.repackaged, com.google.appengine.repackaged"/>
+               </module>
+               <module name="IllegalImport">
+                       <property name="illegalPkgs" 
value="org.codehaus.jackson"/>
+                       <message key="import.illegal" value="{0}; Use 
flink-shaded-jackson instead."/>
+               </module>
+               <module name="IllegalImport">
+                       <property name="illegalPkgs" value="org.objectweb.asm"/>
+                       <message key="import.illegal" value="{0}; Use 
flink-shaded-asm instead."/>
+               </module>
+               <module name="IllegalImport">
+                       <property name="illegalPkgs" value="io.netty"/>
+                       <message key="import.illegal" value="{0}; Use 
flink-shaded-netty instead."/>
+               </module>
+               <module name="IllegalImport">
+                       <property name="illegalPkgs" value="com.google.common"/>
+                       <message key="import.illegal" value="{0}; Use 
flink-shaded-guava instead."/>
+               </module>
+
+               <module name="RedundantModifier">
+                       <!-- Checks for redundant modifiers on various symbol 
definitions.
+                         See: 
http://checkstyle.sourceforge.net/config_modifier.html#RedundantModifier
+
+                         We exclude METHOD_DEF to allow final methods in final 
classes to make them more future-proof.
+                       -->
+                       <property name="tokens"
+                                         value="VARIABLE_DEF, 
ANNOTATION_FIELD_DEF, INTERFACE_DEF, CLASS_DEF, ENUM_DEF"/>
+               </module>
+
+               <!--
+                       IllegalImport cannot blacklist classes, and 
c.g.api.client.util is used for some shaded
+                       code and some useful code. So we need to fall back to 
Regexp.
+               -->
+               <!--<module name="RegexpSinglelineJava">-->
+               <!--<property name="format" 
value="com\.google\.api\.client\.util\.(ByteStreams|Charsets|Collections2|Joiner|Lists|Maps|Objects|Preconditions|Sets|Strings|Throwables)"/>-->
+               <!--</module>-->
+
+               <!--
+                        Require static importing from Preconditions.
+               -->
+               <module name="RegexpSinglelineJava">
+                       <property name="format" value="^import 
com.google.common.base.Preconditions;$"/>
+                       <property name="message" value="Static import functions 
from Guava Preconditions"/>
+               </module>
+
+               <module name="UnusedImports">
+                       <property name="severity" value="error"/>
+                       <property name="processJavadoc" value="true"/>
+                       <message key="import.unused"
+                                        value="Unused import: {0}."/>
+               </module>
+
+               <!--
+
+               JAVADOC CHECKS
+
+               -->
+
+               <!-- Checks for Javadoc comments.                     -->
+               <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+               <module name="JavadocMethod">
+                       <property name="scope" value="protected"/>
+                       <property name="severity" value="error"/>
+                       <property name="allowMissingJavadoc" value="true"/>
+                       <property name="allowMissingParamTags" value="true"/>
+                       <property name="allowMissingReturnTag" value="true"/>
+                       <property name="allowMissingThrowsTags" value="true"/>
+                       <property name="allowThrowsTagsForSubclasses" 
value="true"/>
+                       <property name="allowUndeclaredRTE" value="true"/>
+                       <!-- This check sometimes failed for with "Unable to 
get class information for @throws tag" for custom exceptions -->
+                       <property name="suppressLoadErrors" value="true"/>
+               </module>
+
+               <!-- Check that paragraph tags are used correctly in Javadoc. 
-->
+               <module name="JavadocParagraph"/>
+
+               <module name="JavadocType">
+                       <property name="scope" value="protected"/>
+                       <property name="severity" value="error"/>
+                       <property name="allowMissingParamTags" value="true"/>
+               </module>
+
+               <module name="JavadocStyle">
+                       <property name="severity" value="error"/>
+                       <property name="checkHtml" value="true"/>
+               </module>
+
+               <!--
+
+               NAMING CHECKS
+
+               -->
+
+               <!-- Item 38 - Adhere to generally accepted naming conventions 
-->
+
+               <module name="PackageName">
+                       <!-- Validates identifiers for package names against the
+                         supplied expression. -->
+                       <!-- Here the default checkstyle rule restricts package 
name parts to
+                         seven characters, this is not in line with common 
practice at Google.
+                       -->
+                       <property name="format" 
value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="TypeNameCheck">
+                       <!-- Validates static, final fields against the
+                       expression "^[A-Z][a-zA-Z0-9]*$". -->
+                       <metadata name="altname" value="TypeName"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="ConstantNameCheck">
+                       <!-- Validates non-private, static, final fields 
against the supplied
+                       public/package final fields 
"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$". -->
+                       <metadata name="altname" value="ConstantName"/>
+                       <property name="applyToPublic" value="true"/>
+                       <property name="applyToProtected" value="true"/>
+                       <property name="applyToPackage" value="true"/>
+                       <property name="applyToPrivate" value="false"/>
+                       <property name="format" 
value="^([A-Z][A-Z0-9]*(_[A-Z0-9]+)*|FLAG_.*)$"/>
+                       <message key="name.invalidPattern"
+                                        value="Variable ''{0}'' should be in 
ALL_CAPS (if it is a constant) or be private (otherwise)."/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="StaticVariableNameCheck">
+                       <!-- Validates static, non-final fields against the 
supplied
+                       expression "^[a-z][a-zA-Z0-9]*_?$". -->
+                       <metadata name="altname" value="StaticVariableName"/>
+                       <property name="applyToPublic" value="true"/>
+                       <property name="applyToProtected" value="true"/>
+                       <property name="applyToPackage" value="true"/>
+                       <property name="applyToPrivate" value="true"/>
+                       <property name="format" value="^[a-z][a-zA-Z0-9]*_?$"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="MemberNameCheck">
+                       <!-- Validates non-static members against the supplied 
expression. -->
+                       <metadata name="altname" value="MemberName"/>
+                       <property name="applyToPublic" value="true"/>
+                       <property name="applyToProtected" value="true"/>
+                       <property name="applyToPackage" value="true"/>
+                       <property name="applyToPrivate" value="true"/>
+                       <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="MethodNameCheck">
+                       <!-- Validates identifiers for method names. -->
+                       <metadata name="altname" value="MethodName"/>
+                       <property name="format" 
value="^[a-z][a-zA-Z0-9]*(_[a-zA-Z0-9]+)*$"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="ParameterName">
+                       <!-- Validates identifiers for method parameters 
against the
+                         expression "^[a-z][a-zA-Z0-9]*$". -->
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="LocalFinalVariableName">
+                       <!-- Validates identifiers for local final variables 
against the
+                         expression "^[a-z][a-zA-Z0-9]*$". -->
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="LocalVariableName">
+                       <!-- Validates identifiers for local variables against 
the
+                         expression "^[a-z][a-zA-Z0-9]*$". -->
+                       <property name="severity" value="error"/>
+               </module>
+
+               <!-- Type parameters must be either one of the four blessed 
letters
+               T, K, V, W, X or else be capital-case terminated with a T,
+               such as MyGenericParameterT -->
+               <!--<module name="ClassTypeParameterName">-->
+               <!--<property name="format" 
value="^(((T|K|V|W|X)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>-->
+               <!--<property name="severity" value="error"/>-->
+               <!--</module>-->
+
+               <!--<module name="MethodTypeParameterName">-->
+               <!--<property name="format" 
value="^(((T|K|V|W|X)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>-->
+               <!--<property name="severity" value="error"/>-->
+               <!--</module>-->
+
+               <!--<module name="InterfaceTypeParameterName">-->
+               <!--<property name="format" 
value="^(((T|K|V|W|X)[0-9]*)|([A-Z][a-z][a-zA-Z]*T))$"/>-->
+               <!--<property name="severity" value="error"/>-->
+               <!--</module>-->
+
+               <!--
+
+               LENGTH and CODING CHECKS
+
+               -->
+
+               <!--<module name="LineLength">-->
+               <!--&lt;!&ndash; Checks if a line is too long. &ndash;&gt;-->
+               <!--<property name="max" value="100"/>-->
+               <!--<property name="severity" value="error"/>-->
+
+               <!--&lt;!&ndash;-->
+               <!--The default ignore pattern exempts the following 
elements:-->
+               <!-- - import statements-->
+               <!-- - long URLs inside comments-->
+               <!--&ndash;&gt;-->
+
+               <!--<property name="ignorePattern"-->
+               <!--value="^(package .*;\s*)|(import .*;\s*)|( *\* 
.*https?://.*)$"/>-->
+               <!--</module>-->
+
+               <!-- Checks for braces around if and else blocks -->
+               <module name="NeedBraces">
+                       <property name="severity" value="error"/>
+                       <property name="tokens"
+                                         value="LITERAL_IF, LITERAL_ELSE, 
LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
+               </module>
+
+               <module name="UpperEll">
+                       <!-- Checks that long constants are defined with an 
upper ell.-->
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="FallThrough">
+                       <!-- Warn about falling through to the next case 
statement.  Similar to
+                       javac -Xlint:fallthrough, but the check is suppressed 
if a single-line comment
+                       on the last non-blank line preceding the fallen-into 
case contains 'fall through' (or
+                       some other variants that we don't publicized to promote 
consistency).
+                       -->
+                       <property name="reliefPattern"
+                                         value="fall through|Fall 
through|fallthru|Fallthru|falls through|Falls 
through|fallthrough|Fallthrough|No break|NO break|no break|continue on"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <!-- Checks for over-complicated boolean expressions. -->
+               <module name="SimplifyBooleanExpression"/>
+
+               <!-- Detects empty statements (standalone ";" semicolon). -->
+               <module name="EmptyStatement"/>
+
+               <!-- Detect multiple consecutive semicolons (e.g. ";;"). -->
+               <module name="RegexpSinglelineJava">
+                       <property name="format" value=";{2,}"/>
+                       <property name="message" value="Use one semicolon"/>
+                       <property name="ignoreComments" value="true"/>
+               </module>
+
+               <!--
+
+               MODIFIERS CHECKS
+
+               -->
+
+               <module name="ModifierOrder">
+                       <!-- Warn if modifier order is inconsistent with JLS3 
8.1.1, 8.3.1, and
+                                8.4.3.  The prescribed order is:
+                                public, protected, private, abstract, static, 
final, transient, volatile,
+                                synchronized, native, strictfp
+                         -->
+                       <property name="severity" value="error"/>
+               </module>
+
+
+               <!--
+
+               WHITESPACE CHECKS
+
+               -->
+
+               <module name="EmptyLineSeparator">
+                       <!-- Checks for empty line separator between tokens. 
The only
+                                excluded token is VARIABLE_DEF, allowing class 
fields to
+                                be declared on consecutive lines.
+                       -->
+                       <property name="allowMultipleEmptyLines" value="false"/>
+                       <property 
name="allowMultipleEmptyLinesInsideClassMembers" value="false"/>
+                       <property name="tokens" value="PACKAGE_DEF, IMPORT, 
STATIC_IMPORT, CLASS_DEF,
+        INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, METHOD_DEF,
+        CTOR_DEF"/>
+               </module>
+
+               <module name="WhitespaceAround">
+                       <!-- Checks that various tokens are surrounded by 
whitespace.
+                                This includes most binary operators and 
keywords followed
+                                by regular or curly braces.
+                       -->
+                       <property name="tokens" value="ASSIGN, BAND, 
BAND_ASSIGN, BOR,
+        BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,
+        EQUAL, GE, GT, LAMBDA, LAND, LE, LITERAL_CATCH, LITERAL_DO, 
LITERAL_ELSE,
+        LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
+        LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,
+        MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,
+        SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="WhitespaceAfter">
+                       <!-- Checks that commas, semicolons and typecasts are 
followed by
+                                whitespace.
+                       -->
+                       <property name="tokens" value="COMMA, SEMI, TYPECAST"/>
+               </module>
+
+               <module name="NoWhitespaceAfter">
+                       <!-- Checks that there is no whitespace after various 
unary operators.
+                                Linebreaks are allowed.
+                       -->
+                       <property name="tokens" value="BNOT, DEC, DOT, INC, 
LNOT, UNARY_MINUS,
+        UNARY_PLUS"/>
+                       <property name="allowLineBreaks" value="true"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <module name="NoWhitespaceBefore">
+                       <!-- Checks that there is no whitespace before various 
unary operators.
+                                Linebreaks are allowed.
+                       -->
+                       <property name="tokens" value="SEMI, DOT, POST_DEC, 
POST_INC"/>
+                       <property name="allowLineBreaks" value="true"/>
+                       <property name="severity" value="error"/>
+               </module>
+
+               <!--<module name="OperatorWrap">-->
+               <!--&lt;!&ndash; Checks that operators like + and ? appear at 
newlines rather than-->
+               <!--at the end of the previous line.-->
+               <!--&ndash;&gt;-->
+               <!--<property name="option" value="NL"/>-->
+               <!--<property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, 
EQUAL,-->
+               <!--GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, 
MOD,-->
+               <!--NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>-->
+               <!--</module>-->
+
+               <module name="OperatorWrap">
+                       <!-- Checks that assignment operators are at the end of 
the line. -->
+                       <property name="option" value="eol"/>
+                       <property name="tokens" value="ASSIGN"/>
+               </module>
+
+               <module name="ParenPad">
+                       <!-- Checks that there is no whitespace before close 
parens or after
+                                open parens.
+                       -->
+                       <property name="severity" value="error"/>
+               </module>
+
+       </module>
+</module>
diff --git a/tools/maven/suppressions.xml b/tools/maven/suppressions.xml
new file mode 100644
index 0000000..5d96995
--- /dev/null
+++ b/tools/maven/suppressions.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!DOCTYPE suppressions PUBLIC
+       "-//Puppy Crawl//DTD Suppressions 1.1//EN"
+       "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd";>
+
+<suppressions>
+</suppressions>

Reply via email to