All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javers.core.snapshot.ObjectHasher Maven / Gradle / Ivy

There is a newer version: 7.6.1
Show newest version
package org.javers.core.snapshot;

import org.javers.common.string.ShaDigest;
import org.javers.core.graph.LiveCdoFactory;
import org.javers.core.json.JsonConverter;
import org.javers.core.metamodel.object.CdoSnapshotState;
import org.javers.core.metamodel.object.CdoWrapper;

/**
 * @author bartosz.walacik
 */
public class ObjectHasher {
    private final SnapshotFactory snapshotFactory;
    private final JsonConverter jsonConverter;
    private final LiveCdoFactory liveCdoFactory;

    public ObjectHasher(SnapshotFactory snapshotFactory, JsonConverter jsonConverter, LiveCdoFactory liveCdoFactory) {
        this.snapshotFactory = snapshotFactory;
        this.jsonConverter = jsonConverter;
        this.liveCdoFactory = liveCdoFactory;
    }

    public String hash(Object object) {
        CdoWrapper cdo = liveCdoFactory.create(object, null);

        CdoSnapshotState state = snapshotFactory.createSnapshotState(cdo);

        String jsonState = jsonConverter.toJson(state);

        return ShaDigest.longDigest(jsonState);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy