com.holonplatform.core.property

## Interface PathProperty<T>

- Type Parameters:
    `T` - Property value type
  All Superinterfaces:
    CloneableProperty<T,PathProperty<T>,PathProperty.Builder<T,PathProperty<T>,?>>, CloneableProperty.CloneablePathProperty<T,PathProperty<T>>, ConverterExpression<T>, DataMappable, Expression, HasConfiguration<PropertyConfiguration>, Localizable, Path<T>, PathExpression<T>, Property<T>, QueryExpression<T>, QueryProjection<T>, Serializable, TypedExpression<T>, Validator.Validatable<T>
  All Known Subinterfaces:
    BeanProperty<T>, BeanProperty.Builder<T>, BooleanBeanProperty, BooleanProperty, BooleanProperty.BooleanPropertyBuilder, CollectionPathProperty<E,C>, ListPathProperty<T>, ListPathProperty.ListPathPropertyBuilder<T>, NumericBeanProperty<N>, NumericProperty<N>, NumericProperty.NumericPropertyBuilder<N>, PathProperty.PathPropertyBuilder<T>, PropertyBoxProperty, PropertyBoxProperty.PropertyBoxPropertyBuilder, SetPathProperty<T>, SetPathProperty.SetPathPropertyBuilder<T>, StringBeanProperty, StringProperty, StringProperty.StringPropertyBuilder, TemporalBeanProperty<T>, TemporalProperty<T>, TemporalProperty.TemporalPropertyBuilder<T>

      public interface PathProperty<T>
      extends CloneableProperty.CloneablePathProperty<T,PathProperty<T>>, PathExpression<T>

  A `Property` bound to a `Path`, using `Path.getName()` as property name.

  This property can be used as `QueryExpression` and `QueryProjection` through the `PathExpression` super interface.

  A `PathProperty` is a `ConverterExpression` too, using the `PropertyValueConverter` as expression value converter, if available.

  Type specific extensions are available to provide query expression convenience builder methods.

  The `create(String, Class)` and `create(Path)` builder methods can be used to create and configure a new `PathProperty` instance.

  Since:
    5.0.0
  See Also:
    `StringProperty`, `NumericProperty`, `TemporalProperty`, `BooleanProperty`, `PropertyBoxProperty`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `PathProperty.Builder<T,P extends Path<T> & Property<T>,B extends PathProperty.Builder<T,P,B>>` Base interface for `Path` and `Property` builders.
    `static interface` | `PathProperty.PathPropertyBuilder<T>` `PathProperty` builder.

    - ### Nested classes/interfaces inherited from interface com.holonplatform.core.property.CloneableProperty

      `CloneableProperty.CloneablePathProperty<T,P extends Property<T> & Path<T>>`

    - ### Nested classes/interfaces inherited from interface com.holonplatform.core.property.Property

      `Property.PropertyAccessException, Property.PropertyNotFoundException, Property.PropertyReadException, Property.PropertyReadOnlyException, Property.PropertyWriteException`

    - ### Nested classes/interfaces inherited from interface com.holonplatform.core.i18n.Localizable

      `Localizable.LocalizableBuilder, Localizable.LocalizationException`

    - ### Nested classes/interfaces inherited from interface com.holonplatform.core.Expression

      `Expression.ExpressionResolverFunction<E extends Expression,R extends Expression>, Expression.InvalidExpressionException`

    - ### Nested classes/interfaces inherited from interface com.holonplatform.core.Path

      `Path.FinalPath<T>, Path.PathBuilder<T>`

  - ### Field Summary

    - ### Fields inherited from interface com.holonplatform.core.Path

      `PATH_HIERARCHY_SEPARATOR`

    - ### Fields inherited from interface com.holonplatform.core.DataMappable

      `DEFAULT_CONFIG_PROPERTY_PREFIX, PATH`

  - ### Method Summary

    All Methods Static Methods Instance Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `static <T> PathProperty.PathPropertyBuilder<T>` | `create(Path<T> path)` Create a new `PathProperty` from given `path`, using given `Path` `name` and `type`.
    `static <T> PathProperty.PathPropertyBuilder<T>` | `create(String name, Class<? extends T> type)` Create a new `PathProperty` with given `name` and `type`.
    `default boolean` | `isReadOnly()` Gets whether property is read-only, i.e. does not support value setting.

    - ### Methods inherited from interface com.holonplatform.core.property.CloneableProperty

      `clone`

    - ### Methods inherited from interface com.holonplatform.core.property.Property

      `getConfiguration, getConvertedValue, getConverter, getExpressionValueConverter, getName, getTemporalType, getType, present, render, renderIfAvailable`

    - ### Methods inherited from interface com.holonplatform.core.Validator.Validatable

      `getValidators, validate`

    - ### Methods inherited from interface com.holonplatform.core.i18n.Localizable

      `builder, getMessage, getMessageArguments, getMessageCode, of, of`

    - ### Methods inherited from interface com.holonplatform.core.HasConfiguration

      `hasConfiguration`

    - ### Methods inherited from interface com.holonplatform.core.ConverterExpression

      `getModelType, getModelValue`

    - ### Methods inherited from interface com.holonplatform.core.TypedExpression

      `isCollectionExpression, isConverterExpression`

    - ### Methods inherited from interface com.holonplatform.core.Expression

      `validate`

    - ### Methods inherited from interface com.holonplatform.core.query.PathExpression

      `asc, desc, from`

    - ### Methods inherited from interface com.holonplatform.core.Path

      `fullName, fullName, getName, getParent, isRootPath, of, relativeName, relativeName, stream`

    - ### Methods inherited from interface com.holonplatform.core.DataMappable

      `getDataPath, isDataMappable`

    - ### Methods inherited from interface com.holonplatform.core.query.QueryExpression

      `between, count, eq, eq, goe, goe, gt, gt, in, in, in, isNotNull, isNull, loe, loe, lt, lt, max, min, neq, neq, nin, nin, nin`

    - ### Methods inherited from interface com.holonplatform.core.query.QueryProjection

      `bean, constant, countAll, path, propertySet, propertySet`

- - ### Method Detail

    - #### isReadOnly

          default boolean isReadOnly()

      Description copied from interface: `Property`
      Gets whether property is read-only, i.e. does not support value setting.

      When a property is read-only, a `Property.PropertyReadOnlyException` should be thrown by property value setting methods.

      Specified by:
        `isReadOnly` in interface `Property<T>`
      Returns:
        `true` if property is read-only

    - #### create

          static <T> PathProperty.PathPropertyBuilder<T> create(String name,
                                                                Class<? extends T> type)

      Create a new `PathProperty` with given `name` and `type`.
      Specified by:
        `create` in interface `PathExpression<T>`
      Type Parameters:
        `T` - Property (path) type
      Parameters:
        `name` - Property name (not null)
        `type` - Property value type (not null)
      Returns:
        `PathProperty` builder

    - #### create

          static <T> PathProperty.PathPropertyBuilder<T> create(Path<T> path)

      Create a new `PathProperty` from given `path`, using given `Path` `name` and `type`.
      Type Parameters:
        `T` - Property (path) type
      Parameters:
        `path` - Path from which to obtain the property path name and type (not null)
      Returns:
        `PathProperty` builder

Copyright © 2019 The Holon Platform. All rights reserved.