Interface NodeMetaDataHandler

All Known Implementing Classes:
AbstractGinqExpression, 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, ConstantExpression, ConstructorCallExpression, ConstructorNode, ContinueStatement, DataSourceExpression, DeclarationExpression, DecompiledClassNode, DoWhileStatement, ElvisOperatorExpression, EmptyExpression, EmptyStatement, EnumConstantClassNode, Expression, ExpressionAsVariableSlot, ExpressionStatement, ExtensionMethodNode, FieldExpression, FieldNode, FilterExpression, ForStatement, FromExpression, GenericsType, GinqExpression, GroupExpression, GStringExpression, HavingExpression, IfStatement, ImportNode, InnerClassNode, InterfaceHelperClassNode, JoinExpression, LambdaExpression, LimitExpression, ListExpression, ListOfExpressionsExpression, MapEntryExpression, MapExpression, MethodCallExpression, MethodNode, MethodPointerExpression, MethodReferenceExpression, MixinNode, ModifierNode, ModuleNode, NamedArgumentListExpression, NotExpression, OnExpression, OrderExpression, PackageNode, Parameter, PostfixExpression, PrefixExpression, ProcessExpression, PropertyExpression, PropertyNode, RangeExpression, RecordComponentNode, ReturnStatement, SelectExpression, ShutdownExpression, SpreadExpression, SpreadMapExpression, Statement, StaticMethodCallExpression, SwitchStatement, SynchronizedStatement, TemporaryVariableExpression, TernaryExpression, ThrowStatement, TryCatchStatement, TupleExpression, UnaryMinusExpression, UnaryPlusExpression, VariableExpression, VariableSlotLoader, WhereExpression, WhileStatement, WideningCategories.LowestUpperBoundClassNode

public interface NodeMetaDataHandler
An interface to mark a node being able to handle metadata.
  • Method Details

    • getNodeMetaData

      default <T> T getNodeMetaData(Object key)
      Gets the node metadata.
      Parameters:
      key - the metadata key
      Returns:
      the node metadata value for this key
    • getNodeMetaData

      default <T> T getNodeMetaData(Object key, Function<?,? extends T> valFn)
      Gets the node metadata.
      Parameters:
      key - the metadata key
      valFn - the metadata value supplier
      Returns:
      the node metadata value for this key
    • copyNodeMetaData

      default void copyNodeMetaData(NodeMetaDataHandler other)
      Copies all node metadata from the other node to this one
      Parameters:
      other - the other node
    • setNodeMetaData

      default void setNodeMetaData(Object key, Object value)
      Sets the node metadata.
      Parameters:
      key - the metadata key
      value - the metadata 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 metadata but allows overwriting values.
      Parameters:
      key - the metadata key
      value - the metadata value
      Returns:
      the old node metadata value for this key
      Throws:
      GroovyBugError - if key is null
    • removeNodeMetaData

      default void removeNodeMetaData(Object key)
      Removes a node metadata entry.
      Parameters:
      key - the metadata 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)