GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Evolveum/cel-java: Fast, portable, non-Turing complete expression evaluation with gradual typing (Java)

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

973 Commits
973 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
bundle
bundle
 
 
checker
checker
 
 
codelab
codelab
 
 
common
common
 
 
compiler
compiler
 
 
conformance/src/test/java/dev/cel
conformance/src/test/java/dev/cel
 
 
extensions
extensions
 
 
optimizer
optimizer
 
 
parser
parser
 
 
policy
policy
 
 
protobuf
protobuf
 
 
publish
publish
 
 
runtime
runtime
 
 
testing
testing
 
 
validator
validator
 
 
verifier
verifier
 
 
.bazelrc
.bazelrc
 
 
.gitignore
.gitignore
 
 
BUILD.bazel
BUILD.bazel
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
MODULE.bazel
MODULE.bazel
 
 
README.md
README.md
 
 
antlr.bzl
antlr.bzl
 
 
build.sh
build.sh
 
 
cel_android_rules.bzl
cel_android_rules.bzl
 
 
java_lite_proto_cel_library.bzl
java_lite_proto_cel_library.bzl
 
 
java_lite_proto_cel_library_impl.bzl
java_lite_proto_cel_library_impl.bzl
 
 
repositories.bzl
repositories.bzl
 
 
testing.bzl
testing.bzl
 
 

Repository files navigation

Evolveum Fork of cel-java

This project contains fork of cel-java project, a Java implementation of Common Expression Language.

How Is This Fork Different?

This fork brings nullability to the CEL world. The code of the CEL engine is modified to work seamlessly with null values in CEL expressions. E.g., following CEL expression fails miserably in original CEL implementation, in case there are null values in the "focus" data structure.

focus.activation.administrativeStatus == 'enabled'

This fork brings null-tolerant implementation of CEL. The expression above works well when interpreted by the code in this fork, with any combination of null values. Expression authors do not need to care about null values most of the time, and they can focus on the business aspects of the expression, as they are supposed to.

Purpose, Security and Quality

This code is maintained solely for the use in midPoint. Tests in this fork are not maintained, as we were not able to make the test work. Honestly, we do not think it is work the effort to fight a serious battle with Bazel just to be able to run the tests. The code in this fork in tested indirectly, using tests in midPoint. However, these tests are testing only the scenarios that midPoint is using.

Therefore, there are no guarantees that this code will work without midPoint, and absolutely no guarantees regarding security of the code when used outside midPoint.

Use at your own risk.

Why Fork?

Why are we forking and not contributing back to the original project instead?

Simply speaking, mostly due to the Google CLA. We are not willing to sign it, which is showstopper for any contribution.

However, there seems to be also deeper incompatibilities of this fork with the approach of original team, which makes the contribution unlikely to be accepted even if we did sign the CLA.

Overall, CEL seems to suffer from serious nullophobia (irrational fear of null values). This fork is fixing that.

To be fair, CEL introduced "optionals" to make working with null values possible. However, using optionals is not easy, especially for people who are not expert programmers. This would not work for us. Null-tolerant language is much better way that optionals for our use cases.

Also, we have to make a serious butchery of the basel-based build configuration, to be able to build the project at all, without dependency on Google infrastructure.

Build

Use build.sh to build the project (Bazel is required).

Use publish/publish.sh to publish Maven artifacts.

About

Fast, portable, non-Turing complete expression evaluation with gradual typing (Java)

cel.dev

Resources

Readme
License

Contributing

Contributing
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.