com.waveset.expression
Class ExNew

java.lang.Object
  extended bycom.waveset.expression.ExNode
      extended bycom.waveset.expression.ExNew
All Implemented Interfaces:
com.sun.idm.debugger.common.Locatable

public class ExNew
extends ExNode

Function implementation for the <new> function.


Field Summary
static java.lang.String code_id
           
 
Fields inherited from class com.waveset.expression.ExNode
_bindingCount, _children, _decoration, _parent, trace
 
Constructor Summary
ExNew()
           
 
Method Summary
protected  ExValue evalInternal(ExState state)
          Evaluate the node.
 java.lang.String getClassName()
           
 java.lang.String getFunctionName()
          Nodes representing functions must have a name.
 void parseXml(org.w3c.dom.Element el)
          Default XML parsing method.
 void setClassName(java.lang.String s)
           
 void toXmlAttributes(java.lang.StringBuffer b)
          Add attributes in the start tag of this node.
 
Methods inherited from class com.waveset.expression.ExNode
addChild, addChildren, addCommonAttributes, beginTrace, clearOwner, endTrace, eval, evalChild, evalChildToObject, evalChildToString, evalToBoolean, evalToInt, evalToObject, evalToString, getBindingCount, getChild, getChildren, getDecoration, getHiddenVariable, getLocation, getOwner, getParent, isLiteral, parseCommonAttributes, postProcess, removeChild, resolveFunction, resolveVariable, setBindingCount, setChildren, setDecoration, setEnvironment, setLocation, setOwner, setOwner, setParent, toXml, toXml, toXml, toXmlChildren
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

code_id

public static final java.lang.String code_id
See Also:
Constant Field Values
Constructor Detail

ExNew

public ExNew()
Method Detail

getFunctionName

public java.lang.String getFunctionName()
Description copied from class: ExNode
Nodes representing functions must have a name. This name is used in the formatting of default trace messages and the default XML rendering. If a node doesn't have a name for some reason, or needs more control over the trace messges and XML, they must overload beginTrace, endTrace, and toXml below.

Specified by:
getFunctionName in class ExNode

getClassName

public java.lang.String getClassName()

setClassName

public void setClassName(java.lang.String s)

parseXml

public void parseXml(org.w3c.dom.Element el)
              throws WavesetException
Description copied from class: ExNode
Default XML parsing method. Parses the child elements into a list of child nodes.

Overrides:
parseXml in class ExNode
Throws:
WavesetException

toXmlAttributes

public void toXmlAttributes(java.lang.StringBuffer b)
Description copied from class: ExNode
Add attributes in the start tag of this node. Intended to be overloaded by subclasses.

Overrides:
toXmlAttributes in class ExNode

evalInternal

protected ExValue evalInternal(ExState state)
                        throws WavesetException
Evaluate the node.

The class name was specified as an attribute, any subexpressions are arguments to the constructor. Evaluate each of the subexpressions to a Java object, and try to locate a constructor signature.

We're fairly limited on the signatures we'll recognize, you must use String, Integer, and List as the constructor arguments. If any of the subexpressions returns null, we'll treat it as a generic Object argument. This may result in errors, if you have Foo(String) but the argument expression returns null, we'll look for Foo(Object). We could try to be smarter, but its complicated and ambiguous.

If the constructor can't be found, the constructor throws an exception, we return null.

Specified by:
evalInternal in class ExNode
Throws:
WavesetException