Package org.optaplanner.core.impl.domain.common.accessor.gizmo

## Class GizmoMemberDescriptor

- java.lang.Object
- - org.optaplanner.core.impl.domain.common.accessor.gizmo.GizmoMemberDescriptor

-     public class GizmoMemberDescriptor
      extends Object

  Describe and provide simplified/unified access for a Member

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `GizmoMemberDescriptor​(Member member)` |
    `GizmoMemberDescriptor​(String name, Object memberDescriptor, Object metadataDescriptor, Class<?> declaringClass)` |
    `GizmoMemberDescriptor​(String name, Object memberDescriptor, Object metadataDescriptor, Class<?> declaringClass, io.quarkus.gizmo.MethodDescriptor setterDescriptor)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getDeclaringClassName()` | Returns the declaring class name of the member in descriptor format.
    `String` | `getName()` |
    `Optional<io.quarkus.gizmo.MethodDescriptor>` | `getSetter()` |
    `Type` | `getType()` |
    `String` | `getTypeName()` | Returns the member type (for fields) / return type (for methods) name.
    `io.quarkus.gizmo.ResultHandle` | `invokeMemberMethod​(io.quarkus.gizmo.BytecodeCreator creator, io.quarkus.gizmo.MethodDescriptor method, io.quarkus.gizmo.ResultHandle bean, io.quarkus.gizmo.ResultHandle... parameters)` |
    `boolean` | `isInterfaceMethod()` | Returns true iff the getter is from an interface.
    `io.quarkus.gizmo.ResultHandle` | `readMemberValue​(io.quarkus.gizmo.BytecodeCreator bytecodeCreator, io.quarkus.gizmo.ResultHandle thisObj)` |
    `String` | `toString()` |
    `GizmoMemberDescriptor` | `whenIsField​(Consumer<io.quarkus.gizmo.FieldDescriptor> fieldDescriptorConsumer)` | If the member accessor is a field, pass the member's field descriptor to the provided consumer.
    `GizmoMemberDescriptor` | `whenIsMethod​(Consumer<io.quarkus.gizmo.MethodDescriptor> methodDescriptorConsumer)` | If the member accessor is a method, pass the member's method descriptor to the provided consumer.
    `GizmoMemberDescriptor` | `whenMetadataIsOnField​(Consumer<io.quarkus.gizmo.FieldDescriptor> fieldDescriptorConsumer)` | If the member metadata is on a field, pass the member's field descriptor to the provided consumer.
    `GizmoMemberDescriptor` | `whenMetadataIsOnMethod​(Consumer<io.quarkus.gizmo.MethodDescriptor> methodDescriptorConsumer)` | If the member metadata is on a method, pass the member's method descriptor to the provided consumer.
    `boolean` | `writeMemberValue​(io.quarkus.gizmo.BytecodeCreator bytecodeCreator, io.quarkus.gizmo.ResultHandle thisObj, io.quarkus.gizmo.ResultHandle newValue)` | Write the bytecode for writing to this member.

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

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

- - ### Constructor Detail

    - #### GizmoMemberDescriptor

          public GizmoMemberDescriptor​(Member member)

    - #### GizmoMemberDescriptor

          public GizmoMemberDescriptor​(String name,
                                       Object memberDescriptor,
                                       Object metadataDescriptor,
                                       Class<?> declaringClass)

    - #### GizmoMemberDescriptor

          public GizmoMemberDescriptor​(String name,
                                       Object memberDescriptor,
                                       Object metadataDescriptor,
                                       Class<?> declaringClass,
                                       io.quarkus.gizmo.MethodDescriptor setterDescriptor)

  - ### Method Detail

    - #### whenIsField

          public GizmoMemberDescriptor whenIsField​(Consumer<io.quarkus.gizmo.FieldDescriptor> fieldDescriptorConsumer)

      If the member accessor is a field, pass the member's field descriptor to the provided consumer. Otherwise, do nothing. Returns self for chaining.
      Parameters:
        `fieldDescriptorConsumer` - What to do if the member a field.
      Returns:
        this

    - #### whenIsMethod

          public GizmoMemberDescriptor whenIsMethod​(Consumer<io.quarkus.gizmo.MethodDescriptor> methodDescriptorConsumer)

      If the member accessor is a method, pass the member's method descriptor to the provided consumer. Otherwise, do nothing. Returns self for chaining.
      Parameters:
        `methodDescriptorConsumer` - What to do if the member a method.
      Returns:
        this

    - #### readMemberValue

          public io.quarkus.gizmo.ResultHandle readMemberValue​(io.quarkus.gizmo.BytecodeCreator bytecodeCreator,
                                                               io.quarkus.gizmo.ResultHandle thisObj)

    - #### writeMemberValue

          public boolean writeMemberValue​(io.quarkus.gizmo.BytecodeCreator bytecodeCreator,
                                          io.quarkus.gizmo.ResultHandle thisObj,
                                          io.quarkus.gizmo.ResultHandle newValue)

      Write the bytecode for writing to this member. If there is no setter, it write the bytecode for throwing the exception. Return true if it was able to write the member value.
      Parameters:
        `bytecodeCreator` - the bytecode creator to use
        `thisObj` - the bean to write the new value to
        `newValue` - to new value of the member
      Returns:
        True if it was able to write the member value, false otherwise

    - #### whenMetadataIsOnField

          public GizmoMemberDescriptor whenMetadataIsOnField​(Consumer<io.quarkus.gizmo.FieldDescriptor> fieldDescriptorConsumer)

      If the member metadata is on a field, pass the member's field descriptor to the provided consumer. Otherwise, do nothing. Returns self for chaining.
      Parameters:
        `fieldDescriptorConsumer` - What to do if the member a field.
      Returns:
        this

    - #### whenMetadataIsOnMethod

          public GizmoMemberDescriptor whenMetadataIsOnMethod​(Consumer<io.quarkus.gizmo.MethodDescriptor> methodDescriptorConsumer)

      If the member metadata is on a method, pass the member's method descriptor to the provided consumer. Otherwise, do nothing. Returns self for chaining.
      Parameters:
        `methodDescriptorConsumer` - What to do if the member a method.
      Returns:
        this

    - #### getDeclaringClassName

          public String getDeclaringClassName()

      Returns the declaring class name of the member in descriptor format. For instance, the declaring class name of Object.toString() is "java/lang/Object".
      Returns:
        Returns the declaring class name of the member in descriptor format

    - #### isInterfaceMethod

          public boolean isInterfaceMethod()

      Returns true iff the getter is from an interface.
      Returns:
        true iff the getter is from an interface

    - #### invokeMemberMethod

          public io.quarkus.gizmo.ResultHandle invokeMemberMethod​(io.quarkus.gizmo.BytecodeCreator creator,
                                                                  io.quarkus.gizmo.MethodDescriptor method,
                                                                  io.quarkus.gizmo.ResultHandle bean,
                                                                  io.quarkus.gizmo.ResultHandle... parameters)

    - #### getSetter

          public Optional<io.quarkus.gizmo.MethodDescriptor> getSetter()

    - #### getName

          public String getName()

    - #### getTypeName

          public String getTypeName()

      Returns the member type (for fields) / return type (for methods) name. The name does not include generic infomation.

    - #### getType

          public Type getType()

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`