org.codehaus.groovy.ast

## Interface NodeMetaDataHandler

- All Known Implementing Classes:
    AnnotatedNode, AnnotationConstantExpression, AnnotationNode, ArgumentListExpression, ArrayExpression, AssertStatement, ASTNode, AttributeExpression, BinaryExpression, BitwiseNegationExpression, BlockStatement, BooleanExpression, BreakStatement, BytecodeExpression, BytecodeSequence, CaseStatement, CastExpression, CatchStatement, ClassExpression, ClassNode, ClosureExpression, ClosureListExpression, CompareIdentityExpression, CompareToNullExpression, CompileUnit, CompileUnit.ConstructedOuterNestedClassNode, ConstantExpression, ConstructorCallExpression, ConstructorNode, ContinueStatement, DeclarationExpression, DecompiledClassNode, DoWhileStatement, ElvisOperatorExpression, EmptyExpression, EmptyStatement, EnumConstantClassNode, Expression, ExpressionAsVariableSlot, ExpressionStatement, ExtensionMethodNode, FieldExpression, FieldNode, ForStatement, GenericsType, GroovyParser.AdditiveExprAltContext, GroovyParser.AndExprAltContext, GroovyParser.AnnotatedQualifiedClassNameContext, GroovyParser.AnnotationContext, GroovyParser.AnnotationNameContext, GroovyParser.AnnotationsOptContext, GroovyParser.AnonymousInnerClassDeclarationContext, GroovyParser.ArgumentsContext, GroovyParser.ArrayInitializerContext, GroovyParser.AssertStatementContext, GroovyParser.AssertStmtAltContext, GroovyParser.AssignmentExprAltContext, GroovyParser.BlockContext, GroovyParser.BlockStatementContext, GroovyParser.BlockStatementsContext, GroovyParser.BlockStatementsOptContext, GroovyParser.BlockStmtAltContext, GroovyParser.BooleanLiteralAltContext, GroovyParser.BreakStatementContext, GroovyParser.BreakStmtAltContext, GroovyParser.BuiltInTypeContext, GroovyParser.BuiltInTypePrmrAltContext, GroovyParser.CastExprAltContext, GroovyParser.CastParExpressionContext, GroovyParser.CatchClauseContext, GroovyParser.CatchTypeContext, GroovyParser.ClassBodyContext, GroovyParser.ClassBodyDeclarationContext, GroovyParser.ClassDeclarationContext, GroovyParser.ClassicalForControlContext, GroovyParser.ClassifiedModifiersContext, GroovyParser.ClassNameContext, GroovyParser.ClassOrInterfaceModifierContext, GroovyParser.ClassOrInterfaceModifiersContext, GroovyParser.ClassOrInterfaceModifiersOptContext, GroovyParser.ClassOrInterfaceTypeContext, GroovyParser.ClosureContext, GroovyParser.ClosureOrLambdaExpressionContext, GroovyParser.ClosureOrLambdaExpressionPrmrAltContext, GroovyParser.CommandArgumentContext, GroovyParser.CommandExprAltContext, GroovyParser.CommandExpressionContext, GroovyParser.CompilationUnitContext, GroovyParser.ConditionalExprAltContext, GroovyParser.ConditionalStatementContext, GroovyParser.ConditionalStmtAltContext, GroovyParser.ContinueStatementContext, GroovyParser.ContinueStmtAltContext, GroovyParser.CreatedNameContext, GroovyParser.CreatorContext, GroovyParser.DimContext, GroovyParser.DoWhileStmtAltContext, GroovyParser.DynamicMemberNameContext, GroovyParser.ElementValueArrayInitializerContext, GroovyParser.ElementValueContext, GroovyParser.ElementValuePairContext, GroovyParser.ElementValuePairNameContext, GroovyParser.ElementValuePairsContext, GroovyParser.ElementValuesContext, GroovyParser.EmptyDimsContext, GroovyParser.EmptyDimsOptContext, GroovyParser.EmptyStmtAltContext, GroovyParser.EnhancedArgumentListContext, GroovyParser.EnhancedArgumentListElementContext, GroovyParser.EnhancedForControlContext, GroovyParser.EnhancedStatementExpressionContext, GroovyParser.EnumConstantContext, GroovyParser.EnumConstantsContext, GroovyParser.EqualityExprAltContext, GroovyParser.ExclusiveOrExprAltContext, GroovyParser.ExpressionContext, GroovyParser.ExpressionInParContext, GroovyParser.ExpressionListContext, GroovyParser.ExpressionListElementContext, GroovyParser.ExpressionStmtAltContext, GroovyParser.FieldDeclarationContext, GroovyParser.FinallyBlockContext, GroovyParser.FloatingPointLiteralAltContext, GroovyParser.ForControlContext, GroovyParser.ForInitContext, GroovyParser.FormalParameterContext, GroovyParser.FormalParameterListContext, GroovyParser.FormalParametersContext, GroovyParser.ForStmtAltContext, GroovyParser.ForUpdateContext, GroovyParser.GroovyParserRuleContext, GroovyParser.GstringContext, GroovyParser.GstringPathContext, GroovyParser.GstringPrmrAltContext, GroovyParser.GstringValueContext, GroovyParser.IdentifierContext, GroovyParser.IdentifierPrmrAltContext, GroovyParser.IfElseStatementContext, GroovyParser.ImportDeclarationContext, GroovyParser.InclusiveOrExprAltContext, GroovyParser.IndexPropertyArgsContext, GroovyParser.IntegerLiteralAltContext, GroovyParser.KeywordsContext, GroovyParser.LabeledStmtAltContext, GroovyParser.LambdaBodyContext, GroovyParser.ListContext, GroovyParser.ListPrmrAltContext, GroovyParser.LiteralContext, GroovyParser.LiteralPrmrAltContext, GroovyParser.LocalVariableDeclarationContext, GroovyParser.LocalVariableDeclarationStmtAltContext, GroovyParser.LogicalAndExprAltContext, GroovyParser.LogicalOrExprAltContext, GroovyParser.LoopStatementContext, GroovyParser.LoopStmtAltContext, GroovyParser.MapContext, GroovyParser.MapEntryContext, GroovyParser.MapEntryLabelContext, GroovyParser.MapEntryListContext, GroovyParser.MapPrmrAltContext, GroovyParser.MemberDeclarationContext, GroovyParser.MethodBodyContext, GroovyParser.MethodDeclarationContext, GroovyParser.MethodDeclarationStmtAltContext, GroovyParser.MethodNameContext, GroovyParser.ModifierContext, GroovyParser.ModifiersContext, GroovyParser.ModifiersOptContext, GroovyParser.MultipleAssignmentExprAltContext, GroovyParser.MultiplicativeExprAltContext, GroovyParser.NamedPropertyArgsContext, GroovyParser.NamePartContext, GroovyParser.NewPrmrAltContext, GroovyParser.NlsContext, GroovyParser.NonWildcardTypeArgumentsContext, GroovyParser.NullLiteralAltContext, GroovyParser.PackageDeclarationContext, GroovyParser.ParenPrmrAltContext, GroovyParser.ParExpressionContext, GroovyParser.PathElementContext, GroovyParser.PathExpressionContext, GroovyParser.PostfixExprAltContext, GroovyParser.PostfixExpressionContext, GroovyParser.PowerExprAltContext, GroovyParser.PrimaryContext, GroovyParser.PrimitiveTypeContext, GroovyParser.QualifiedClassNameContext, GroovyParser.QualifiedClassNameListContext, GroovyParser.QualifiedNameContext, GroovyParser.QualifiedNameElementContext, GroovyParser.QualifiedNameElementsContext, GroovyParser.QualifiedStandardClassNameContext, GroovyParser.RegexExprAltContext, GroovyParser.RelationalExprAltContext, GroovyParser.ResourceContext, GroovyParser.ResourceListContext, GroovyParser.ResourcesContext, GroovyParser.ReturnStmtAltContext, GroovyParser.ReturnTypeContext, GroovyParser.RparenContext, GroovyParser.ScriptStatementContext, GroovyParser.ScriptStatementsContext, GroovyParser.SepContext, GroovyParser.ShiftExprAltContext, GroovyParser.StandardLambdaExpressionContext, GroovyParser.StandardLambdaParametersContext, GroovyParser.StatementContext, GroovyParser.StatementExpressionContext, GroovyParser.StringLiteralAltContext, GroovyParser.StringLiteralContext, GroovyParser.SuperPrmrAltContext, GroovyParser.SwitchBlockStatementGroupContext, GroovyParser.SwitchLabelContext, GroovyParser.SwitchStatementContext, GroovyParser.SynchronizedStmtAltContext, GroovyParser.ThisFormalParameterContext, GroovyParser.ThisPrmrAltContext, GroovyParser.ThrowStmtAltContext, GroovyParser.TryCatchStatementContext, GroovyParser.TryCatchStmtAltContext, GroovyParser.TypeArgumentContext, GroovyParser.TypeArgumentsContext, GroovyParser.TypeArgumentsOrDiamondContext, GroovyParser.TypeBoundContext, GroovyParser.TypeContext, GroovyParser.TypeDeclarationContext, GroovyParser.TypeListContext, GroovyParser.TypeNamePairContext, GroovyParser.TypeNamePairsContext, GroovyParser.TypeParameterContext, GroovyParser.TypeParametersContext, GroovyParser.UnaryAddExprAltContext, GroovyParser.UnaryNotExprAltContext, GroovyParser.VariableDeclarationContext, GroovyParser.VariableDeclaratorContext, GroovyParser.VariableDeclaratorIdContext, GroovyParser.VariableDeclaratorsContext, GroovyParser.VariableInitializerContext, GroovyParser.VariableInitializersContext, GroovyParser.VariableModifierContext, GroovyParser.VariableModifiersContext, GroovyParser.VariableModifiersOptContext, GroovyParser.VariableNamesContext, GroovyParser.WhileStmtAltContext, GStringExpression, IfStatement, ImportNode, InnerClassNode, InterfaceHelperClassNode, LambdaExpression, ListExpression, ListOfExpressionsExpression, MapEntryExpression, MapExpression, MethodCallExpression, MethodNode, MethodPointerExpression, MethodReferenceExpression, MixinNode, ModifierNode, ModuleNode, NamedArgumentListExpression, NotExpression, PackageNode, Parameter, PostfixExpression, PrefixExpression, PropertyExpression, PropertyNode, RangeExpression, ReturnStatement, SpreadExpression, SpreadMapExpression, Statement, StaticMethodCallExpression, SwitchStatement, SynchronizedStatement, TemporaryVariableExpression, TernaryExpression, ThrowStatement, TryCatchStatement, TupleExpression, UnaryMinusExpression, UnaryPlusExpression, VariableExpression, VariableSlotLoader, WhileStatement, WideningCategories.LowestUpperBoundClassNode

      public interface NodeMetaDataHandler

  An interface to mark a node being able to handle metadata.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default void` | `copyNodeMetaData(NodeMetaDataHandler other)` Copies all node meta data from the other node to this one
    `Map<?,?>` | `getMetaDataMap()`
    `default Map<?,?>` | `getNodeMetaData()` Returns an unmodifiable view of the current node metadata.
    `default <T> T` | `getNodeMetaData(Object key)` Gets the node meta data.
    `default <T> T` | `getNodeMetaData(Object key, Function<?,? extends T> valFn)` Gets the node meta data.
    `default Object` | `putNodeMetaData(Object key, Object value)` Sets the node meta data but allows overwriting values.
    `default void` | `removeNodeMetaData(Object key)` Removes a node meta data entry.
    `void` | `setMetaDataMap(Map<?,?> metaDataMap)`
    `default void` | `setNodeMetaData(Object key, Object value)` Sets the node meta data.

- - ### Method Detail

    - #### getNodeMetaData

          default <T> T getNodeMetaData(Object key)

      Gets the node meta data.
      Parameters:
        `key` - the meta data key
      Returns:
        the node meta data value for this key

    - #### getNodeMetaData

          default <T> T getNodeMetaData(Object key,
                                        Function<?,? extends T> valFn)

      Gets the node meta data.
      Parameters:
        `key` - the meta data key
        `valFn` - the meta data value supplier
      Returns:
        the node meta data value for this key

    - #### copyNodeMetaData

          default void copyNodeMetaData(NodeMetaDataHandler other)

      Copies all node meta data from the other node to this one
      Parameters:
        `other` - the other node

    - #### setNodeMetaData

          default void setNodeMetaData(Object key,
                                       Object value)

      Sets the node meta data.
      Parameters:
        `key` - the meta data key
        `value` - the meta data value
      Throws:
        `GroovyBugError` - if key is null or there is already meta data under that key

    - #### putNodeMetaData

          default Object putNodeMetaData(Object key,
                                         Object value)

      Sets the node meta data but allows overwriting values.
      Parameters:
        `key` - the meta data key
        `value` - the meta data value
      Returns:
        the old node meta data value for this key
      Throws:
        `GroovyBugError` - if key is null

    - #### removeNodeMetaData

          default void removeNodeMetaData(Object key)

      Removes a node meta data entry.
      Parameters:
        `key` - the meta data key
      Throws:
        `GroovyBugError` - if the key is null

    - #### getNodeMetaData

          default Map<?,?> getNodeMetaData()

      Returns an unmodifiable view of the current node metadata.
      Returns:
        the node metadata. Always not null.

    - #### getMetaDataMap

          Map<?,?> getMetaDataMap()

    - #### setMetaDataMap

          void setMetaDataMap(Map<?,?> metaDataMap)