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

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git


The following commit(s) were added to refs/heads/main by this push:
     new 789135bfb fix(release): correct source and JVM artifacts (#3976)
789135bfb is described below

commit 789135bfb958b0643abf8d6a15e24a0d842d05f6
Author: Shawn Yang <[email protected]>
AuthorDate: Tue Aug 25 17:30:28 2026 +0800

    fix(release): correct source and JVM artifacts (#3976)
    
    ## Why?
    
    The `v1.7.0-rc2` vote identified three release blockers:
    
    1. The ASF source archive contained 11 first-party source/build files
    without ASF headers.
    2. The Java Maven source-release ZIP collected 135 ignored workspace
    files and its top-level
       `LICENSE` did not account for bundled third-party-derived source.
    3. Four Kotlin Javadoc JARs omitted `META-INF/LICENSE` and
    `META-INF/NOTICE`.
    
    The published RC2 artifacts were compared with tag
    `5f467b5c4721673eab6dc81fb365c74637c91d29` before changing their owning
    build paths.
    
    ## What does this PR do?
    
    - Adds ASF headers to the exact 11 reported first-party files.
    - Adds a complete `java/LICENSE` as the Java source distribution's
    top-level license, including
    third-party-derived source attribution, and completes `fory-core`'s
    `commons-lang3` attribution.
    - Explicitly keeps the project-owned `java/LICENSE` when Apache's
    source-release descriptor later
    adds a generated LICENSE with the same archive path. Generated `NOTICE`
    and `DEPENDENCIES`
      continue to come from the Apache parent.
    - Rejects release publication from a dirty JVM source tree, including
    ignored/untracked entries
      below `java/`, `kotlin/`, or `scala/`.
    - Packages and verifies the Java source-release ZIP before deployment.
    The verifier requires the
    archive to match the exact Git-tracked `java/` tree plus Maven's
    generated legal files and checks
      that its top-level `LICENSE` exactly matches `java/LICENSE`.
    - Stages the existing Kotlin legal resources into Dokka's output
    directory and requires exactly
    one `META-INF/LICENSE` and `META-INF/NOTICE` in every public Kotlin
    Javadoc JAR.
    - Disables annotation processing only for `fory-json`'s Java 17 Ant
    execution, whose checked-in
    subtype table intentionally simulates processor output. This fixes the
    clean JDK 25 release
      build exposed while rebuilding the artifacts.
    
    ## Related issues
    
    None.
    
    ## Verification
    
    - Clean detached Java release package with JDK 25:
    `mvn -B --no-transfer-progress -T10 clean package -DskipTests
    -Papache-release`
    - `python ci/release.py verify_java_artifacts`: passed before the final
    license-owner relocation;
    the source-release ZIP contained exactly 950 unique expected files, with
    no unexpected or missing
    entries, and the same complete license content now stored at
    `java/LICENSE`.
    - Transformed source archive inspection: all 11 reported first-party
    files contain ASF headers.
    - Clean detached Kotlin release package with JDK 25:
    `mvn -B --no-transfer-progress clean package -DskipTests
    -Papache-release`
    - `python ci/release.py verify_kotlin_artifacts`: passed for all four
    public Kotlin artifacts; each
    Javadoc JAR contained exactly one `META-INF/LICENSE` and
    `META-INF/NOTICE`.
    - `python -m ruff format ci/release.py`, `python -m ruff check
    ci/release.py`, and
      `git diff --check`: passed.
    
    No build or test was run after relocating the already-inspected license
    content to `java/LICENSE`,
    per contributor instruction. The final change affects only release-file
    ownership and packaging.
    
    ## AI Contribution Checklist
    
    - [x] Substantial AI a
    
    ## Does this PR introduce any user-facing change?
    
    - [ ] Does this PR introduce any public API change?
    - [ ] Does this PR introduce any binary protocol compatibility change?
    
    ## Benchmark
    
    N/A. This PR changes release packaging and validation only.
---
 .agents/languages/java.md                          |   2 +
 bazel/BUILD                                        |  16 +++
 ci/release.py                                      | 131 ++++++++++++++++++++-
 compiler/examples/demo.fdl                         |  17 +++
 cpp/fory/BUILD                                     |  17 +++
 cpp/fory/encoder/BUILD                             |  17 +++
 cpp/fory/meta/BUILD                                |  17 +++
 cpp/fory/row/BUILD                                 |  17 +++
 cpp/fory/serialization/BUILD                       |  17 +++
 cpp/fory/thirdparty/BUILD                          |  17 +++
 cpp/fory/type/BUILD                                |  17 +++
 cpp/fory/util/BUILD                                |  17 +++
 .../src/main/resources/META-INF => }/LICENSE       |  82 +++++++------
 java/fory-core/src/main/resources/META-INF/LICENSE |   4 +
 java/fory-json/pom.xml                             |   2 +
 java/pom.xml                                       |  10 ++
 kotlin/pom.xml                                     |  29 +++++
 python/pyfory/buffer.pxi                           |  17 +++
 18 files changed, 408 insertions(+), 38 deletions(-)

diff --git a/.agents/languages/java.md b/.agents/languages/java.md
index f4848db70..93d058fea 100644
--- a/.agents/languages/java.md
+++ b/.agents/languages/java.md
@@ -5,6 +5,8 @@ Load this file when changing anything under `java/` or when 
Java drives a cross-
 ## Rules
 
 - Run all Maven commands from within `java/`.
+- The `java/` Maven aggregator must not contain a top-level `src/` directory. 
Keep Java
+  source-release legal files, including `LICENSE`, at the `java/` root.
 - Changes under `java/` must pass code style checks and tests.
 - When changes are limited to `fory-json` or `fory-format`, do not run 
`fory-core`
   tests. Install the changed module and its reactor dependencies with
diff --git a/bazel/BUILD b/bazel/BUILD
index e69de29bb..13a83393a 100644
--- a/bazel/BUILD
+++ b/bazel/BUILD
@@ -0,0 +1,16 @@
+# 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.
diff --git a/ci/release.py b/ci/release.py
index e5276c162..2d9563db1 100644
--- a/ci/release.py
+++ b/ci/release.py
@@ -52,8 +52,11 @@ FORY_CORE_NATIVE_IMAGE_PROPERTIES = (
 GRAALVM_FEATURE_SERVICE_ENTRY = (
     "META-INF/services/org.graalvm.nativeimage.hosted.Feature"
 )
-MAVEN_RELEASE_CMD = (
-    "mvn -T10 clean deploy --no-transfer-progress -DskipTests -Papache-release"
+JAVA_RELEASE_PACKAGE_CMD = (
+    "mvn -T10 clean package --no-transfer-progress -DskipTests 
-Papache-release"
+)
+JAVA_RELEASE_DEPLOY_CMD = (
+    "mvn -T10 deploy --no-transfer-progress -DskipTests -Papache-release"
 )
 MAVEN_SNAPSHOT_CMD = (
     "mvn -T10 clean deploy --no-transfer-progress -DskipTests "
@@ -240,6 +243,8 @@ def verify(v):
 def publish_jvm(languages="all", mode="release"):
     """Publish Java, Kotlin, and Scala artifacts through one ordered JVM 
owner."""
     langs = _jvm_release_langs(languages)
+    if mode == "release":
+        _require_clean_jvm_release_tree()
     _require_publication_authority(mode)
     _ensure_openjdk25()
     if "java" not in langs:
@@ -247,7 +252,6 @@ def publish_jvm(languages="all", mode="release"):
     for lang in langs:
         if lang == "java":
             _publish_java(mode)
-            _verify_fory_core_mr_jar()
         elif lang == "kotlin":
             _publish_kotlin(mode)
         elif lang == "scala":
@@ -275,6 +279,41 @@ def _require_publication_authority(mode):
         raise RuntimeError("JVM release publication requires a GPG secret key")
 
 
+def _require_clean_jvm_release_tree():
+    tracked = subprocess.run(
+        ["git", "status", "--porcelain=v1", "--untracked-files=no"],
+        cwd=PROJECT_ROOT_DIR,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+        text=True,
+        check=True,
+    )
+    untracked = subprocess.run(
+        [
+            "git",
+            "ls-files",
+            "--others",
+            "--directory",
+            "--no-empty-directory",
+            "--",
+            *JVM_RELEASE_LANGS,
+        ],
+        cwd=PROJECT_ROOT_DIR,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+        text=True,
+        check=True,
+    )
+    changes = tracked.stdout.splitlines()
+    changes.extend(f"?? {path}" for path in untracked.stdout.splitlines())
+    if changes:
+        raise RuntimeError(
+            "JVM release publication requires clean exact-commit sources. "
+            "Commit, move, or remove these files before publishing:\n"
+            + "\n".join(changes)
+        )
+
+
 def _has_gpg_secret_key():
     gpg = shutil.which("gpg")
     if not gpg:
@@ -292,8 +331,13 @@ def _has_gpg_secret_key():
 
 
 def _publish_java(mode="release"):
-    command = MAVEN_RELEASE_CMD if mode == "release" else MAVEN_SNAPSHOT_CMD
-    _run_release_cmd(command, "java")
+    if mode == "release":
+        _run_release_cmd(JAVA_RELEASE_PACKAGE_CMD, "java")
+        verify_java_artifacts()
+        _run_release_cmd(JAVA_RELEASE_DEPLOY_CMD, "java")
+    else:
+        _run_release_cmd(MAVEN_SNAPSHOT_CMD, "java")
+        _verify_fory_core_mr_jar()
 
 
 def _publish_kotlin(mode="release"):
@@ -561,6 +605,72 @@ def _verify_fory_core_mr_jar():
     )
 
 
+def verify_java_artifacts():
+    """Validate Java binary and source-release artifacts before deployment."""
+    _verify_fory_core_mr_jar()
+    version = _read_java_version()
+    archive_path = os.path.join(
+        PROJECT_ROOT_DIR,
+        "java",
+        "target",
+        f"fory-parent-{version}-source-release.zip",
+    )
+    if not os.path.exists(archive_path):
+        raise FileNotFoundError(f"Missing Java source-release artifact: 
{archive_path}")
+
+    root = f"fory-parent-{version}/"
+    with zipfile.ZipFile(archive_path) as archive:
+        archive_files = [
+            entry.filename for entry in archive.infolist() if not 
entry.is_dir()
+        ]
+        outside_root = [name for name in archive_files if not 
name.startswith(root)]
+        if outside_root:
+            raise RuntimeError(
+                f"{archive_path} contains files outside {root}: {outside_root}"
+            )
+        relative_files = [name[len(root) :] for name in archive_files]
+        packaged_files = set()
+        duplicate_files = set()
+        for name in relative_files:
+            if name in packaged_files:
+                duplicate_files.add(name)
+            packaged_files.add(name)
+        if duplicate_files:
+            raise RuntimeError(
+                f"{archive_path} contains duplicate files: 
{sorted(duplicate_files)}"
+            )
+        license_text = archive.read(f"{root}LICENSE").decode("utf-8")
+
+    tracked = subprocess.run(
+        ["git", "ls-files", "--", "java"],
+        cwd=PROJECT_ROOT_DIR,
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+        text=True,
+        check=True,
+    ).stdout.splitlines()
+    expected_files = {path[len("java/") :] for path in tracked}
+    expected_files.update({"DEPENDENCIES", "LICENSE", "NOTICE"})
+    unexpected = sorted(packaged_files.difference(expected_files))
+    missing = sorted(expected_files.difference(packaged_files))
+    if unexpected or missing:
+        raise RuntimeError(
+            f"{archive_path} does not match the tracked Java source tree: "
+            f"unexpected={unexpected}, missing={missing}"
+        )
+
+    license_path = os.path.join(PROJECT_ROOT_DIR, "java", "LICENSE")
+    with open(license_path, "r", encoding="utf-8") as license_file:
+        expected_license = license_file.read()
+    if license_text != expected_license:
+        raise RuntimeError(f"{archive_path} LICENSE does not match 
{license_path}")
+    logger.info(
+        "Verified Java source release contains %d tracked and legal files: %s",
+        len(packaged_files),
+        archive_path,
+    )
+
+
 def verify_kotlin_artifacts():
     """Open every public Kotlin artifact and validate its publication 
surface."""
     version = _read_kotlin_version()
@@ -647,6 +757,11 @@ def verify_kotlin_artifacts():
             )
         with zipfile.ZipFile(javadoc_path) as javadocs:
             javadoc_names = javadocs.namelist()
+        for required in ("META-INF/LICENSE", "META-INF/NOTICE"):
+            if javadoc_names.count(required) != 1:
+                raise RuntimeError(
+                    f"{javadoc_path} must contain exactly one {required}"
+                )
         if "index.html" not in javadoc_names or not any(
             name.endswith(".html") and name != "index.html" for name in 
javadoc_names
         ):
@@ -1665,6 +1780,12 @@ def _parse_args():
     )
     publish_jvm_parser.set_defaults(func=publish_jvm)
 
+    verify_java_parser = subparsers.add_parser(
+        "verify_java_artifacts",
+        description="Verify Java binary and source-release artifacts",
+    )
+    verify_java_parser.set_defaults(func=verify_java_artifacts)
+
     verify_kotlin_parser = subparsers.add_parser(
         "verify_kotlin_artifacts",
         description="Verify Kotlin binary, source, API documentation, and POM 
artifacts",
diff --git a/compiler/examples/demo.fdl b/compiler/examples/demo.fdl
index 4d9c56b7e..d0093a3e6 100644
--- a/compiler/examples/demo.fdl
+++ b/compiler/examples/demo.fdl
@@ -1,3 +1,20 @@
+// 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.
+
 // Demo FDL file for testing the compiler
 
 package demo;
diff --git a/cpp/fory/BUILD b/cpp/fory/BUILD
index aafa447db..81c40561e 100644
--- a/cpp/fory/BUILD
+++ b/cpp/fory/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library")
 
 cc_library(
diff --git a/cpp/fory/encoder/BUILD b/cpp/fory/encoder/BUILD
index a97b394b5..6fd9ca122 100644
--- a/cpp/fory/encoder/BUILD
+++ b/cpp/fory/encoder/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/cpp/fory/meta/BUILD b/cpp/fory/meta/BUILD
index c1d300f98..774339f62 100644
--- a/cpp/fory/meta/BUILD
+++ b/cpp/fory/meta/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/cpp/fory/row/BUILD b/cpp/fory/row/BUILD
index 536083774..ec6049ddd 100644
--- a/cpp/fory/row/BUILD
+++ b/cpp/fory/row/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/cpp/fory/serialization/BUILD b/cpp/fory/serialization/BUILD
index 67df6188a..dbf9532fc 100644
--- a/cpp/fory/serialization/BUILD
+++ b/cpp/fory/serialization/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/cpp/fory/thirdparty/BUILD b/cpp/fory/thirdparty/BUILD
index 73816dfe6..03f76cecf 100644
--- a/cpp/fory/thirdparty/BUILD
+++ b/cpp/fory/thirdparty/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/cpp/fory/type/BUILD b/cpp/fory/type/BUILD
index aeff47cdb..740f11b56 100644
--- a/cpp/fory/type/BUILD
+++ b/cpp/fory/type/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/cpp/fory/util/BUILD b/cpp/fory/util/BUILD
index ed38b341f..0f7e6c8ea 100644
--- a/cpp/fory/util/BUILD
+++ b/cpp/fory/util/BUILD
@@ -1,3 +1,20 @@
+# 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.
+
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 
 cc_library(
diff --git a/java/fory-core/src/main/resources/META-INF/LICENSE b/java/LICENSE
similarity index 79%
copy from java/fory-core/src/main/resources/META-INF/LICENSE
copy to java/LICENSE
index 149d74bdc..f530d4432 100644
--- a/java/fory-core/src/main/resources/META-INF/LICENSE
+++ b/java/LICENSE
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,66 +200,81 @@
    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 includes a number of Dependencies with separate copyright notices
-and license terms. Your use of these submodules is subject to the terms and
-conditions of the following licenses.
-
-================================================================
+This source release includes code derived from third-party projects. The files 
below are relative
+to the root of the Java source-release archive.
 
 ================================================================
 Apache-2.0 licenses
 ================================================================
-The following components are provided under the Apache-2.0 License. See 
project link for details.
-The text of each license is the standard Apache 2.0 license.
+The following components are provided under the Apache-2.0 License. See each 
project link for
+details. The text of each license is the standard Apache 2.0 license included 
above.
 
 * guava (https://github.com/google/guava)
     Files:
-      java/fory-core/src/main/java/org/apache/fory/util/Preconditions.java
-      java/fory-core/src/main/java/org/apache/fory/reflect/TypeParameter.java
-      java/fory-core/src/main/java/org/apache/fory/reflect/TypeRef.java
-      
java/fory-core/src/main/java/org/apache/fory/util/concurrency/DirectExecutorService.java
+      fory-core/src/main/java/org/apache/fory/util/Preconditions.java
+      fory-core/src/main/java/org/apache/fory/reflect/TypeParameter.java
+      fory-core/src/main/java/org/apache/fory/reflect/TypeRef.java
+      
fory-core/src/main/java/org/apache/fory/util/concurrency/DirectExecutorService.java
 
 * spark (https://github.com/apache/spark)
     Files:
-      java/fory-core/src/main/java/org/apache/fory/codegen/Code.java
+      fory-core/src/main/java/org/apache/fory/codegen/Code.java
+      
fory-format/src/main/java/org/apache/fory/format/vectorized/ArrowWriter.java
 
 * commons-io (https://github.com/apache/commons-io)
     Files:
-      
java/fory-core/src/main/java/org/apache/fory/io/ClassLoaderObjectInputStream.java
+      
fory-core/src/main/java/org/apache/fory/io/ClassLoaderObjectInputStream.java
+
+* commons-lang3 (https://github.com/apache/commons-lang)
+    Files:
+      fory-core/src/main/java/org/apache/fory/util/StringUtils.java
 
+* jackson-annotations (https://github.com/FasterXML/jackson-annotations)
+    Fory JSON implementations of the following annotation APIs are based on 
Jackson annotations.
+    Files:
+      
fory-json/src/main/java/org/apache/fory/json/annotation/JsonAnyGetter.java
+      
fory-json/src/main/java/org/apache/fory/json/annotation/JsonAnySetter.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonCreator.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonFormat.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonIgnore.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonProperty.java
+      
fory-json/src/main/java/org/apache/fory/json/annotation/JsonPropertyOrder.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonRawValue.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonSubTypes.java
+      
fory-json/src/main/java/org/apache/fory/json/annotation/JsonUnwrapped.java
+      fory-json/src/main/java/org/apache/fory/json/annotation/JsonValue.java
+
+* wast (https://github.com/wycst/wast)
+    Fory's probability-first printable-ASCII fast-path predicate is based in 
part on WAST's JSON
+    string escape predicate.
+    Files:
+      
fory-json/src/main/java/org/apache/fory/json/writer/JsonAsciiWordPredicates.java
 
 ================================================================
 BSD-3-Clause licenses
 ================================================================
-The following components are provided under the BSD-3-Clause License. See 
project link for details.
-The text of each license is also included in licenses/LICENSE-[project].txt.
+The full BSD-3-Clause license text is included in
+fory-core/src/main/resources/META-INF/licenses/LICENSE-kryo.txt.
 
 * kryo (https://github.com/EsotericSoftware/kryo)
     Files:
-      
java/fory-core/src/main/java/org/apache/fory/collection/ForyObjectMap.java
-      java/fory-core/src/main/java/org/apache/fory/collection/IdentityMap.java
-      
java/fory-core/src/main/java/org/apache/fory/collection/IdentityObjectIntMap.java
-      java/fory-core/src/main/java/org/apache/fory/collection/LongMap.java
-      
java/fory-core/src/main/java/org/apache/fory/collection/LongLongByteMap.java
-      java/fory-core/src/main/java/org/apache/fory/collection/ObjectIntMap.java
-      java/fory-core/src/main/java/org/apache/fory/type/Generics.java
-
-* janino (https://github.com/janino-compiler/janino)
-    Files:
-      Shaded classes under org/apache/fory/shaded/org/codehaus/janino/*
-      Shaded classes under org/apache/fory/shaded/org/codehaus/commons/*
-
+      fory-core/src/main/java/org/apache/fory/collection/ForyObjectMap.java
+      fory-core/src/main/java/org/apache/fory/collection/IdentityMap.java
+      
fory-core/src/main/java/org/apache/fory/collection/IdentityObjectIntMap.java
+      fory-core/src/main/java/org/apache/fory/collection/LongMap.java
+      fory-core/src/main/java/org/apache/fory/collection/LongLongByteMap.java
+      fory-core/src/main/java/org/apache/fory/collection/ObjectIntMap.java
+      fory-core/src/main/java/org/apache/fory/type/Generics.java
+      fory-core/src/test/java/org/apache/fory/type/GenericsTest.java
 
 ================================================================
 Public Domain
 ================================================================
-The following components are placed in the public domain.
-The author hereby disclaims copyright to this source code.
-See project link for details.
+The following component is placed in the public domain. The author disclaims 
copyright to this
+source code. See the project link for details.
 
 * java_util (https://github.com/yonik/java_util)
     Files:
-      java/fory-core/src/main/java/org/apache/fory/util/MurmurHash3.java
+      fory-core/src/main/java/org/apache/fory/util/MurmurHash3.java
diff --git a/java/fory-core/src/main/resources/META-INF/LICENSE 
b/java/fory-core/src/main/resources/META-INF/LICENSE
index 149d74bdc..2a0b1267e 100644
--- a/java/fory-core/src/main/resources/META-INF/LICENSE
+++ b/java/fory-core/src/main/resources/META-INF/LICENSE
@@ -229,6 +229,10 @@ The text of each license is the standard Apache 2.0 
license.
     Files:
       
java/fory-core/src/main/java/org/apache/fory/io/ClassLoaderObjectInputStream.java
 
+* commons-lang3 (https://github.com/apache/commons-lang)
+    Files:
+      java/fory-core/src/main/java/org/apache/fory/util/StringUtils.java
+
 
 ================================================================
 BSD-3-Clause licenses
diff --git a/java/fory-json/pom.xml b/java/fory-json/pom.xml
index a8ba16958..33659079d 100644
--- a/java/fory-json/pom.xml
+++ b/java/fory-json/pom.xml
@@ -291,6 +291,8 @@
                       <compilerarg value="17"/>
                       <compilerarg value="-sourcepath"/>
                       <compilerarg value=""/>
+                      <!-- The checked-in subtype table simulates processor 
output. -->
+                      <compilerarg value="-proc:none"/>
                     </javac>
                   </target>
                 </configuration>
diff --git a/java/pom.xml b/java/pom.xml
index a5596b35d..044cdd665 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -126,6 +126,16 @@
               </execution>
             </executions>
           </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-assembly-plugin</artifactId>
+            <configuration>
+              <!-- Keep java/LICENSE when the source-release descriptor adds 
generated legal files. -->
+              <archiverConfig>
+                <duplicateBehavior>skip</duplicateBehavior>
+              </archiverConfig>
+            </configuration>
+          </plugin>
         </plugins>
       </build>
     </profile>
diff --git a/kotlin/pom.xml b/kotlin/pom.xml
index 5ae5fbfb6..a60bb6a22 100644
--- a/kotlin/pom.xml
+++ b/kotlin/pom.xml
@@ -170,6 +170,35 @@
                     <artifactId>dokka-maven-plugin</artifactId>
                     <version>${dokka-maven-plugin.version}</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>3.3.1</version>
+                    <executions>
+                        <execution>
+                            <id>stage-dokka-legal-resources</id>
+                            <phase>prepare-package</phase>
+                            <goals>
+                                <goal>copy-resources</goal>
+                            </goals>
+                            <configuration>
+                                <!-- Dokka preserves and archives files 
already present in its output directory. -->
+                                <skip>${dokka.skip}</skip>
+                                
<outputDirectory>${project.build.directory}/dokkaJavadocJar/META-INF</outputDirectory>
+                                <resources>
+                                    <resource>
+                                        
<directory>${project.build.outputDirectory}/META-INF</directory>
+                                        <filtering>false</filtering>
+                                        <includes>
+                                            <include>LICENSE</include>
+                                            <include>NOTICE</include>
+                                        </includes>
+                                    </resource>
+                                </resources>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-source-plugin</artifactId>
diff --git a/python/pyfory/buffer.pxi b/python/pyfory/buffer.pxi
index 53ff441f2..5c85c46e7 100644
--- a/python/pyfory/buffer.pxi
+++ b/python/pyfory/buffer.pxi
@@ -1,3 +1,20 @@
+# 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.
+
 cimport cython
 from cpython.object cimport PyObject
 from cpython.buffer cimport Py_buffer, PyObject_GetBuffer, PyBuffer_Release, 
PyBUF_SIMPLE


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to