[license] Update license/notice for project and inner python-java-bridge module and add ci for java module license check (#26)

diff --git a/.github/workflows/check-java-bridge-licensing.yml b/.github/workflows/check-java-bridge-licensing.yml
new file mode 100644
index 0000000..1072532
--- /dev/null
+++ b/.github/workflows/check-java-bridge-licensing.yml
@@ -0,0 +1,55 @@
+# 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: Check Java Bridge Licensing
+
+on: [push, pull_request]
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.number || github.run_id }}
+  cancel-in-progress: true
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    env:
+      MVN_COMMON_OPTIONS: -U -B --no-transfer-progress
+      MVN_BUILD_OUTPUT_FILE: "/tmp/mvn_build_output.out"
+      MVN_VALIDATION_DIR: "/tmp/paimon-validation-deployment"
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Set JDK
+        uses: actions/setup-java@v2
+        with:
+          java-version: 8
+          distribution: 'adopt'
+      - name: Build
+        run: |
+          set -o pipefail
+          cd paimon_python_java/paimon-python-java-bridge
+          mvn clean deploy ${{ env.MVN_COMMON_OPTIONS }} -DskipTests \
+            -DaltDeploymentRepository=validation_repository::default::file:${{ env.MVN_VALIDATION_DIR }} \
+            | tee ${{ env.MVN_BUILD_OUTPUT_FILE }}
+
+      - name: Check licensing
+        run: |
+          cd paimon_python_java/paimon-python-java-bridge
+          mvn ${{ env.MVN_COMMON_OPTIONS }} exec:java@check-licensing -N \
+            -Dexec.args="${{ env.MVN_BUILD_OUTPUT_FILE }} $(pwd) ${{ env.MVN_VALIDATION_DIR }}" \
+            -Dlog4j.configurationFile=file://$(pwd)/tools/ci/log4j.properties
+        env:
+          MAVEN_OPTS: -Xmx4096m
diff --git a/LICENSE b/LICENSE
index 261eeb9..f51b94d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -199,3 +199,23 @@
    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.
+
+------------------------------------------------------------------------------------
+
+This product bundles various third-party components under other open source licenses.
+This section summarizes those components and their licenses. See licenses/
+for text of these licenses.
+
+Apache Software Foundation License 2.0
+--------------------------------------
+
+paimon_python_java/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/FileLock.java
+paimon_python_java/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/NetUtils
+paimon_python_java/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PythonEnvUtils
+paimon_python_java/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PythonGatewayServer
+
+paimon_python_java/gateway_server.py
+paimon_python_java/java_gateway.py
+paimon_python_java/util/exceptions.py
+
+from http://flink.apache.org/ version 1.20.0
diff --git a/NOTICE b/NOTICE
index b666c9f..81978c0 100644
--- a/NOTICE
+++ b/NOTICE
@@ -2,4 +2,269 @@
 Copyright 2024 The Apache Software Foundation
 
 This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
