Some utility classes around java records

Overview

record-util

Some utility classes around java records

On the menu

  • MapTrait

    Transform any record to a java.util.Map just by implementing the interface MapTrait

      record Person(String name, int age) implements MapTrait {}
      ...
      Map<String, Object> map = new Person("Bob", 42);
  • WithTrait

    Implementing the interface WithTrait adds several methods with that allow to duplicate a record instance and update several record components in the process

    record Person(String name, int age) implements WithTrait<Person> {}
    ...
    var bob = new Person("Bob", 42);
    var ana = bob.with("name", "Ana");
  • Wither

    A very fast but more cumbersome way to duplicate/update a record instance

    record Person(String name, int age) {}
    ...
    private static final Wither<Person> wither = Wither.of(MethodHandles.lookup(), Person.class);
    ...
    var bob = new Person("Bob", 42);
    var ana = wither.with(bob, "name", "Ana");
  • JSONTrait

    Implementing the interface JSONTrait adds two methods toJSON and toHumanReadableJSONthat enable to output a record instance using the JSON format

    record Person(String name, int age) implements JSONTrait { }
    ...
    var person = new Person("Bob", 42);
    System.out.println(person.toHumanReadableJSON());

    JSONTrait also defines a method parse(reader, recordType) to decode a JSON file to a record instance

    var reader = ... // a FileReader or a StringReader
    var person = JSONTrait.parse(reader, Person.class);

How to build

  mvn package
You might also like...

Tool for creating reports from Java Flight Recorder dumps

jfr-report-tool Tool for creating reports from Java Flight Recorder dumps. Influenced by https://github.com/chrishantha/jfr-flame-graph . Kudos to @ch

Oct 28, 2022

Log analyser / visualiser for Java HotSpot JIT compiler. Inspect inlining decisions, hot methods, bytecode, and assembly. View results in the JavaFX user interface.

JITWatch Log analyser and visualiser for the HotSpot JIT compiler. Video introduction to JITWatch video Slides from my LJC lightning talk on JITWatch

Jan 3, 2023

Java monitoring for the command-line, profiler included

jvmtop is a lightweight console application to monitor all accessible, running jvms on a machine. In a top-like manner, it displays JVM internal metri

Jan 6, 2023

A java agent to generate method mappings to use with the linux `perf` tool

perf-map-agent A java agent to generate /tmp/perf-pid.map files for just-in-time(JIT)-compiled methods for use with the Linux perf tools. Build Make

Jan 1, 2023

PerfJ is a wrapper of linux perf for java programs.

PerfJ is a wrapper of linux perf for java programs.

PerfJ PerfJ is a wrapper of linux perf for java programs. As Brendan Gregg's words In order to profile java programs, you need a profiler that can sam

Jan 2, 2023

OOM diagnostics for Java.

Polarbear A tool to help diagnose OutOfMemoryError conditions. Polarbear helps track down the root cause of OutOfMemoryError exceptions in Java. When

May 14, 2019

Inline raw ASM instructions in Java

asm-inline At first I thought: Oh, I can make an optimization transformer for Proguard And then this happened. Example: public class Test { public

Dec 8, 2022

Terminal UI JMX (Java management extension) viewer

Terminal UI JMX (Java management extension) viewer

JMXViewer Terminal UI JMX (Java management extension) viewer Usage java -jar jmxviewer.jar [pid] The PID is optional. If it is not provided, the appli

Sep 15, 2022

The Java agent for Apache SkyWalking

Apache SkyWalking Java Agent SkyWalking-Java: The Java Agent for Apache SkyWalking, which provides the native tracing/metrics/logging abilities for Ja

Jan 5, 2023
Comments
  • Add `toLines()` trait

    Add `toLines()` trait

    Interested in adding a trait for a multi-line toString() variant that indents each nested component on a best-effort basis?

    Something similar to https://sormuras.github.io/blog/2020-05-06-records-to-text-block.html

    opened by sormuras 5
Releases(SNAPSHOT)
Owner
Rémi Forax
Rémi Forax
A plugin for the ja-netfilter, it can dump the transformed classes.

A plugin for the ja-netfilter, it can dump the transformed classes.

null 7 Apr 17, 2022
One file java script for visualizing JDK flight recorder execution logs as flamegraphs without any dependencies except Java and a browser.

Flamegraph from JFR logs Simple one file Java script to generate flamegraphs from Java flight recordings without installing Perl and the Brendan Gregg

Billy Sjöberg 17 Oct 2, 2022
JVM Explorer is a Java desktop application for browsing loaded class files inside locally running Java Virtual Machines.

JVM Explorer JVM Explorer is a Java desktop application for browsing loaded class files inside locally running Java Virtual Machines. Features Browse

null 109 Nov 30, 2022
A Java agent that rewrites bytecode to instrument allocation sites

The Allocation Instrumenter is a Java agent written using the java.lang.instrument API and ASM. Each allocation in your Java program is instrumented;

Google 438 Dec 19, 2022
Java memory allocation profiler

Aprof - Java Memory Allocation Profiler What is it? The Aprof project is a Java Memory Allocation Profiler with very low performance impact on profile

Devexperts 211 Dec 15, 2022
Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events

async-profiler This project is a low overhead sampling profiler for Java that does not suffer from Safepoint bias problem. It features HotSpot-specifi

null 5.8k Jan 3, 2023
BTrace - a safe, dynamic tracing tool for the Java platform

btrace A safe, dynamic tracing tool for the Java platform Version 2.1.0 Quick Summary BTrace is a safe, dynamic tracing tool for the Java platform. BT

btrace.io 5.3k Jan 9, 2023
Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)

GCViewer 1.36 GCViewer is a little tool that visualizes verbose GC output generated by Sun / Oracle, IBM, HP and BEA Java Virtual Machines. It is free

null 4.1k Jan 4, 2023
Java Agent for Memory Measurements

Overview Jamm provides MemoryMeter, a Java agent for all Java versions to measure actual object memory use including JVM overhead. Use To use MemoryMe

Jonathan Ellis 624 Dec 28, 2022
Get Method Sampling from Java Flight Recorder Dump and convert to FlameGraph compatible format.

Note: Travis has removed the support for Oracle JDK 8. Therefore the build status is removed temporarily. Converting JFR Method Profiling Samples to F

M. Isuru Tharanga Chrishantha Perera 248 Dec 16, 2022