Package org.apache.cayenne.reflect

## Interface PropertyDescriptor

- All Known Subinterfaces:
    `ArcProperty`, `AttributeProperty`, `Property`, `ToManyMapProperty`, `ToManyProperty`, `ToOneProperty`
  All Known Implementing Classes:
    `BaseArcProperty`, `BaseProperty`, `BaseToManyProperty`, `BaseToOneProperty`, `SimpleAttributeProperty`

      public interface PropertyDescriptor

  Defines bean property API used by Cayenne to access object data, do faulting and graph maintenance tasks.
  Since:
    4.0

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getName()` | Returns property name.
    `void` | `injectValueHolder​(Object object)` | If a property is implemented as a ValueHolder, this operation would create an unfaulted value holder and inject it into the object, if an object doesn't have it set yet.
    `Object` | `readProperty​(Object object)` | Returns a property value, inflating unresolved object if need.
    `Object` | `readPropertyDirectly​(Object object)` | Returns a property value of an object without disturbing the object fault status.
    `boolean` | `visit​(PropertyVisitor visitor)` | A visitor accept method.
    `void` | `writeProperty​(Object object, Object oldValue, Object newValue)` | Sets a property value, inflating unresolved object if need.
    `void` | `writePropertyDirectly​(Object object, Object oldValue, Object newValue)` | Sets a property value of an object without disturbing the object fault status.

- - ### Method Detail

    - #### getName

          String getName()

      Returns property name.

    - #### readPropertyDirectly

          Object readPropertyDirectly​(Object object)
                               throws PropertyException

      Returns a property value of an object without disturbing the object fault status.
      Throws:
        `PropertyException`

    - #### readProperty

          Object readProperty​(Object object)
                       throws PropertyException

      Returns a property value, inflating unresolved object if need.
      Throws:
        `PropertyException`

    - #### writePropertyDirectly

          void writePropertyDirectly​(Object object,
                                     Object oldValue,
                                     Object newValue)
                              throws PropertyException

      Sets a property value of an object without disturbing the object fault status. Old value of the property is specified as a hint and can be ignored by the property implementor.
      Throws:
        `PropertyException`

    - #### writeProperty

          void writeProperty​(Object object,
                             Object oldValue,
                             Object newValue)
                      throws PropertyException

      Sets a property value, inflating unresolved object if need. Old value of the property is specified as a hint and can be ignored by the property implementor.
      Throws:
        `PropertyException`

    - #### visit

          boolean visit​(PropertyVisitor visitor)

      A visitor accept method.
      Returns:
        a status returned by the corresponding callback method of the visitor. It serves as an indication of whether peer properties processing is still needed.

    - #### injectValueHolder

          void injectValueHolder​(Object object)
                          throws PropertyException

      If a property is implemented as a ValueHolder, this operation would create an unfaulted value holder and inject it into the object, if an object doesn't have it set yet.
      Throws:
        `PropertyException`