Skip to content

disaverio/ucast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ucast

License Maven Central

A Kotlin library that models, builds, serializes and normalizes UCAST boolean expressions — the JSON-based format also adopted in OPA - Open Policy Agent, see docs.

ucast-lib provides:

  • A type-safe model of UCAST expressions (CompoundExpression, FieldExpression).
  • A Kotlin DSL for building expressions ergonomically.
  • JSON serialization in two dialects: expanded and concise.
  • A normalization primitive that converts an arbitrary expression into Disjunctive Normal Form.

Install

Choose the version that matches the Jackson major version used in your project.

Your Jackson dependency ucast version to use
com.fasterxml.jackson (Jackson 2.x) 0.0.0
tools.jackson (Jackson 3.x) 1.0.0

Maven

Jackson 3.x projects (tools.jackson)

<dependency>
    <groupId>dev.disaverio</groupId>
    <artifactId>ucast</artifactId>
    <version>1.0.0</version>
</dependency>

Jackson 2.x projects (com.fasterxml.jackson)

<dependency>
    <groupId>dev.disaverio</groupId>
    <artifactId>ucast</artifactId>
    <version>0.0.0</version>
</dependency>

Gradle (Kotlin DSL)

Jackson 3.x projects (tools.jackson)

dependencies {
    implementation("dev.disaverio:ucast:1.0.0")
}

Jackson 2.x projects (com.fasterxml.jackson)

dependencies {
    implementation("dev.disaverio:ucast:0.0.0")
}

Quick example

import dev.disaverio.ucast.dsl.*

val expr = and {
    "age" gte 18
    or {
        "role" eq "admin"
        "department" `in` listOf("eng", "sec")
    }
    not {
        "status" eq "banned"
    }
}

Grammar

The two supported syntaxes are documented under src/main/resources/definitions as resources:

Note: the concise dialect is currently emit-only; deserialization supports the expanded form only.

Build

Requires JDK 17+.

mvn clean test

License

Apache License 2.0 — see LICENSE.

About

Kotlin library to build, validate, normalize and (de)serialize UCAST expressions.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages