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

org.infinispan.client.hotrod.impl.cache.CacheEntryMetadataImpl Maven / Gradle / Ivy

package org.infinispan.client.hotrod.impl.cache;

import java.time.Duration;
import java.time.Instant;
import java.util.Optional;

import org.infinispan.api.common.CacheEntryExpiration;
import org.infinispan.api.common.CacheEntryMetadata;
import org.infinispan.api.common.CacheEntryVersion;
import org.infinispan.client.hotrod.MetadataValue;

public class CacheEntryMetadataImpl implements CacheEntryMetadata {
   private final MetadataValue metadataValue;
   private final CacheEntryExpiration expiration;
   private final CacheEntryVersion version;

   public CacheEntryMetadataImpl(MetadataValue metadataValue) {
      this.metadataValue = metadataValue;
      this.expiration = getCacheExpiration(metadataValue.getLifespan(), metadataValue.getMaxIdle());
      this.version = new CacheEntryVersionImpl(metadataValue.getVersion());
   }

   @Override
   public Optional creationTime() {
      return metadataValue.getCreated() < 0
            ? Optional.empty()
            : Optional.of(Instant.ofEpochMilli(metadataValue.getCreated()));
   }

   @Override
   public Optional lastAccessTime() {
      return metadataValue.getLastUsed() < 0
            ? Optional.empty()
            : Optional.of(Instant.ofEpochMilli(metadataValue.getLastUsed()));
   }

   @Override
   public CacheEntryExpiration expiration() {
      return expiration;
   }

   @Override
   public CacheEntryVersion version() {
      return version;
   }

   public MetadataValue getMetadataValue() {
      return metadataValue;
   }

   private static CacheEntryExpiration getCacheExpiration(long lifespan, long maxIdle) {
      if (lifespan < 0) {
         if (maxIdle < 0) return CacheEntryExpiration.IMMORTAL;
         return CacheEntryExpiration.withMaxIdle(Duration.ofSeconds(maxIdle));
      }

      if (maxIdle < 0) return CacheEntryExpiration.withLifespan(Duration.ofSeconds(lifespan));
      return CacheEntryExpiration.withLifespanAndMaxIdle(Duration.ofSeconds(lifespan), Duration.ofSeconds(maxIdle));
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy