Interface MetaParam.Lookup

  • All Known Subinterfaces:
    EntryView.ReadEntryView<K,​V>, EntryView.ReadWriteEntryView<K,​V>, EntryViews.AccessLoggingReadWriteView<K,​V>
    All Known Implementing Classes:
    MetaParamsInternalMetadata
    Enclosing interface:
    MetaParam<T>

    public static interface MetaParam.Lookup
    Provides metadata parameter lookup capabilities using Class as lookup key.

    When the MetaParam type is generic, e.g. MetaParam.MetaEntryVersion, passing the correct Class information so that the return of findMetaParam(java.lang.Class<T>) is of the expected type can be a bit tricky. MetaEntryVersion#type() offers an easy way to retrieve the expected MetaParam type from findMetaParam(java.lang.Class<T>) at the expense of some type safety:

    
         Class<MetaEntryVersion<Long>> type = MetaEntryVersion.type();
         Optional<MetaEntryVersion<Long>> metaVersion =
              metaParamLookup.findMetaParam(type);
     
    In the future, the API might be adjusted to provide additional lookup methods where this situation is improved. Also, if the MetaParam type is not generic, e.g. MetaParam.MetaLifespan, the problem is avoided altogether:
    
         Optional<MetaLifespan<Long>> metaLifespan =
              metaParamLookup.findMetaParam(MetaLifespan.class);
     

    A user that queries meta parameters can never assume that the meta parameter will always exist because there are scenarios, such as when compatibility mode is enabled, when meta parameters that are assumed to be present are not due to the API multiplexing that occurs. For example, when compatibility mode is enabled, the REST server can't assume that MIME metadata will be present since data might have been stored with embedded or remote (Hot Rod) API.

    Since:
    8.0
    • Method Detail

      • findMetaParam

        <T extends MetaParamOptional<T> findMetaParam​(Class<T> type)
        Returns a non-empty Optional instance containing a metadata parameter instance that can be assigned to the type Class passed in, or an empty Optional if no metadata can be assigned to that type.
        Type Parameters:
        T - metadata parameter type