+The Apache Software Foundation (http://www.apache.org/).
+
+
+This project bundles the following dependencies under the under the MIT license
+- org.slf4j:slf4j-api:1.7.32
+
+This project bundles the following dependencies under the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+- org.apache.logging.log4j:log4j-1.2-api:2.17.1
+- org.apache.arrow:arrow-vector:14.0.0
+- org.apache.arrow:arrow-format:14.0.0
+- org.apache.arrow:arrow-memory-core:14.0.0
+- org.apache.arrow:arrow-memory-unsafe:14.0.0
+- org.apache.arrow:arrow-c-data:14.0.0
+- com.google.flatbuffers:flatbuffers-java:1.12.0
+
+This project bundles the following dependencies under the 2-Clause BSD License
+- net.sf.py4j:py4j:0.10.9.7
+
+
+Apache Paimon-shade (incubating)
+Copyright 2023-2024 The Apache Software Foundation
+
+Paimon : Bundle
+Copyright 2023-2024 The Apache Software Foundation
+
+paimon-common
+Copyright 2023-2024 The Apache Software Foundation
+
+This project bundles the following dependencies under the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+- org.roaringbitmap:RoaringBitmap:1.0.5
+- org.apache.datasketches:datasketches-java:4.2.0
+- org.apache.datasketches:datasketches-memory:2.2.0
+
+This project bundles the following dependencies under the BSD 3-clause license.
+You find them under licenses/LICENSE.antlr-runtime and licenses/LICENSE.janino.
+
+- org.antlr:antlr4-runtime:4.9.3
+- org.codehaus.janino:janino:3.0.11
+- org.codehaus.janino:commons-compiler:3.0.11
+- it.unimi.dsi:fastutil:8.5.12
+- net.openhft:zero-allocation-hashing:0.16
+- com.github.davidmoten:hilbert-curve:0.2.2
+- com.github.davidmoten:guava-mini:0.1.3
+
+datasketches-java
+Copyright 2015-2022 The Apache Software Foundation
+
+Apache DataSketches Memory
+Copyright 2022 - The Apache Software Foundation
+
+Copyright 2015-2018 Yahoo Inc.
+Copyright 2019-2020 Verizon Media
+Copyright 2021 Yahoo Inc.
+
+Prior to moving to ASF, the software for this project was developed at
+Yahoo Inc. (https://developer.yahoo.com).
+
+Paimon : Core
+Copyright 2023-2024 The Apache Software Foundation
+
+Paimon : Code Gen Loader
+Copyright 2023-2024 The Apache Software Foundation
+
+paimon-format
+Copyright 2023-2024 The Apache Software Foundation
+
+This project bundles the following dependencies under the Apache Software License 2.0. (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+- org.apache.orc:orc-core:1.9.2
+- org.apache.orc:orc-shims:1.9.2
+- org.apache.hive:hive-storage-api:2.8.1
+- io.airlift:aircompressor:0.27
+- commons-lang:commons-lang:2.6
+- org.apache.commons:commons-lang3:3.12.0
+
+- org.apache.avro:avro:1.11.3
+- com.fasterxml.jackson.core:jackson-core:2.14.2
+- com.fasterxml.jackson.core:jackson-databind:2.14.2
+- com.fasterxml.jackson.core:jackson-annotations:2.14.2
+- org.apache.commons:commons-compress:1.22
+
+- org.apache.parquet:parquet-hadoop:1.13.1
+- org.apache.parquet:parquet-column:1.13.1
+- org.apache.parquet:parquet-common:1.13.1
+- org.apache.parquet:parquet-encoding:1.13.1
+- org.apache.parquet:parquet-format-structures:1.13.1
+- org.apache.parquet:parquet-jackson:1.13.1
+- commons-pool:commons-pool:1.6
+
+This project bundles the following dependencies under the BSD license.
+You find it under licenses/LICENSE.protobuf, licenses/LICENSE.zstd-jni
+and licenses/LICENSE.threeten-extra
+
+- com.google.protobuf:protobuf-java:3.19.6
+- com.github.luben:zstd-jni:1.5.5-11
+- org.threeten:threeten-extra:1.7.1
+
+# Jackson JSON processor
+
+Jackson is a high-performance, Free/Open Source JSON processing library.
+It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
+been in development since 2007.
+It is currently developed by a community of developers.
+
+## Licensing
+
+Jackson 2.x core and extension components are licensed under Apache License 2.0
+To find the details that apply to this artifact see the accompanying LICENSE file.
+
+## Credits
+
+A list of contributors may be found from CREDITS(-2.x) file, which is included
+in some artifacts (usually source distributions); but is always available
+from the source code management (SCM) system project uses.
+
+Apache Commons Lang
+Copyright 2001-2011 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+ORC Core
+Copyright 2013-2023 The Apache Software Foundation
+
+ORC Shims
+Copyright 2013-2023 The Apache Software Foundation
+
+Apache Commons Lang
+Copyright 2001-2021 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (https://www.apache.org/).
+
+Hive Storage API
+Copyright 2020 The Apache Software Foundation
+
+Apache Avro
+Copyright 2009-2023 The Apache Software Foundation
+
+Apache Commons Compress
+Copyright 2002-2022 The Apache Software Foundation
+
+---
+
+The files in the package org.apache.commons.compress.archivers.sevenz
+were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/),
+which has been placed in the public domain:
+
+"LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html)
+
+The test file lbzip2_32767.bz2 has been copied from libbzip2's source
+repository:
+
+This program, "bzip2", the associated library "libbzip2", and all
+documentation, are copyright (C) 1996-2019 Julian R Seward.  All
+rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. The origin of this software must not be misrepresented; you must
+   not claim that you wrote the original software.  If you use this
+   software in a product, an acknowledgment in the product
+   documentation would be appreciated but is not required.
+
+3. Altered source versions must be plainly marked as such, and must
+   not be misrepresented as being the original software.
+
+4. The name of the author may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Julian Seward, jseward@acm.org
+
+Apache Commons Pool
+Copyright 2001-2012 The Apache Software Foundation
+
+Paimon : Hive Catalog
+Copyright 2023-2024 The Apache Software Foundation
+
+Paimon : Hive Common
+Copyright 2023-2024 The Apache Software Foundation
+
+paimon-shade-jackson-2
+Copyright 2023-2024 The Apache Software Foundation
+
+This project includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+This project bundles the following dependencies under the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+- com.fasterxml.jackson.core:jackson-annotations:2.14.2
+- com.fasterxml.jackson.core:jackson-core:2.14.2
+- com.fasterxml.jackson.core:jackson-databind:2.14.2
+- com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.14.2
+- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.14.2
+- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.14.2
+- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.14.2
+- org.yaml:snakeyaml:1.33
+
+Jackson is a high-performance, Free/Open Source JSON processing library.
+It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has
+been in development since 2007.
+It is currently developed by a community of developers, as well as supported
+commercially by FasterXML.com.
+
+Jackson core and extension components may be licensed under different licenses.
+To find the details that apply to this artifact see the accompanying LICENSE file.
+For more information, including possible other licensing options, contact
+FasterXML.com (http://fasterxml.com).
+
+A list of contributors may be found from CREDITS file, which is included
+in some artifacts (usually source distributions); but is always available
+from the source code management (SCM) system project uses.
+
+paimon-shade-guava-30
+Copyright 2023-2024 The Apache Software Foundation
+
+- com.google.guava:guava:30.1.1-jre
+- com.google.guava:failureaccess:1.0.1
+
+paimon-shade-caffeine-2
+Copyright 2023-2024 The Apache Software Foundation
+
+- com.github.ben-manes.caffeine:caffeine:2.9.3
+
+Paimon : Arrow
+Copyright 2023-2024 The Apache Software Foundation
+
+Apache Log4j 1.x Compatibility API
+Copyright 1999-1969 The Apache Software Foundation
+
+Arrow Vectors
+Copyright 2023 The Apache Software Foundation
+
+Arrow Format
+Copyright 2023 The Apache Software Foundation
+
+Arrow Memory - Core
+Copyright 2023 The Apache Software Foundation
+
+Arrow Memory - Unsafe
+Copyright 2023 The Apache Software Foundation
+
+Arrow Java C Data Interface
+Copyright 2023 The Apache Software Foundation
+
+Apache Flink
+Copyright 2014-2024 The Apache Software Foundation
+
diff --git a/paimon_python_java/paimon-python-java-bridge/pom.xml b/paimon_python_java/paimon-python-java-bridge/pom.xml
index 52bc061..dd7f7f2 100644
--- a/paimon_python_java/paimon-python-java-bridge/pom.xml
+++ b/paimon_python_java/paimon-python-java-bridge/pom.xml
@@ -23,10 +23,11 @@
 
     <groupId>org.apache.paimon</groupId>
     <artifactId>paimon-python-java-bridge</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.9-SNAPSHOT</version>
     <name>Paimon : Python-Java Bridge</name>
 
     <packaging>jar</packaging>
+    <inceptionYear>2024</inceptionYear>
 
     <properties>
         <paimon.version>0.9.0</paimon.version>
@@ -37,6 +38,7 @@
         <spotless.delimiter>package</spotless.delimiter>
         <arrow.version>14.0.0</arrow.version>
         <target.java.version>1.8</target.java.version>
+        <paimon.ci.tools.version>0.9.0</paimon.ci.tools.version>
     </properties>
 
     <dependencies>
@@ -132,21 +134,21 @@
             </plugin>
 
             <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-compiler-plugin</artifactId>
-                    <version>3.8.0</version>
-                    <configuration>
-                        <source>${target.java.version}</source>
-                        <target>${target.java.version}</target>
-                        <!-- The semantics of this option are reversed, see MCOMPILER-209. -->
-                        <useIncrementalCompilation>false</useIncrementalCompilation>
-                        <compilerArgs>
-                            <!-- Prevents recompilation due to missing package-info.class, see MCOMPILER-205 -->
-                            <arg>-Xpkginfo:always</arg>
-                            <arg>-Xlint:deprecation</arg>
-                        </compilerArgs>
-                    </configuration>
-                </plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.0</version>
+                <configuration>
+                    <source>${target.java.version}</source>
+                    <target>${target.java.version}</target>
+                    <!-- The semantics of this option are reversed, see MCOMPILER-209. -->
+                    <useIncrementalCompilation>false</useIncrementalCompilation>
+                    <compilerArgs>
+                        <!-- Prevents recompilation due to missing package-info.class, see MCOMPILER-205 -->
+                        <arg>-Xpkginfo:always</arg>
+                        <arg>-Xlint:deprecation</arg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
 
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -159,6 +161,9 @@
                             <goal>shade</goal>
                         </goals>
                         <configuration>
+                            <shadeTestJar>false</shadeTestJar>
+                            <shadedArtifactAttached>false</shadedArtifactAttached>
+                            <createDependencyReducedPom>true</createDependencyReducedPom>
                             <artifactSet>
                                 <includes combine.children="append">
                                     <include>org.apache.paimon:paimon-bundle</include>
@@ -174,6 +179,18 @@
                                     <include>net.sf.py4j:py4j</include>
                                 </includes>
                             </artifactSet>
+                            <transformers combine.children="append">
+                                <!-- The service transformer is needed to merge META-INF/services files -->
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                                <!-- The ApacheNoticeResourceTransformer collects and aggregates NOTICE files -->
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
+                                    <projectName>Apache Paimon</projectName>
+                                    <inceptionYear>${project.inceptionYear}</inceptionYear>
+                                    <encoding>UTF-8</encoding>
+                                </transformer>
+                            </transformers>
                             <relocations>
                                 <relocation>
                                     <pattern>com.fasterxml.jackson</pattern>
@@ -184,7 +201,54 @@
                     </execution>
                 </executions>
             </plugin>
-        </plugins>
-    </build>
 
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-clean-plugin</artifactId>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>${project.basedir}</directory>
+                            <includes>
+                                <include>dependency-reduced-pom.xml</include>
+                            </includes>
+                        </fileset>
+                    </filesets>
+                </configuration>
+            </plugin>
+        </plugins>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>exec-maven-plugin</artifactId>
+                    <version>3.1.0</version>
+                    <inherited>false</inherited>
+                    <executions>
+                        <execution>
+                            <id>check-license</id>
+                            <!-- manually called -->
+                            <phase>none</phase>
+                            <goals>
+                                <goal>java</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <mainClass>org.apache.paimon.tools.ci.licensecheck.LicenseChecker</mainClass>
+                        <includePluginDependencies>true</includePluginDependencies>
+                        <includeProjectDependencies>false</includeProjectDependencies>
+                    </configuration>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.apache.paimon</groupId>
+                            <artifactId>paimon-ci-tools</artifactId>
+                            <version>${paimon.ci.tools.version}</version>
+                        </dependency>
+                    </dependencies>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
 </project>
diff --git a/paimon_python_java/paimon-python-java-bridge/src/main/resources/META-INF/NOTICE b/paimon_python_java/paimon-python-java-bridge/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000..db5800c
--- /dev/null
+++ b/paimon_python_java/paimon-python-java-bridge/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,21 @@
+paimon-python-java-bridge
+Copyright 2024 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+This project bundles the following dependencies under the under the MIT license
+- org.slf4j:slf4j-api:1.7.32
+
+This project bundles the following dependencies under the Apache Software License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+- org.apache.logging.log4j:log4j-1.2-api:2.17.1
+- org.apache.arrow:arrow-vector:14.0.0
+- org.apache.arrow:arrow-format:14.0.0
+- org.apache.arrow:arrow-memory-core:14.0.0
+- org.apache.arrow:arrow-memory-unsafe:14.0.0
+- org.apache.arrow:arrow-c-data:14.0.0
+- com.google.flatbuffers:flatbuffers-java:1.12.0
+
+This project bundles the following dependencies under the 2-Clause BSD License
+- net.sf.py4j:py4j:0.10.9.7
+
diff --git a/paimon_python_java/paimon-python-java-bridge/tools/ci/log4j.properties b/paimon_python_java/paimon-python-java-bridge/tools/ci/log4j.properties
new file mode 100644
index 0000000..7daf1c3
--- /dev/null
+++ b/paimon_python_java/paimon-python-java-bridge/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