[CALCITE-4830] Remove remaining uses of ImmutableBeans and deprecate

- Supersede and deprecate two-level nested Config classes to ensure all immutables are hidden
  and carry consistene style.
- Remove the use of @Value.Style in non-test code to ensure consistent styling.
- Add annotation processing to all modules implementing new RelRule.Config subclasses
- Deprecate public methods and interfaces of ImmutableBeans
- Deprecate RelRule.Config.EMPTY
- Update javadocs for ImmutableBeans, RelRule, RelRule.CONFIG
- Add annotation processing to the core/test module
- Add compilation dependency on jsr305 to work around an Immutables bug when compiling against old Guava versions.

Note that during the development of this patch, kapt was evaluated extensively and ultimately ruled
out for use. The reasons included:
- Kapt is not compatible with JDK17: https://youtrack.jetbrains.com/issue/KT-45545
- Kapt causes deadlocks: https://youtrack.jetbrains.com/issue/KT-47853

Workarounds to those issues could not be made reliable.
74 files changed
tree: 954cd1a566a084d8e4ef9518cac428c992373324
  1. .github/
  2. .idea/
  3. babel/
  4. bom/
  5. buildSrc/
  6. cassandra/
  7. core/
  8. druid/
  9. elasticsearch/
  10. example/
  11. file/
  12. geode/
  13. gradle/
  14. innodb/
  15. kafka/
  16. linq4j/
  17. mongodb/
  18. pig/
  19. piglet/
  20. plus/
  21. redis/
  22. release/
  23. server/
  24. site/
  25. spark/
  26. splunk/
  27. src/
  28. testkit/
  29. ubenchmark/
  30. .asf.yaml
  31. .editorconfig
  32. .gitattributes
  33. .gitignore
  34. .ratignore
  35. .travis.yml
  36. appveyor.yml
  37. build.gradle.kts
  38. gradle.properties
  39. gradlew
  40. gradlew.bat
  41. LICENSE
  42. NOTICE
  43. README
  44. README.md
  45. settings.gradle.kts
  46. sqlline
  47. sqlline.bat
  48. sqlsh
  49. sqlsh.bat
README.md

Maven Central Travis Build Status CI Status AppVeyor Build Status

Apache Calcite

Apache Calcite is a dynamic data management framework.

It contains many of the pieces that comprise a typical database management system but omits the storage primitives. It provides an industry standard SQL parser and validator, a customisable optimizer with pluggable rules and cost functions, logical and physical algebraic operators, various transformation algorithms from SQL to algebra (and the opposite), and many adapters for executing SQL queries over Cassandra, Druid, Elasticsearch, MongoDB, Kafka, and others, with minimal configuration.

For more details, see the home page.