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

org.zodiac.cache.reactive.config.CaffeineCacheInfo Maven / Gradle / Ivy

The newest version!
package org.zodiac.cache.reactive.config;

import java.time.Duration;
import java.util.Objects;

import org.zodiac.cache.reactive.ReactiveCacheManager;
import org.zodiac.cache.reactive.config.ReactiveCacheInfo.Strength;
import org.zodiac.cache.reactive.supports.CaffeineReactiveCacheManager;

public class CaffeineCacheInfo {

    long maximumSize = 1024;
    int initialCapacity = 64;
    Duration expireAfterWrite = Duration.ofHours(6);
    Duration expireAfterAccess = Duration.ofHours(1);
    Strength keyStrength = Strength.SOFT;
    Strength valueStrength = Strength.SOFT;

    public CaffeineCacheInfo() {
        super();
    }

    public long getMaximumSize() {
        return maximumSize;
    }

    public void setMaximumSize(long maximumSize) {
        this.maximumSize = maximumSize;
    }

    public int getInitialCapacity() {
        return initialCapacity;
    }

    public void setInitialCapacity(int initialCapacity) {
        this.initialCapacity = initialCapacity;
    }

    public Duration getExpireAfterWrite() {
        return expireAfterWrite;
    }

    public void setExpireAfterWrite(Duration expireAfterWrite) {
        this.expireAfterWrite = expireAfterWrite;
    }

    public Duration getExpireAfterAccess() {
        return expireAfterAccess;
    }

    public void setExpireAfterAccess(Duration expireAfterAccess) {
        this.expireAfterAccess = expireAfterAccess;
    }

    public Strength getKeyStrength() {
        return keyStrength;
    }

    public void setKeyStrength(Strength keyStrength) {
        this.keyStrength = keyStrength;
    }

    public Strength getValueStrength() {
        return valueStrength;
    }

    public void setValueStrength(Strength valueStrength) {
        this.valueStrength = valueStrength;
    }

    @Override
    public int hashCode() {
        return Objects.hash(expireAfterAccess, expireAfterWrite, initialCapacity, keyStrength, maximumSize,
            valueStrength);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        CaffeineCacheInfo other = (CaffeineCacheInfo)obj;
        return Objects.equals(expireAfterAccess, other.expireAfterAccess)
            && Objects.equals(expireAfterWrite, other.expireAfterWrite) && initialCapacity == other.initialCapacity
            && keyStrength == other.keyStrength && maximumSize == other.maximumSize
            && valueStrength == other.valueStrength;
    }

    @Override
    public String toString() {
        return "[maximumSize=" + maximumSize + ", initialCapacity=" + initialCapacity
            + ", expireAfterWrite=" + expireAfterWrite + ", expireAfterAccess=" + expireAfterAccess
            + ", keyStrength=" + keyStrength + ", valueStrength=" + valueStrength + "]";
    }

    ReactiveCacheManager createCacheManager() {
        return new CaffeineReactiveCacheManager(createBuilder());
    }

    com.github.benmanes.caffeine.cache.Caffeine createBuilder() {
        com.github.benmanes.caffeine.cache.Caffeine builder = com.github.benmanes.caffeine.cache.Caffeine.newBuilder()
            .expireAfterAccess(expireAfterAccess).expireAfterWrite(expireAfterWrite).maximumSize(maximumSize);
        if (valueStrength == Strength.SOFT) {
            builder.softValues();
        } else {
            builder.weakValues();
        }
        if (keyStrength == Strength.WEAK) {
            builder.weakKeys();
        }
        return builder;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy