org.modeshape.graph.property.basic
Class BasicMultiValueProperty

java.lang.Object
  extended by org.modeshape.graph.property.basic.BasicProperty
      extended by org.modeshape.graph.property.basic.BasicMultiValueProperty
All Implemented Interfaces:
Serializable, Comparable<Property>, Iterable<Object>, Property, Readable

@Immutable
public class BasicMultiValueProperty
extends BasicProperty

An immutable version of a property that has 2 or more values. This is done for efficiency of the in-memory representation, since many properties will have just a single value, while others will have multiple values.

See Also:
Serialized Form

Nested Class Summary
protected  class BasicMultiValueProperty.ReadOnlyIterator
           
 
Constructor Summary
BasicMultiValueProperty(Name name, List<Object> values)
          Create a property with 2 or more values.
BasicMultiValueProperty(Name name, Object... values)
          Create a property with 2 or more values.
 
Method Summary
 Object getFirstValue()
          Obtain the property's first value in its natural form.
 boolean isEmpty()
          Determine whether this property has no actual values.
 boolean isMultiple()
          Determine whether the property currently has multiple values.
 boolean isSingle()
          Determine whether the property currently has a single value.
 Iterator<Object> iterator()
          
 int size()
          Get the number of actual values in this property.
 
Methods inherited from class org.modeshape.graph.property.basic.BasicProperty
compareTo, equals, getName, getString, getString, getString, getString, getString, getValues, getValuesAsArray, hashCode, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BasicMultiValueProperty

public BasicMultiValueProperty(Name name,
                               List<Object> values)
Create a property with 2 or more values. Note that the supplied list may be modifiable, as this object does not expose any means for modifying the contents.

Parameters:
name - the property name
values - the property values
Throws:
IllegalArgumentException - if the values is null or does not have at least 2 values

BasicMultiValueProperty

public BasicMultiValueProperty(Name name,
                               Object... values)
Create a property with 2 or more values.

Parameters:
name - the property name
values - the property values
Throws:
IllegalArgumentException - if the values is null or does not have at least 2 values
Method Detail

isEmpty

public boolean isEmpty()
Determine whether this property has no actual values. This method may return true regardless of whether the property allows a single value, or multiple values.

This method is a convenience method that is equivalent to size() == 0.

Returns:
true if this property has no values, or false otherwise
See Also:
Property.isMultiple(), Property.isSingle()

isMultiple

public boolean isMultiple()
Determine whether the property currently has multiple values.

Returns:
true if the property has multiple values, or false otherwise.
See Also:
Property.isSingle(), Property.isEmpty()

isSingle

public boolean isSingle()
Determine whether the property currently has a single value.

Returns:
true if the property has a single value, or false otherwise.
See Also:
Property.isMultiple(), Property.isEmpty()

size

public int size()
Get the number of actual values in this property. If the property allows multiple values, then this method may return a value greater than 1. If the property only allows a single value, then this method will return either 0 or 1. This method may return 0 regardless of whether the property allows a single value, or multiple values.

Returns:
the number of actual values in this property; always non-negative

getFirstValue

public Object getFirstValue()
Obtain the property's first value in its natural form. This is equivalent to calling isEmpty() ? null : iterator().next()

Returns:
the first value, or null if the property is empty
See Also:
Property.getFirstValue()

iterator

public Iterator<Object> iterator()



Copyright © 2008-2010 JBoss, a division of Red Hat. All Rights Reserved.