JBoss Dynamic Model Representation 1.1.6.Final-redhat-1

org.jboss.dmr
Class ModelNode

java.lang.Object
  extended by org.jboss.dmr.ModelNode
All Implemented Interfaces:
Externalizable, Serializable, Cloneable

public class ModelNode
extends Object
implements Externalizable, Cloneable

A dynamic model representation node object.

A node can be of any type specified in the ModelType enumeration. The type can be queried via getType() and updated via any of the set*() methods. The value of the node can be acquired via the as<type>() methods, where <type> is the desired value type. If the type is not the same as the node type, a conversion is attempted between the types.

A node can be made read-only by way of its protect() method, which will prevent any further changes to the node or its sub-nodes.

Instances of this class are not thread-safe and need to be synchronized externally.

Author:
David M. Lloyd
See Also:
Serialized Form

Constructor Summary
ModelNode()
          Creates a new ModelNode with an undefined value.
ModelNode(BigDecimal value)
          Creates a new ModelNode with the given value.
ModelNode(BigInteger value)
          Creates a new ModelNode with the given value.
ModelNode(boolean value)
          Creates a new ModelNode with the given value.
ModelNode(byte[] value)
          Creates a new ModelNode with the given value.
ModelNode(double value)
          Creates a new ModelNode with the given value.
ModelNode(int value)
          Creates a new ModelNode with the given value.
ModelNode(long value)
          Creates a new ModelNode with the given value.
ModelNode(ModelType value)
          Creates a new ModelNode with the given value.
ModelNode(String value)
          Creates a new ModelNode with the given value.
 
