// 
// Decompiled by Procyon v0.6.0
// 

package com.nimbusds.jose.util.cache;

import java.util.Objects;
import com.nimbusds.jose.shaded.jcip.Immutable;

@Immutable
public final class CachedObject<V>
{
    private final V object;
    private final long timestamp;
    private final long expirationTime;
    
    public static long computeExpirationTime(final long currentTime, final long timeToLive) {
        final long expirationTime = currentTime + timeToLive;
        if (expirationTime < 0L) {
            return Long.MAX_VALUE;
        }
        return expirationTime;
    }
    
    public CachedObject(final V object, final long timestamp, final long expirationTime) {
        this.object = Objects.requireNonNull(object);
        this.timestamp = timestamp;
        this.expirationTime = expirationTime;
    }
    
    public V get() {
        return this.object;
    }
    
    public long getTimestamp() {
        return this.timestamp;
    }
    
    public long getExpirationTime() {
        return this.expirationTime;
    }
    
    public boolean isValid(final long currentTime) {
        return currentTime < this.expirationTime;
    }
    
    public boolean isExpired(final long currentTime) {
        return !this.isValid(currentTime);
    }
}
