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

io.virtdata.docsys.metafs.fs.renderfs.api.rendered.CachedContent Maven / Gradle / Ivy

package io.virtdata.docsys.metafs.fs.renderfs.api.rendered;

import io.virtdata.docsys.metafs.fs.renderfs.api.versioning.Versioned;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.function.Supplier;

public class CachedContent implements RenderedContent {
    private final static Logger logger = LoggerFactory.getLogger(CachedContent.class);

    private final Supplier renderer;
    private T cache;
    private Versioned versions;

    public CachedContent(Supplier renderer, Versioned versions) {
        this.renderer = renderer;
        this.versions = versions;
    }

    @Override
    public long getVersion() {
        return versions.getVersion();
    }

    @Override
    public boolean isValid() {
        return versions.isValid();
    }

    @Override
    public T get() {
        if (cache==null) {
            logger.info("CREATING CONTENT");
            cache=renderer.get();
        }
        return cache;
    }

    @Override
    public String toString() {
        return "content[" + (cache==null ? "NULL" : cache.toString().length()+" bytes")+"]";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy