tinkerpop/frames — pull request #104 by ccondit (2014-09-22 17:28:23+00:00)
Title: Adds multi-valued property support to Frames

Multi-valued property support provides the following:
- *hasX* method will return true if the property has been set on the node
- *setX* methods with a primitive argument will replace the current value with the primitive value
- *setX* methods with an Iterable argument will replace the current value with the values of the Iterable
- *addX* methods with a primitive argument append the primitive to the current value
- *addX* methods with an Iterable argument will append the current value with the values of the Iterable
- *getX* methods with Iterable return types:
- Return empty Iterables when no value is present
- Return single valued Iterables when a single value has been added
- Return multi-valued Iterables when multiple values have been added
- *getX* methods with primitive return types:
- Return *null* when no value is present
- Return the primitive value when a value is present
- Throw an IllegalStateException when multiple values are present

Further:
- Properties are returned in the order they are added
- Be sure that handler methods for each property are using the same primitive type:
- Incompatible types will fail fast when getting a single primitive type
- Incompatible types will fail later - after the client references elements of the collection (due to type erasure)