Method Summary
 ModelNode add()
          Add a node to the end of this node's value list and return it.
 ModelNode add(BigDecimal newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(BigInteger newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(boolean newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(byte[] newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(double newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(int newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(long newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(ModelNode newValue)
          Add a copy of the given value to the end of this node's value list.
 ModelNode add(String newValue)
          Add the given value to the end of this node's value list.
 ModelNode add(String propertyName, BigDecimal propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, BigInteger propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, boolean propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, byte[] propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, double propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, int propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, long propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, ModelNode propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode add(String propertyName, String propertyValue)
          Add a property with the given name and value to the end of this node's value list.
 ModelNode addEmptyList()
          Add a node of type ModelType.LIST to the end of this node's value list and return it.
 ModelNode addEmptyObject()
          Add a node of type ModelType.OBJECT to the end of this node's value list and return it.
 ModelNode addExpression(String newValue)
          Add the given expression to the end of this node's value list.
 BigDecimal asBigDecimal()
          Get the value of this node as a BigDecimal.
 BigInteger asBigInteger()
          Get the value of this node as a BigInteger.
 boolean asBoolean()
          Get the value of this node as a boolean.
 boolean asBoolean(boolean defVal)
          Get the value of this node as a boolean.
 byte[] asBytes()
          Get the value of this node as a byte array.
 double asDouble()
          Get the value of this node as a double.
 double asDouble(double defVal)
          Get the value of this node as an double.
 int asInt()
          Get the value of this node as an int.
 int asInt(int defVal)
          Get the value of this node as an int.
 List<ModelNode> asList()
          Get the list of entries contained in this object.
 long asLong()
          Get the value of this node as a long.
 long asLong(long defVal)
          Get the value of this node as a long.
 ModelNode asObject()
          Get a copy of this value as an object.
 Property asProperty()
          Get the value of this node as a property.
 List<Property> asPropertyList()
          Get the value of this node as a property list.
 String asString()
          Get the value as a string.
 ModelType asType()
          Get the value of this node as a type, expressed using the ModelType enum.
 ModelNode clear()
          Clear this node's value and change its type to ModelType.UNDEFINED.
 ModelNode clone()
          Clone this model node.
 boolean equals(ModelNode other)
          Determine whether this object is equal to another.
 boolean equals(Object other)
          Determine whether this object is equal to another.
static ModelNode fromBase64(InputStream stream)
          Reads base64 data from the passed stream, and deserializes the decoded result.
static ModelNode fromJSONStream(InputStream stream)
          Get a model node from a JSON text representation of the model node.
static ModelNode fromJSONString(String input)
           
static ModelNode fromStream(InputStream stream)
          Get a model node from a text representation of the model node.
static ModelNode fromString(String input)
          Get a model node from a string representation of the model node.
 ModelNode get(int index)
          Get the child of this node with the given index.
 ModelNode get(String... names)
          Recursively get the children of this node with the given names.
 ModelNode get(String name)
          Get the child of this node with the given name.
 ModelType getType()
          Get the current type of this node.
 boolean has(int index)
          Determine whether this node has a child with the given index.
 boolean has(String key)
          Determine whether this node has a child with the given name.
 boolean hasDefined(int index)
          Determine whether this node has a defined child with the given index.
 boolean hasDefined(String key)
          Determine whether this node has a defined child with the given name.
 int hashCode()
          Get the hash code of this node object.
 boolean isDefined()
          Determine whether this node is defined.
 Set<String> keys()
          Get the set of keys contained in this object.
 void protect()
          Prevent further modifications to this node and its sub-nodes.
 void readExternal(DataInput in)
          Read this node's content in binary format from the given source.
 void readExternal(DataInputStream in)
          Read this node's content in binary format from the given source.
 void readExternal(InputStream in)
          Read this node's content in binary format from the given source.
 void readExternal(ObjectInput in)
          Read this node's content in binary format from the given source.
 ModelNode remove(String name)
          Remove a child of this node, returning the child.
 ModelNode require(int index)
          Require the existence of a child of this node with the given index, returning the child.
 ModelNode require(String name)
          Require the existence of a child of this node with the given name, returning the child.
 ModelNode resolve()
          Return a copy of this model node, with all values of type ModelType.EXPRESSION locally resolved.
 ModelNode set(BigDecimal newValue)
          Change this node's value to the given value.
 ModelNode set(BigInteger newValue)
          Change this node's value to the given value.
 ModelNode set(boolean newValue)
          Change this node's value to the given value.
 ModelNode set(byte[] newValue)
          Change this node's value to the given value.
 ModelNode set(Collection<ModelNode> newValue)
          Change this node's value to a list whose values are copied from the given collection.
 ModelNode set(double newValue)
          Change this node's value to the given value.
 ModelNode set(int newValue)
          Change this node's value to the given value.
 ModelNode set(long newValue)
          Change this node's value to the given value.
 ModelNode set(ModelNode newValue)
          Change this node's value to the given value.
 ModelNode set(ModelType newValue)
          Change this node's value to the given value.
 ModelNode set(Property newValue)
          Change this node's value to the given value.
 ModelNode set(String newValue)
          Change this node's value to the given value.
 ModelNode set(String propertyName, BigDecimal propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, BigInteger propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, boolean propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, byte[] propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, double propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, int propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, long propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, ModelNode propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, ModelType propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode set(String propertyName, String propertyValue)
          Change this node's value to a property with the given name and value.
 ModelNode setEmptyList()
          Change this node's value to an empty list.
 ModelNode setEmptyObject()
          Change this node's value to an empty object.
 ModelNode setExpression(String newValue)
          Change this node's value to the given expression value.
 ModelNode setExpression(String propertyName, String propertyValue)
          Change this node's value to a property with the given name and expression value.
 String toJSONString(boolean compact)
          Get a JSON string representation of this model node, formatted nicely, if requested.
 String toString()
          Get a human-readable string representation of this model node, formatted nicely (possibly on multiple lines).
 void writeBase64(OutputStream stream)
          Encodes the serialized representation in base64 form and writes it to the specified output stream.
 void writeExternal(DataOutput out)
          Write this node's content in binary format to the given target.
 void writeExternal(DataOutputStream out)
          Write this node's content in binary format to the given target.
 void writeExternal(ObjectOutput out)
          Write this node's content in binary format to the given target.
 void writeExternal(OutputStream out)
          Write this node's content in binary format to the given target.
 void writeJSONString(PrintWriter writer, boolean compact)
          Output the JSON string representation of this model node, formatted nicely, if requested to the supplied PrintWriter instance.
 void writeString(PrintWriter writer, boolean compact)
          Output the DMR string representation of this model node, formatted nicely, if requested to the supplied PrintWriter instance.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ModelNode

public ModelNode()
Creates a new ModelNode with an undefined value.


ModelNode

public ModelNode(BigDecimal value)
Creates a new ModelNode with the given value.

Parameters:
value - the value. Cannot be null
Throws:
IllegalArgumentException - if value is null

ModelNode

public ModelNode(BigInteger value)
Creates a new ModelNode with the given value.

Parameters:
value - the value. Cannot be null
Throws:
IllegalArgumentException - if value is null

ModelNode

public ModelNode(boolean value)
Creates a new ModelNode with the given value.

Parameters:
value - the value.

ModelNode

public ModelNode(byte[] value)
Creates a new ModelNode with the given value.

Parameters:
value - the value. Cannot be null
Throws:
IllegalArgumentException - if value is null

ModelNode

public ModelNode(double value)
Creates a new ModelNode with the given value.

Parameters:
value - the value.

ModelNode

public ModelNode(int value)
Creates a new ModelNode with the given value.

Parameters:
value - the value.

ModelNode

public ModelNode(long value)
Creates a new ModelNode with the given value.

Parameters:
value - the value.

ModelNode

public ModelNode(String value)
Creates a new ModelNode with the given value.

Parameters:
value - the value. Cannot be null
Throws:
IllegalArgumentException - if value is null

ModelNode

public ModelNode(ModelType value)
Creates a new ModelNode with the given value.

Parameters:
value - the value. Cannot be null
Throws:
IllegalArgumentException - if value is null
Method Detail

protect

public void protect()
Prevent further modifications to this node and its sub-nodes. Note that copies of this node made after this method call will not be protected.


asLong

public long asLong()
            throws IllegalArgumentException
Get the value of this node as a long. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Returns:
the long value
Throws:
IllegalArgumentException - if no conversion is possible

asLong

public long asLong(long defVal)
Get the value of this node as a long. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Parameters:
defVal - the default value if no conversion is possible
Returns:
the long value

asInt

public int asInt()
          throws IllegalArgumentException
Get the value of this node as an int. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Returns:
the int value
Throws:
IllegalArgumentException - if no conversion is possible

asInt

public int asInt(int defVal)
Get the value of this node as an int. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Parameters:
defVal - the default value if no conversion is possible
Returns:
the int value

asBoolean

public boolean asBoolean()
                  throws IllegalArgumentException
Get the value of this node as a boolean. Collection types return true for non-empty collections. Numerical types return true for non-zero values.

Returns:
the boolean value
Throws:
IllegalArgumentException - if no conversion is possible

asBoolean

public boolean asBoolean(boolean defVal)
Get the value of this node as a boolean. Collection types return true for non-empty collections. Numerical types return true for non-zero values.

Parameters:
defVal - the default value if no conversion is possible
Returns:
the boolean value

asString

public String asString()
Get the value as a string. This is the literal value of this model node. More than one node type may yield the same value for this method.

Returns:
the string value

asDouble

public double asDouble()
                throws IllegalArgumentException
Get the value of this node as a double. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Returns:
the double value
Throws:
IllegalArgumentException - if no conversion is possible

asDouble

public double asDouble(double defVal)
Get the value of this node as an double. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Parameters:
defVal - the default value if no conversion is possible
Returns:
the int value

asType

public ModelType asType()
                 throws IllegalArgumentException
Get the value of this node as a type, expressed using the ModelType enum. The string value of this node must be convertible to a type.

Returns:
the ModelType value
Throws:
IllegalArgumentException - if no conversion is possible

asBigDecimal

public BigDecimal asBigDecimal()
                        throws IllegalArgumentException
Get the value of this node as a BigDecimal. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Returns:
the BigDecimal value
Throws:
IllegalArgumentException - if no conversion is possible

asBigInteger

public BigInteger asBigInteger()
                        throws IllegalArgumentException
Get the value of this node as a BigInteger. Collection types will return the size of the collection for this value. Other types may attempt a string conversion.

Returns:
the BigInteger value
Throws:
IllegalArgumentException - if no conversion is possible

asBytes

public byte[] asBytes()
               throws IllegalArgumentException
Get the value of this node as a byte array. Strings and string-like values will return the UTF-8 encoding of the string. Numerical values will return the byte representation of the number.

Returns:
the bytes
Throws:
IllegalArgumentException - if no conversion is possible

asProperty

public Property asProperty()
                    throws IllegalArgumentException
Get the value of this node as a property. Object values will return a property if there is exactly one property in the object. List values will return a property if there are exactly two items in the list, and if the first is convertible to a string.

Returns:
the property value
Throws:
IllegalArgumentException - if no conversion is possible

asPropertyList

public List<Property> asPropertyList()
                              throws IllegalArgumentException
Get the value of this node as a property list. Object values will return a list of properties representing each key-value pair in the object. List values will return all the values of the list, failing if any of the values are not convertible to a property value.

Returns:
the property list value
Throws:
IllegalArgumentException - if no conversion is possible

asObject

public ModelNode asObject()
                   throws IllegalArgumentException
Get a copy of this value as an object. Object values will simply copy themselves as by the clone() method. Property values will return a single-entry object whose key and value are copied from the property key and value. List values will attempt to interpolate the list into an object by iterating each item, mapping each property into an object entry and otherwise taking pairs of list entries, converting the first to a string, and using the pair of entries as a single object entry. If an object key appears more than once in the source object, the last key takes precedence.

Returns:
the object value
Throws:
IllegalArgumentException - if no conversion is possible

isDefined

public boolean isDefined()
Determine whether this node is defined. Equivalent to the expression: getType() != ModelType.UNDEFINED.

Returns:
true if this node's value is defined

set

public ModelNode set(int newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(long newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(double newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(boolean newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

setExpression

public ModelNode setExpression(String newValue)
Change this node's value to the given expression value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(String newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(BigDecimal newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(BigInteger newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(ModelNode newValue)
Change this node's value to the given value. The value is copied from the parameter.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(byte[] newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(ModelType newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(Property newValue)
Change this node's value to the given value.

Parameters:
newValue - the new value
Returns:
this node

set

public ModelNode set(String propertyName,
                     ModelNode propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     int propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     long propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     double propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     boolean propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     String propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

setExpression

public ModelNode setExpression(String propertyName,
                               String propertyValue)
Change this node's value to a property with the given name and expression value.

Parameters:
propertyName - the property name
propertyValue - the property expression value
Returns:
this node

set

public ModelNode set(String propertyName,
                     BigDecimal propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     BigInteger propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     byte[] propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(String propertyName,
                     ModelType propertyValue)
Change this node's value to a property with the given name and value.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

set

public ModelNode set(Collection<ModelNode> newValue)
Change this node's value to a list whose values are copied from the given collection.

Parameters:
newValue - the list value
Returns:
this node

setEmptyList

public ModelNode setEmptyList()
Change this node's value to an empty list.

Returns:
this node

setEmptyObject

public ModelNode setEmptyObject()
Change this node's value to an empty object.

Returns:
this node

clear

public ModelNode clear()
Clear this node's value and change its type to ModelType.UNDEFINED.

Returns:
this node

get

public ModelNode get(String name)
Get the child of this node with the given name. If no such child exists, create it. If the node is undefined, it will be initialized to be of type ModelType.OBJECT.

When called on property values, the name must match the property name.

Parameters:
name - the child name
Returns:
the child
Throws:
IllegalArgumentException - if this node does not support getting a child with the given name

require

public ModelNode require(String name)
                  throws NoSuchElementException
Require the existence of a child of this node with the given name, returning the child. If no such child exists, an exception is thrown.

When called on property values, the name must match the property name.

Parameters:
name - the child name
Returns:
the child
Throws:
NoSuchElementException - if the element does not exist

remove

public ModelNode remove(String name)
                 throws NoSuchElementException
Remove a child of this node, returning the child. If no such child exists, an exception is thrown.

When called on property values, the name must match the property name.

Parameters:
name - the child name
Returns:
the child
Throws:
NoSuchElementException - if the element does not exist

get

public ModelNode get(int index)
Get the child of this node with the given index. If no such child exists, create it (adding list entries as needed). If the node is undefined, it will be initialized to be of type ModelType.LIST.

When called on property values, the index must be zero.

Parameters:
index - the child index
Returns:
the child
Throws:
IllegalArgumentException - if this node does not support getting a child with the given index

require

public ModelNode require(int index)
Require the existence of a child of this node with the given index, returning the child. If no such child exists, an exception is thrown.

When called on property values, the index must be zero.

Parameters:
index - the child index
Returns:
the child
Throws:
NoSuchElementException - if the element does not exist

add

public ModelNode add(int newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(long newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(double newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(boolean newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

addExpression

public ModelNode addExpression(String newValue)
Add the given expression to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(String newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(BigDecimal newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(BigInteger newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(ModelNode newValue)
Add a copy of the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(byte[] newValue)
Add the given value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
newValue - the new value to add
Returns:
this node

add

public ModelNode add(String propertyName,
                     int propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     long propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     double propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     boolean propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     String propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     BigDecimal propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     BigInteger propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     ModelNode propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add(String propertyName,
                     byte[] propertyValue)
Add a property with the given name and value to the end of this node's value list. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Parameters:
propertyName - the property name
propertyValue - the property value
Returns:
this node

add

public ModelNode add()
Add a node to the end of this node's value list and return it. If the node is undefined, it will be initialized to be of type ModelType.LIST.

Returns:
the new node

addEmptyList

public ModelNode addEmptyList()
Add a node of type ModelType.LIST to the end of this node's value list and return it. If this node is undefined, it will be initialized to be of type ModelType.LIST.

Returns:
the new node

addEmptyObject

public ModelNode addEmptyObject()
Add a node of type ModelType.OBJECT to the end of this node's value list and return it. If this node is undefined, it will be initialized to be of type ModelType.LIST.

Returns:
the new node

has

public boolean has(int index)
Determine whether this node has a child with the given index. Property node types always contain exactly one value.

Parameters:
index - the index
Returns:
true if there is a (possibly undefined) node at the given index

has

public boolean has(String key)
Determine whether this node has a child with the given name. Property node types always contain exactly one value with a key equal to the property name.

Parameters:
key - the name
Returns:
true if there is a (possibly undefined) node at the given key

hasDefined

public boolean hasDefined(int index)
Determine whether this node has a defined child with the given index. Property node types always contain exactly one value.

Parameters:
index - the index
Returns:
true if there is a node at the given index and its type is not ModelType.UNDEFINED

hasDefined

public boolean hasDefined(String key)
Determine whether this node has a defined child with the given name. Property node types always contain exactly one value with a key equal to the property name.

Parameters:
key - the name
Returns:
true if there is a node at the given index and its type is not ModelType.UNDEFINED

keys

public Set<String> keys()
Get the set of keys contained in this object. Property node types always contain exactly one value with a key equal to the property name. Other non-object types will return an empty set.

Returns:
the key set

asList

public List<ModelNode> asList()
Get the list of entries contained in this object. Property node types always contain exactly one entry (itself). Lists will return an unmodifiable view of their contained list. Objects will return a list of properties corresponding to the mappings within the object. Other types will return an empty list.

Returns:
the entry list

get

public ModelNode get(String... names)
Recursively get the children of this node with the given names. If any child along the path does not exist, create it. If any node is the path is undefined, it will be initialized to be of type ModelType.OBJECT.

Parameters:
names - the child names
Returns:
the child
Throws:
IllegalArgumentException - if a node does not support getting a child with the given name path

toString

public String toString()
Get a human-readable string representation of this model node, formatted nicely (possibly on multiple lines).

Overrides:
toString in class Object
Returns:
the string representation

writeString

public void writeString(PrintWriter writer,
                        boolean compact)
Output the DMR string representation of this model node, formatted nicely, if requested to the supplied PrintWriter instance.

Parameters:
writer - A PrintWriter instance used to output the DMR string.
compact - Flag that indicates whether or not the string should be all on one line (i.e. true) or should be printed on multiple lines (false).

toJSONString

public String toJSONString(boolean compact)
Get a JSON string representation of this model node, formatted nicely, if requested.

Parameters:
compact - Flag that indicates whether or not the string should be all on one line (i.e. true) or should be printed on multiple lines (false).
Returns:
The JSON string.

writeJSONString

public void writeJSONString(PrintWriter writer,
                            boolean compact)
Output the JSON string representation of this model node, formatted nicely, if requested to the supplied PrintWriter instance.

Parameters:
writer - A PrintWriter instance used to output the JSON string.
compact - Flag that indicates whether or not the string should be all on one line (i.e. true) or should be printed on multiple lines (false).

fromString

public static ModelNode fromString(String input)
Get a model node from a string representation of the model node.

Parameters:
input - the input string
Returns:
the model node

fromJSONString

public static ModelNode fromJSONString(String input)

fromStream

public static ModelNode fromStream(InputStream stream)
                            throws IOException
Get a model node from a text representation of the model node. The stream must be encoded in US-ASCII encoding.

Parameters:
stream - the source stream
Returns:
the model node
Throws:
IOException

fromJSONStream

public static ModelNode fromJSONStream(InputStream stream)
                                throws IOException
Get a model node from a JSON text representation of the model node. The stream must be encoded in US-ASCII encoding.

Parameters:
stream - the source stream
Returns:
the model node
Throws:
IOException

fromBase64

public static ModelNode fromBase64(InputStream stream)
                            throws IOException
Reads base64 data from the passed stream, and deserializes the decoded result.

Returns:
the decoded model node
Throws:
IOException - if the passed stream has an issue
See Also:
writeBase64(OutputStream)

resolve

public ModelNode resolve()
Return a copy of this model node, with all values of type ModelType.EXPRESSION locally resolved. The caller must have permission to access all of the system properties named in the node tree. If an expression begins with ${env.} then a system property named {@code env.@lt;remainder of expression@gt;} will be checked, and if not present a {@link System#getenv(String) system environment variable named @lt;remainder of expression@gt;} will be checked. In that case the caller must have permission to access the environment variable.

Returns:
the resolved copy
Throws:
IllegalStateException - if there is a value of type ModelType.EXPRESSION in the node tree and there is no system property or environment variable that matches the expression
SecurityException - if a security manager exists and its checkPermission method doesn't allow access to the relevant system property or environment variable

equals

public boolean equals(Object other)
Determine whether this object is equal to another.

Overrides:
equals in class Object
Parameters:
other - the other object
Returns:
true if they are equal, false otherwise

equals

public boolean equals(ModelNode other)
Determine whether this object is equal to another.

Parameters:
other - the other object
Returns:
true if they are equal, false otherwise

hashCode

public int hashCode()
Get the hash code of this node object. Note that unless the value is protect()ed, the hash code may change over time, thus making unprotected nodes unsuitable for use as hash table keys.

Overrides:
hashCode in class Object
Returns:
the hash code

clone

public ModelNode clone()
Clone this model node.

Overrides:
clone in class Object
Returns:
the clone

getType

public ModelType getType()
Get the current type of this node.

Returns:
the node type

writeExternal

public void writeExternal(ObjectOutput out)
                   throws IOException
Write this node's content in binary format to the given target.

Specified by:
writeExternal in interface Externalizable
Parameters:
out - the target to which the content should be written
Throws:
IOException - if an I/O error occurs

writeExternal

public void writeExternal(OutputStream out)
                   throws IOException
Write this node's content in binary format to the given target.

Parameters:
out - the target to which the content should be written
Throws:
IOException - if an I/O error occurs

writeExternal

public void writeExternal(DataOutputStream out)
                   throws IOException
Write this node's content in binary format to the given target.

Parameters:
out - the target to which the content should be written
Throws:
IOException - if an I/O error occurs

writeExternal

public void writeExternal(DataOutput out)
                   throws IOException
Write this node's content in binary format to the given target.

Parameters:
out - the target to which the content should be written
Throws:
IOException - if an I/O error occurs

readExternal

public void readExternal(ObjectInput in)
                  throws IOException
Read this node's content in binary format from the given source.

Specified by:
readExternal in interface Externalizable
Parameters:
in - the source from which the content should be read
Throws:
IOException - if an I/O error occurs

readExternal

public void readExternal(DataInputStream in)
                  throws IOException
Read this node's content in binary format from the given source.

Parameters:
in - the source from which the content should be read
Throws:
IOException - if an I/O error occurs

readExternal

public void readExternal(InputStream in)
                  throws IOException
Read this node's content in binary format from the given source.

Parameters:
in - the source from which the content should be read
Throws:
IOException - if an I/O error occurs

readExternal

public void readExternal(DataInput in)
                  throws IOException
Read this node's content in binary format from the given source.

Parameters:
in - the source from which the content should be read
Throws:
IOException - if an I/O error occurs

writeBase64

public void writeBase64(OutputStream stream)
                 throws IOException
Encodes the serialized representation in base64 form and writes it to the specified output stream.

Parameters:
stream - the stream to write to
Throws:
IOException - if the specified stream has an issue

JBoss Dynamic Model Representation 1.1.6.Final-redhat-1

Copyright © 2013 JBoss by Red Hat. All Rights Reserved.