Package org.optaplanner.core.impl.domain.variable.inverserelation

## Class InverseRelationShadowVariableDescriptor<Solution_>

- java.lang.Object
- - org.optaplanner.core.impl.domain.variable.descriptor.VariableDescriptor<Solution_>
  - - org.optaplanner.core.impl.domain.variable.descriptor.ShadowVariableDescriptor<Solution_>
    - - org.optaplanner.core.impl.domain.variable.inverserelation.InverseRelationShadowVariableDescriptor<Solution_>

- Type Parameters:
    `Solution_` - the solution type, the class with the `PlanningSolution` annotation
  All Implemented Interfaces:
    `Serializable`

      public class InverseRelationShadowVariableDescriptor<Solution_>
      extends ShadowVariableDescriptor<Solution_>

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected boolean` | `singleton` |
    `protected VariableDescriptor<Solution_>` | `sourceVariableDescriptor` |

    - ### Fields inherited from class org.optaplanner.core.impl.domain.variable.descriptor.VariableDescriptor

      `entityDescriptor, sinkVariableDescriptorList, variableMemberAccessor, variableName`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `InverseRelationShadowVariableDescriptor​(EntityDescriptor<Solution_> entityDescriptor, MemberAccessor variableMemberAccessor)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `VariableListener` | `buildVariableListener​(InnerScoreDirector<Solution_> scoreDirector)` |
    `Demand` | `getProvidedDemand()` |
    `List<VariableDescriptor<Solution_>>` | `getSourceVariableDescriptorList()` | Inverse of `VariableDescriptor.getSinkVariableDescriptorList()`.
    `Class<? extends VariableListener>` | `getVariableListenerClass()` |
    `void` | `linkVariableDescriptors​(DescriptorPolicy descriptorPolicy)` |
    `void` | `processAnnotations​(DescriptorPolicy descriptorPolicy)` |

    - ### Methods inherited from class org.optaplanner.core.impl.domain.variable.descriptor.ShadowVariableDescriptor

      `getGlobalShadowOrder, hasVariableListener, isGenuineAndUninitialized, setGlobalShadowOrder, toString`

    - ### Methods inherited from class org.optaplanner.core.impl.domain.variable.descriptor.VariableDescriptor

      `getEntityDescriptor, getMemberAccessorSpeedNote, getSimpleEntityAndVariableName, getSinkVariableDescriptorList, getValue, getVariableName, getVariablePropertyType, isValuePotentialAnchor, registerSinkVariableDescriptor, setValue`

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

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

- - ### Field Detail

    - #### sourceVariableDescriptor

          protected VariableDescriptor<Solution_> sourceVariableDescriptor

    - #### singleton

          protected boolean singleton

  - ### Constructor Detail

    - #### InverseRelationShadowVariableDescriptor

          public InverseRelationShadowVariableDescriptor​(EntityDescriptor<Solution_> entityDescriptor,
                                                         MemberAccessor variableMemberAccessor)

  - ### Method Detail

    - #### processAnnotations

          public void processAnnotations​(DescriptorPolicy descriptorPolicy)

      Specified by:
        `processAnnotations` in class `ShadowVariableDescriptor<Solution_>`

    - #### linkVariableDescriptors

          public void linkVariableDescriptors​(DescriptorPolicy descriptorPolicy)

      Specified by:
        `linkVariableDescriptors` in class `VariableDescriptor<Solution_>`

    - #### getSourceVariableDescriptorList

          public List<VariableDescriptor<Solution_>> getSourceVariableDescriptorList()

      Description copied from class: `ShadowVariableDescriptor`
      Inverse of `VariableDescriptor.getSinkVariableDescriptorList()`.
      Specified by:
        `getSourceVariableDescriptorList` in class `ShadowVariableDescriptor<Solution_>`
      Returns:
        never null, only variables affect this shadow variable directly

    - #### getVariableListenerClass

          public Class<? extends VariableListener> getVariableListenerClass()

      Specified by:
        `getVariableListenerClass` in class `ShadowVariableDescriptor<Solution_>`

    - #### getProvidedDemand

          public Demand getProvidedDemand()

      Specified by:
        `getProvidedDemand` in class `ShadowVariableDescriptor<Solution_>`
      Returns:
        never null

    - #### buildVariableListener

          public VariableListener buildVariableListener​(InnerScoreDirector<Solution_> scoreDirector)

      Specified by:
        `buildVariableListener` in class `ShadowVariableDescriptor<Solution_>`
      Parameters:
        `scoreDirector` - never null
      Returns:
        never null