Skip to content

takeeasyman/automerge-java

This branch is 15 commits behind automerge/automerge-java:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 30, 2023
2e9aa7a · Jul 30, 2023

History

9 Commits
May 5, 2023
Jul 30, 2023
May 5, 2023
Jul 30, 2023
Jul 30, 2023
May 5, 2023
May 5, 2023
May 5, 2023
Jul 30, 2023
May 5, 2023
Jul 30, 2023
May 5, 2023
May 5, 2023
May 5, 2023
May 5, 2023

Repository files navigation

Automerge for Java

This is a java implmentation of automerge. It is implemented by wrapping the Rust automerge implementation but you shouldn't have to think about that. If you are interested take a look at HACKING.md

Documentation is mostly just the API docs.

Installation

Maven

<dependency>
  <groupId>org.automerge</groupId>
  <artifactId>automerge</artifactId>
  <version>0.0.4</version>
</dependency>

Gradle (including android)

dependencies {
    implementation group: 'org.automerge', name: 'automerge', version: "0.0.4"
}

Leiningen

  :dependencies [[org.automerge/automerge "0.0.4"]]

A quick example

import org.automerge.ChangeHash;
import org.automerge.Document;
import org.automerge.ObjectId;
import org.automerge.ObjectType;
import org.automerge.Transaction;

public class App {

    public static void main(String[] args) {
        // Create an object
        Document doc = new Document();

        ObjectId text;
        try(Transaction tx = doc.startTransaction()) {
            // Create a text object under the "text" key of the root map
            text = tx.set(ObjectId.ROOT, "text", ObjectType.TEXT);
            tx.spliceText(text, 0, 0, "Hello world");
            tx.commit();
        }

        // save the document
        byte[] docBytes = doc.save();

        // Load the document
        Document doc2 = Document.load(docBytes);
        System.out.println(doc2.text(text).get().toString()); // Prints "Hello world"

        // Modify the doc in doc2
        try(Transaction tx = doc2.startTransaction()) {
            tx.spliceText(text, 5, 0, " beautiful");
            tx.commit();
        }

        // Modify the doc in doc1
        try(Transaction tx = doc.startTransaction()) {
            tx.spliceText(text, 5, 0, " there");
            tx.commit();
        }

        // Merge the changes
        doc.merge(doc2);

        // Prints either "Hello there beautiful world" or "hello beautiful there world"
        // depending on the actor IDs that were generated for each document.
        System.out.println(doc.text(text).get().toString());
    }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 59.2%
  • Rust 35.1%
  • Kotlin 5.7%