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

org.javers.core.graph.ObjectAccessProxy Maven / Gradle / Ivy

There is a newer version: 7.6.2
Show newest version
package org.javers.core.graph;

import org.javers.common.validation.Validate;
import java.util.Optional;
import java.util.function.Supplier;

public class ObjectAccessProxy implements ObjectAccessor {
    private final Class javaClass;
    private final Object localId;
    private final Supplier objectSupplier;

    public ObjectAccessProxy(Supplier objectSupplier, Class javaClass, Object localId) {
        Validate.argumentsAreNotNull(objectSupplier, javaClass);
        this.javaClass = javaClass;
        this.objectSupplier = objectSupplier;
        this.localId = localId;
    }

    @Override
    public Class getTargetClass() {
        return javaClass;
    }

    @Override
    public Optional getLocalId() {
        return Optional.ofNullable(localId);
    }

    @Override
    public T access() {
        return objectSupplier.get();
    }

    public Supplier getObjectSupplier() {
        return objectSupplier;
    }
}