Interface PropertyResolver

  • All Superinterfaces:
    ValueResolver<java.lang.String>
    All Known Implementing Classes:
    MapPropertyResolver

    public interface PropertyResolver
    extends ValueResolver<java.lang.String>
    A property resolver is capable of resolving properties from an underlying property source.
    Since:
    1.0
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      boolean containsProperties​(java.lang.String name)
      Whether the given property or any nested properties exist for the key given key within this resolver.
      boolean containsProperty​(java.lang.String name)
      Whether the given property is contained within this resolver.
      default <T> java.util.Optional<T> get​(java.lang.String name, ArgumentConversionContext<T> conversionContext)
      Resolve the given property for the given name.
      default java.util.Map<java.lang.String,​java.lang.Object> getProperties​(java.lang.String name)
      Return all the properties under the given key.
      default java.util.Map<java.lang.String,​java.lang.Object> getProperties​(java.lang.String name, StringConvention keyFormat)
      Return all the properties under the given key.
      <T> java.util.Optional<T> getProperty​(java.lang.String name, ArgumentConversionContext<T> conversionContext)
      Resolve the given property for the given name, type and generic type arguments.
      default <T> java.util.Optional<T> getProperty​(java.lang.String name, Argument<T> argument)
      Resolve the given property for the given name, type and generic type arguments.
      default <T> java.util.Optional<T> getProperty​(java.lang.String name, java.lang.Class<T> requiredType)
      Resolve the given property for the given name.
      default <T> java.util.Optional<T> getProperty​(java.lang.String name, java.lang.Class<T> requiredType, ConversionContext context)
      Resolve the given property for the given name, type and generic type arguments.
      default <T> T getProperty​(java.lang.String name, java.lang.Class<T> requiredType, T defaultValue)
      Resolve the given property for the given name.
      default java.util.Collection<java.lang.String> getPropertyEntries​(java.lang.String name)
      Returns a collection of properties entries under the given key.
      default <T> T getRequiredProperty​(java.lang.String name, java.lang.Class<T> requiredType)
      Resolve the given property for the given name.
      static java.lang.String nameOf​(java.lang.String... path)
      Builds a property name for the given property path.
    • Method Detail

      • containsProperty

        boolean containsProperty​(@NonNull
                                 java.lang.String name)

        Whether the given property is contained within this resolver.

        Note that this method will return false for nested properties. In other words given a key of foo.bar this method will return false for: resolver.containsProperty("foo")

        To check for nested properties using containsProperties(String) instead.

        Parameters:
        name - The name of the property
        Returns:
        True if it is
      • containsProperties

        boolean containsProperties​(@NonNull
                                   java.lang.String name)
        Whether the given property or any nested properties exist for the key given key within this resolver.
        Parameters:
        name - The name of the property
        Returns:
        True if it is
      • getProperty

        @NonNull
        <T> java.util.Optional<T> getProperty​(@NonNull
                                              java.lang.String name,
                                              @NonNull
                                              ArgumentConversionContext<T> conversionContext)

        Resolve the given property for the given name, type and generic type arguments.

        Implementers can choose to implement more intelligent type conversion by analyzing the typeArgument.

        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name
        conversionContext - The conversion context
        Returns:
        An optional containing the property value if it exists
      • getPropertyEntries

        @NonNull
        default java.util.Collection<java.lang.String> getPropertyEntries​(@NonNull
                                                                          java.lang.String name)
        Returns a collection of properties entries under the given key. For example given the following keys:
        
         datasource.default.url=localhost
         datasource.another.url=someother
         
        Calling getPropertyEntries(String) with a value of datasource will result in a collection containing default and other.
        Parameters:
        name - The name to resolve
        Returns:
        The property entries.
      • getProperty

        @NonNull
        default <T> java.util.Optional<T> getProperty​(@NonNull
                                                      java.lang.String name,
                                                      @NonNull
                                                      Argument<T> argument)

        Resolve the given property for the given name, type and generic type arguments.

        Implementers can choose to implement more intelligent type conversion by analyzing the typeArgument.

        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name
        argument - The required type
        Returns:
        An optional containing the property value if it exists
      • getProperties

        @NonNull
        default java.util.Map<java.lang.String,​java.lang.Object> getProperties​(@NonNull
                                                                                     java.lang.String name)
        Return all the properties under the given key.
        Parameters:
        name - The name
        Returns:
        The properties
      • getProperties

        @NonNull
        default java.util.Map<java.lang.String,​java.lang.Object> getProperties​(@Nullable
                                                                                     java.lang.String name,
                                                                                     @Nullable
                                                                                     StringConvention keyFormat)
        Return all the properties under the given key. By default Micronaut stores keys in keb-case, such that normalized lookups are more efficient. You can obtain the raw key values by passing in StringConvention.RAW.
        Parameters:
        name - The name
        keyFormat - The key format to use for the keys. Default is kebab-case.
        Returns:
        The properties
      • getProperty

        @NonNull
        default <T> java.util.Optional<T> getProperty​(@NonNull
                                                      java.lang.String name,
                                                      @NonNull
                                                      java.lang.Class<T> requiredType,
                                                      @NonNull
                                                      ConversionContext context)

        Resolve the given property for the given name, type and generic type arguments.

        Implementers can choose to implement more intelligent type conversion by analyzing the typeArgument.

        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name
        requiredType - The required type
        context - The ConversionContext to apply to any conversion
        Returns:
        An optional containing the property value if it exists
      • get

        @NonNull
        default <T> java.util.Optional<T> get​(@NonNull
                                              java.lang.String name,
                                              @NonNull
                                              ArgumentConversionContext<T> conversionContext)
        Description copied from interface: ValueResolver
        Resolve the given property for the given name.
        Specified by:
        get in interface ValueResolver<java.lang.String>
        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name
        conversionContext - The conversion context
        Returns:
        An optional containing the property value if it exists and is able to be converted
      • getProperty

        @NonNull
        default <T> java.util.Optional<T> getProperty​(@NonNull
                                                      java.lang.String name,
                                                      @NonNull
                                                      java.lang.Class<T> requiredType)
        Resolve the given property for the given name.
        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name
        requiredType - The required type
        Returns:
        An optional containing the property value if it exists
      • getProperty

        @Nullable
        default <T> T getProperty​(@NonNull
                                  java.lang.String name,
                                  @NonNull
                                  java.lang.Class<T> requiredType,
                                  @Nullable
                                  T defaultValue)
        Resolve the given property for the given name.
        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name
        requiredType - The required type
        defaultValue - The default value
        Returns:
        An optional containing the property value if it exists
      • getRequiredProperty

        @NonNull
        default <T> T getRequiredProperty​(@NonNull
                                          java.lang.String name,
                                          @NonNull
                                          java.lang.Class<T> requiredType)
                                   throws PropertyNotFoundException
        Resolve the given property for the given name.
        Type Parameters:
        T - The concrete type
        Parameters:
        name - The name of the property
        requiredType - The required type
        Returns:
        The value of the property
        Throws:
        PropertyNotFoundException - exception when property does not exist
      • nameOf

        static java.lang.String nameOf​(java.lang.String... path)
        Builds a property name for the given property path.
        Parameters:
        path - The path
        Returns:
        The property name