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]