Class NodeBase
java.lang.Object
org.glassfish.pfl.dynamic.codegen.impl.AttributedObjectBase
org.glassfish.pfl.dynamic.codegen.impl.NodeBase
- All Implemented Interfaces:
AttributedObject
,Node
,CopyInterceptor
- Direct Known Subclasses:
ExpressionFactory.ExpressionBase
,StatementBase
Base class for implementing various kinds of Nodes in the AST.
This mainly supports dynamic attributes. It also supports
dynamic delegation to another node. Dynamic attributes not
found in the current node will automatically be searched for
in the delegate.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Accept the visitor and allow it to perform actions on this Node.<T extends Node>
TMake a deep copy of this node.<T extends Node>
TCopy setting a new parent in the result.final <T extends Node>
TgetAncestor
(Class<T> type) Return the first ancestor of this node of the given type, if any.private static int
getNewId()
int
id()
Return the unique ID of this node.final Node
parent()
Return the Node that contains (and created) this Node.final void
Set the parent to a new value.void
postCopy()
void
preCopy()
toString()
Methods inherited from class org.glassfish.pfl.dynamic.codegen.impl.AttributedObjectBase
attributes, get, set
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.glassfish.pfl.dynamic.codegen.impl.AttributedObject
attributes, get, set
-
Field Details
-
parent
-
nextId
private static int nextId -
myId
private int myId
-
-
Constructor Details
-
NodeBase
-
-
Method Details
-
preCopy
public void preCopy()- Specified by:
preCopy
in interfaceCopyInterceptor
- Overrides:
preCopy
in classAttributedObjectBase
-
postCopy
public void postCopy()- Specified by:
postCopy
in interfaceCopyInterceptor
- Overrides:
postCopy
in classAttributedObjectBase
-
getNewId
private static int getNewId() -
getAncestor
Description copied from interface:Node
Return the first ancestor of this node of the given type, if any. Throws IllegalArgumentException if not found.- Specified by:
getAncestor
in interfaceNode
-
id
public int id()Description copied from interface:Node
Return the unique ID of this node. This starts at 1 and is incremented for each new Node that is created. -
parent
Description copied from interface:Node
Return the Node that contains (and created) this Node. -
parent
Description copied from interface:Node
Set the parent to a new value. Should only be called inside NodeBase. -
copy
Description copied from interface:Node
Make a deep copy of this node. If nn = n.copy(), then n.parent() == nn.parent(), which also means that the parent is NOT copied. -
copy
Description copied from interface:Node
Copy setting a new parent in the result. -
toString
-
accept
Description copied from interface:Node
Accept the visitor and allow it to perform actions on this Node.
-