Package org.apache.cayenne.reflect

## Class BaseArcProperty

- java.lang.Object
- - org.apache.cayenne.reflect.BaseProperty
  - - org.apache.cayenne.reflect.BaseArcProperty

- All Implemented Interfaces:
    `ArcProperty`, `PropertyDescriptor`
  Direct Known Subclasses:
    `BaseToManyProperty`, `BaseToOneProperty`

      public abstract class BaseArcProperty
      extends BaseProperty
      implements ArcProperty

  A base implementation of the `ArcProperty`.
  Since:
    3.0

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected String` | `complimentaryReverseArcName` |
    `protected ObjRelationship` | `relationship` |
    `protected String` | `reverseDbPath` |
    `protected ClassDescriptor` | `targetDescriptor` |

    - ### Fields inherited from class org.apache.cayenne.reflect.BaseProperty

      `accessor, owner`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BaseArcProperty​(ClassDescriptor owner, ClassDescriptor targetDescriptor, Accessor accessor, String reverseName)` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ArcProperty` | `getComplimentaryReverseArc()` | Returns a complimentary reverse ArcProperty or null if no reverse arc exists.
    `String` | `getComplimentaryReverseDbRelationshipPath()` | Returns a path over reverse DbRelationships for this arc's ObjRelationship.
    `ObjRelationship` | `getRelationship()` | Returns a relationship associated with this arc.
    `ClassDescriptor` | `getTargetDescriptor()` | Returns a ClassDescriptor for the type of graph nodes pointed to by this arc property.
    `abstract boolean` | `isFault​(Object source)` | Returns whether a target node connected to a given object is an unresolved fault.
    `protected void` | `setReverse​(Object source, Object oldTarget, Object newTarget)` | A convenience method to set the reverse arc used by subclasses.
    `abstract boolean` | `visit​(PropertyVisitor visitor)` | A visitor accept method.

    - ### Methods inherited from class org.apache.cayenne.reflect.BaseProperty

      `getName, injectValueHolder, readProperty, readPropertyDirectly, toString, writeProperty, writePropertyDirectly`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.apache.cayenne.reflect.ArcProperty

      `invalidate`

    - ### Methods inherited from interface org.apache.cayenne.reflect.PropertyDescriptor

      `equals, getName, injectValueHolder, readProperty, readPropertyDirectly, writeProperty, writePropertyDirectly`

- - ### Field Detail

    - #### complimentaryReverseArcName

          protected String complimentaryReverseArcName

    - #### targetDescriptor

          protected ClassDescriptor targetDescriptor

    - #### relationship

          protected ObjRelationship relationship

    - #### reverseDbPath

          protected String reverseDbPath

  - ### Constructor Detail

    - #### BaseArcProperty

          public BaseArcProperty​(ClassDescriptor owner,
                                 ClassDescriptor targetDescriptor,
                                 Accessor accessor,
                                 String reverseName)

  - ### Method Detail

    - #### visit

          public abstract boolean visit​(PropertyVisitor visitor)

      Description copied from interface: `PropertyDescriptor`
      A visitor accept method.
      Specified by:
        `visit` in interface `PropertyDescriptor`
      Specified by:
        `visit` in class `BaseProperty`
      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.

    - #### isFault

          public abstract boolean isFault​(Object source)

      Description copied from interface: `ArcProperty`
      Returns whether a target node connected to a given object is an unresolved fault.
      Specified by:
        `isFault` in interface `ArcProperty`
      Parameters:
        `source` - an object that is a source object of the relationship.

    - #### getComplimentaryReverseDbRelationshipPath

          public String getComplimentaryReverseDbRelationshipPath()

      Description copied from interface: `ArcProperty`
      Returns a path over reverse DbRelationships for this arc's ObjRelationship.
      Specified by:
        `getComplimentaryReverseDbRelationshipPath` in interface `ArcProperty`

    - #### getRelationship

          public ObjRelationship getRelationship()

      Description copied from interface: `ArcProperty`
      Returns a relationship associated with this arc.
      Specified by:
        `getRelationship` in interface `ArcProperty`

    - #### getComplimentaryReverseArc

          public ArcProperty getComplimentaryReverseArc()

      Description copied from interface: `ArcProperty`
      Returns a complimentary reverse ArcProperty or null if no reverse arc exists.
      Specified by:
        `getComplimentaryReverseArc` in interface `ArcProperty`

    - #### getTargetDescriptor

          public ClassDescriptor getTargetDescriptor()

      Description copied from interface: `ArcProperty`
      Returns a ClassDescriptor for the type of graph nodes pointed to by this arc property. Note that considering that a target object may be a subclass of the class handled by the descriptor, users of this method may need to call `ClassDescriptor.getSubclassDescriptor(Class)` before using the descriptor to access objects.
      Specified by:
        `getTargetDescriptor` in interface `ArcProperty`

    - #### setReverse

          protected void setReverse​(Object source,
                                    Object oldTarget,
                                    Object newTarget)

      A convenience method to set the reverse arc used by subclasses.