* Suppress AccessController deprecation warning
AccessController has been deprecated for removal since Java 17 as part of JEP 411.
Since snappy-java needs to maintain compatibility with Java 8+, we cannot remove
the AccessController.doPrivileged calls. This commit adds @SuppressWarnings("removal")
to suppress the deprecation warning while maintaining backward compatibility.
The AccessController calls are used to bypass SecurityManager restrictions when
cleaning DirectByteBuffers. In Java 17+, these calls effectively just run the
action directly since SecurityManager is being phased out.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Apply @SuppressWarnings to specific methods instead of class level
Based on review feedback, narrowed the scope of @SuppressWarnings("removal")
annotations to only the specific methods and code blocks that use AccessController,
rather than applying it at the class level. This approach:
- Reduces the scope of the suppression
- Avoids hiding other potential deprecation warnings
- Follows best practices for targeted warning suppression
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Update both release.yml and snapshot.yml workflows to use Java 21 instead of Java 11 for building releases and snapshots.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
- Remove master branch references from build-native.yml
- Update snapshot.yml to trigger on main branch
- Remove master branch references from test.yml
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
- Change dialect from scala213source3 to scala3
- Add StandardConvention project layout
- Reduce maxColumn from 180 to 100 for better readability
- Add Scala 3 specific rewrite rules for modern syntax
- Configure newlines and docstring formatting
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
Update Scala version from 2.12.11 to 3.7.1. Scala is only used for testing dependencies (airframe-log) and build tooling, not for main application code. All tests pass with the new version.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Replace setup-scala with setup-java in snapshot workflow
Updates snapshot.yml to use actions/setup-java@v4 instead of olafurpg/setup-scala@v14 for better consistency with other workflows and official GitHub Actions.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add Java 24 to CI test matrix
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Updates snapshot.yml to use actions/setup-java@v4 instead of olafurpg/setup-scala@v14 for better consistency with other workflows and official GitHub Actions.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
* Update CLAUDE.md development workflow
- Fix typo in 'commit'
- Add PR guidelines and common development tasks
- Update native code build command to use 'make clean-native native'
* Update Snappy version to 1.2.2 and fix test compatibility
- Update SNAPPY_VERSION from 1.1.10 to 1.2.2 in VERSION file
- Fix SnappyOutputStreamTest expected compression size for aarch64
(90277 bytes) to match improved compression ratio in Snappy 1.2.2
- All tests pass with new version
Fixes#662🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Update CI to trigger tests on Makefile and VERSION changes
- Add Makefile* pattern to catch all Makefile variants
- Add **/VERSION pattern to catch VERSION files anywhere in repo
- Ensures tests run when native build configuration or versions change
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Migrate to sonaRelease command for publishing
- Remove sbt-sonatype plugin dependency
- Update to sbt 1.11.3 for built-in Sonatype support
- Replace sonatypePublishToBundle with direct Sonatype URLs
- Add release process documentation to CLAUDE.md
- Simplify publishing workflow using built-in sbt functionality
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Update publishTo to use Central Portal URLs and localStaging
- Use https://central.sonatype.com/repository/maven-snapshots/ for snapshots
- Use localStaging.value for releases to support sonaRelease workflow
* Revert unintended changes to keep PR focused on sonaRelease migration
- Revert SNAPPY_VERSION upgrade (1.2.2 -> 1.1.10)
- Revert SnappyOutputStreamTest compression ratio change
- Revert native library binary update
- Revert CI workflow trigger additions
These changes should be in separate PRs, not part of the publishing migration.
* Update release.yml to use sonaRelease command
- Replace sonatypeBundleRelease with sonaRelease
- Update environment variable names to standard SONATYPE_USERNAME/PASSWORD
- Aligns with sbt's built-in Sonatype publishing workflow
* Update snapshot.yml environment variable names
- Update SONATYPE_USER to SONATYPE_USERNAME
- Update SONATYPE_PASS to SONATYPE_PASSWORD
- Aligns with standard naming used in sonaRelease workflow
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Update CLAUDE.md development workflow
- Fix typo in 'commit'
- Add PR guidelines and common development tasks
- Update native code build command to use 'make clean-native native'
* Update code formatting command to scalafmtAll
- Change from scalafmtCheckAll to scalafmtAll for actual formatting
- scalafmtAll applies formatting changes instead of just checking
* Skip CI tests for non-code changes
- Add dorny/paths-filter to detect code changes
- Run actual tests only when code/build files change
- Add skip jobs to satisfy required status checks
- Reduces CI time for documentation-only changes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add .scalafmt.conf to code change detection
- Ensures code format check runs when scalafmt config changes
- Important for maintaining consistent code formatting rules
* Add sbt launcher scripts to code change detection
- Includes sbt and sbt.bat in path filters
- Ensures tests run when build scripts are modified
* Remove test documentation file
- No longer needed for PR demonstration
- PR description already explains the changes
* Remove test-jdk skip jobs
- Remove unnecessary skip jobs for JDK tests
- Keep only code_format_skip for required status check
* Remove all skip jobs
- Remove code_format_skip job
- Simplify workflow to only run tests when code changes detected
---------
Co-authored-by: Claude <noreply@anthropic.com>
* Add CLAUDE.md for Claude Code guidance
This file provides essential guidance for Claude Code when working with
the snappy-java repository, including:
- Common build and test commands
- High-level architecture overview
- Platform support details
- Important implementation notes
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Remove outdated findbugs and jacoco commands
* Fix test command for debug logging
* Clarify test frameworks: AirSpec for Scala, JUnit for Java
---------
Co-authored-by: Claude <noreply@anthropic.com>
currently we have written a lambda (turns into anonymous class) which
invokes a MethodHandle for the java.util.zip.CRC32C constructor as the
Supplier<Checksum> implementation.
This has 2 layers of misdirection. The Supplier implementation spun up
by the jvm calls the anonymous lambda class, which then calls the
MethodHandle invoke. This leads to stack traces like:
use LambdaMetafactory to generate a Supplier<Checksum> which calls the
java.util.zip.CRC32C
Co-authored-by: bo8979 <bo8979@cerner.com>