com.google.appengine.api.datastore
Class PropertyContainer

java.lang.Object
  extended by com.google.appengine.api.datastore.PropertyContainer
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
EmbeddedEntity, Entity

public abstract class PropertyContainer
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable

A mutable property container.

See Also:
Serialized Form

Method Summary
 java.util.Map<java.lang.String,java.lang.Object> getProperties()
          Gets all of the properties belonging to this container.
 java.lang.Object getProperty(java.lang.String propertyName)
          Gets the property with the specified name.
 boolean hasProperty(java.lang.String propertyName)
          Returns true if a property has been set.
 boolean isUnindexedProperty(java.lang.String propertyName)
          Returns true if propertyName has a value that will not be indexed.
 void removeProperty(java.lang.String propertyName)
          Removes any property with the specified name.
 void setPropertiesFrom(PropertyContainer src)
          A convenience method that populates properties from those in the given container.
 void setProperty(java.lang.String propertyName, java.lang.Object value)
          Sets the property named, propertyName, to value.
 void setUnindexedProperty(java.lang.String propertyName, java.lang.Object value)
          Like #setProperty, but doesn't index the property in the built-in single property indexes.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getProperty

public java.lang.Object getProperty(java.lang.String propertyName)
Gets the property with the specified name. The value returned may not be the same type as originally set via setProperty(java.lang.String, java.lang.Object).

Returns:
the property corresponding to propertyName.

getProperties

public java.util.Map<java.lang.String,java.lang.Object> getProperties()
Gets all of the properties belonging to this container.

Returns:
an unmodifiable Map of properties.

hasProperty

public boolean hasProperty(java.lang.String propertyName)
Returns true if a property has been set. This function can be used to test if a property has been specifically set to null.

Returns:
true iff the property named propertyName exists.

removeProperty

public void removeProperty(java.lang.String propertyName)
Removes any property with the specified name. If there is no property with this name set, simply does nothing.

Throws:
java.lang.NullPointerException - If propertyName is null.

setProperty

public void setProperty(java.lang.String propertyName,
                        java.lang.Object value)
Sets the property named, propertyName, to value.

As the value is stored in the datastore, it is converted to the datastore's native type. This may include widening, such as converting a Short to a Long.

All Collections are prone to losing their sort order and their original types as they are stored in the datastore. For example, a TreeSet may be returned as a List from getProperty(java.lang.String), with an arbitrary re-ordering of elements.

Overrides any existing value for this property, whether indexed or unindexed.

Note that Blob, Text and EmbeddedEntity property values are never indexed by the built-in single property indexes. To store other types without being indexed, use setUnindexedProperty(java.lang.String, java.lang.Object).

Parameters:
value - may be one of the supported datatypes or a heterogeneous Collection of one of the supported datatypes.
Throws:
java.lang.IllegalArgumentException - If the value is not of a type that the data store supports.
See Also:
setUnindexedProperty(java.lang.String, java.lang.Object)

setUnindexedProperty

public void setUnindexedProperty(java.lang.String propertyName,
                                 java.lang.Object value)
Like #setProperty, but doesn't index the property in the built-in single property indexes.

Parameters:
value - may be one of the supported datatypes, or a heterogeneous Collection of one of the supported datatypes.

Overrides any existing value for this property, whether indexed or unindexed.

Throws:
java.lang.IllegalArgumentException - If the value is not of a type that the data store supports.
See Also:
setProperty(java.lang.String, java.lang.Object)

isUnindexedProperty

public boolean isUnindexedProperty(java.lang.String propertyName)
Returns true if propertyName has a value that will not be indexed. This includes Text, Blob, and any property added using setUnindexedProperty(java.lang.String, java.lang.Object).


setPropertiesFrom

public void setPropertiesFrom(PropertyContainer src)
A convenience method that populates properties from those in the given container.

This method transfers information about unindexed properties and clones any mutable values.

Parameters:
src - The container from which we will populate ourself.