org.glassfish.pfl.dynamic.codegen.impl
Class NodeBase

java.lang.Object
  extended by org.glassfish.pfl.dynamic.codegen.impl.AttributedObjectBase
      extended by org.glassfish.pfl.dynamic.codegen.impl.NodeBase
All Implemented Interfaces:
AttributedObject, Node, CopyInterceptor
Direct Known Subclasses:
ExpressionFactory.ExpressionBase, StatementBase

public class NodeBase
extends AttributedObjectBase
implements Node, CopyInterceptor

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.

Author:
Ken Cavanaugh

Constructor Summary
NodeBase(Node parent)
           
 
Method Summary
 void accept(Visitor visitor)
          Accept the visitor and allow it to perform actions on this Node.
<T extends Node>
T
copy(Class<T> cls)
          Make a deep copy of this node.
<T extends Node>
T
copy(Node newParent, Class<T> cls)
          Copy setting a new parent in the result.
<T extends Node>
T
getAncestor(Class<T> type)
          Return the first ancestor of this node of the given type, if any.
 int id()
          Return the unique ID of this node.
 Node parent()
          Return the Node that contains (and created) this Node.
 void parent(Node node)
          Set the parent to a new value.
 void postCopy()
           
 void preCopy()
           
 String 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
 

Constructor Detail

NodeBase

public NodeBase(Node parent)
Method Detail

preCopy

public void preCopy()
Specified by:
preCopy in interface CopyInterceptor
Overrides:
preCopy in class AttributedObjectBase

postCopy

public void postCopy()
Specified by:
postCopy in interface CopyInterceptor
Overrides:
postCopy in class AttributedObjectBase

getAncestor

public final <T extends Node> T getAncestor(Class<T> type)
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 interface Node

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.

Specified by:
id in interface Node

parent

public final Node parent()
Description copied from interface: Node
Return the Node that contains (and created) this Node.

Specified by:
parent in interface Node

parent

public final void parent(Node node)
Description copied from interface: Node
Set the parent to a new value. Should only be called inside NodeBase.

Specified by:
parent in interface Node

copy

public <T extends Node> T copy(Class<T> cls)
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.

Specified by:
copy in interface Node

copy

public <T extends Node> T copy(Node newParent,
                               Class<T> cls)
Description copied from interface: Node
Copy setting a new parent in the result.

Specified by:
copy in interface Node

toString

public String toString()
Overrides:
toString in class Object

accept

public void accept(Visitor visitor)
Description copied from interface: Node
Accept the visitor and allow it to perform actions on this Node.

Specified by:
accept in interface Node


Copyright © 2013 Oracle. All Rights Reserved.