Class StorageRecord<Type>

  • Type Parameters:
    Type - the object type represented by the record
    Direct Known Subclasses:
    MutableStorageRecord

    @NotThreadSafe
    public class StorageRecord<Type>
    extends Object
    Represents a versioned record in a StorageService.
    • Field Detail

      • version

        private long version
        Version field.
      • value

        private String value
        Value field.
      • expiration

        private Long expiration
        Expiration field.
    • Constructor Detail

      • StorageRecord

        public StorageRecord​(@Nonnull @NotEmpty
                             String val,
                             @Nullable
                             Long exp)
        Constructor.
        Parameters:
        val - value
        exp - expiration, or null if none
    • Method Detail

      • getVersion

        public long getVersion()
        Get the record version.
        Returns:
        the record version
      • getValue

        @Nonnull
        public String getValue()
        Get the record value.
        Returns:
        the record value
      • getValue

        @Nonnull
        public Type getValue​(@Nonnull
                             StorageSerializer<Type> serializer,
                             @Nonnull @NotEmpty
                             String context,
                             @Nonnull @NotEmpty
                             String key)
                      throws IOException
        Get the record value, using a custom deserialization process.
        Parameters:
        serializer - a custom (de)serialization process to apply
        context - context of record
        key - key of record
        Returns:
        the record value
        Throws:
        IOException - if deserialization fails
      • getExpiration

        @Nullable
        public Long getExpiration()
        Get the record expiration.
        Returns:
        the record expiration, or null if none
      • setVersion

        protected void setVersion​(long ver)
        Set the record version.
        Parameters:
        ver - the new record version, must be > 0
      • setValue

        protected void setValue​(@Nonnull @NotEmpty
                                String val)
        Set the record value.
        Parameters:
        val - the new record value
      • setValue

        protected void setValue​(@Nonnull
                                Type instance,
                                @Nonnull
                                StorageSerializer<Type> serializer)
                         throws IOException
        Set the record value, using a custom serialization process.
        Parameters:
        instance - the new record value
        serializer - a custom serialization process to apply
        Throws:
        IOException - if serialization fails
      • setExpiration

        protected void setExpiration​(@Nullable
                                     Long exp)
        Set the record expiration.
        Parameters:
        exp - the new record expiration, or null if none
      • incrementVersion

        protected long incrementVersion()
        Increment the record version and returns the new value.
        Returns:
        the updated version