org.joda.beans.impl.flexi
Class FlexiBean

java.lang.Object
  extended by org.joda.beans.impl.BasicBean
      extended by org.joda.beans.impl.flexi.FlexiBean
All Implemented Interfaces:
Serializable, Bean, DynamicBean

public final class FlexiBean
extends BasicBean
implements DynamicBean, Serializable

Implementation of a fully dynamic Bean.

Properties are dynamic, and can be added and removed at will from the map. The internal storage is created lazily to allow a flexi-bean to be used as a lightweight extension to another bean.

Each flexi-bean has a different set of properties. As such, there is one instance of meta-bean for each flexi-bean.

The keys of a flexi-bean must be simple identifiers as per '[a-zA-z_][a-zA-z0-9_]*'.

See Also:
Serialized Form

Constructor Summary
FlexiBean()
          Constructor.
FlexiBean(FlexiBean copyFrom)
          Constructor that copies all the data entries from the specified bean.
 
Method Summary
 FlexiBean append(String propertyName, Object newValue)
          Sets a property in this bean to the specified value.
 void clear()
          Removes all properties.
 FlexiBean clone()
          Clones this bean, returning an independent copy.
 boolean contains(String propertyName)
          Checks if the bean contains a specific property.
 boolean equals(Object obj)
          Compares this bean to another based on the property names and content.
 Object get(String propertyName)
          Gets the value of the property.
<T> T
get(String propertyName, Class<T> type)
          Gets the value of the property cast to a specific type.
 boolean getBoolean(String propertyName)
          Gets the value of the property as a boolean.
 double getDouble(String propertyName)
          Gets the value of the property as a double.
 double getDouble(String propertyName, double defaultValue)
          Gets the value of the property as a double using a default value.
 int getInt(String propertyName)
          Gets the value of the property as a int.
 int getInt(String propertyName, int defaultValue)
          Gets the value of the property as a int using a default value.
 long getLong(String propertyName)
          Gets the value of the property as a long.
 long getLong(String propertyName, long defaultValue)
          Gets the value of the property as a long using a default value.
 String getString(String propertyName)
          Gets the value of the property as a String.
 int hashCode()
          Returns a suitable hash code.
static DynamicMetaBean meta()
          Creates a standalone meta-bean.
 DynamicMetaBean metaBean()
          Gets the meta-bean representing the parts of the bean that are common across all instances, such as the set of meta-properties.
 Property<Object> property(String name)
          Gets a property by name.
 void propertyDefine(String propertyName, Class<?> propertyType)
          Adds a property to those allowed to be stored in the bean.
 boolean propertyExists(String propertyName)
          Checks if the property exists.
 Object propertyGet(String propertyName)
          Gets the value of the property.
 Set<String> propertyNames()
          Gets the set of property names.
 void propertyRemove(String propertyName)
          Removes a property by name.
 void propertySet(String propertyName, Object newValue)
          Sets the value of the property.
 Object put(String propertyName, Object newValue)
          Sets a property in this bean to the specified value.
 void putAll(FlexiBean other)
          Puts the properties in the specified bean into this bean.
 void putAll(Map<String,Object> map)
          Puts the properties in the specified map into this bean.
 void remove(String propertyName)
          Removes a property.
 void set(String propertyName, Object newValue)
          Sets a property in this bean to the specified value.
 int size()
          Gets the number of properties.
 Map<String,Object> toMap()
          Returns a map representing the contents of the bean.
 String toString()
          Returns a string that summarises the bean.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FlexiBean

public FlexiBean()
Constructor.


FlexiBean

public FlexiBean(FlexiBean copyFrom)
Constructor that copies all the data entries from the specified bean.

Parameters:
copyFrom - the bean to copy from, not null
Method Detail

meta

public static DynamicMetaBean meta()
Creates a standalone meta-bean.

This creates a new instance each time in line with dynamic bean principles.

Returns:
the meta-bean, not null

size

public int size()
Gets the number of properties.

Returns:
the number of properties

contains

public boolean contains(String propertyName)
Checks if the bean contains a specific property.

Parameters:
propertyName - the property name, null returns false
Returns:
true if the bean contains the property

get

public Object get(String propertyName)
Gets the value of the property.

This returns null if the property does not exist.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property, may be null

get

public <T> T get(String propertyName,
                 Class<T> type)
Gets the value of the property cast to a specific type.

This returns null if the property does not exist.

Type Parameters:
T - the value type
Parameters:
propertyName - the property name, not empty
type - the type to cast to, not null
Returns:
the value of the property, may be null
Throws:
ClassCastException - if the type is incorrect

getString

public String getString(String propertyName)
Gets the value of the property as a String. This will use Object.toString().

This returns null if the property does not exist.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property, may be null

getBoolean

public boolean getBoolean(String propertyName)
Gets the value of the property as a boolean.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible
NullPointerException - if the property does not exist or is null

getInt

public int getInt(String propertyName)
Gets the value of the property as a int.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible
NullPointerException - if the property does not exist or is null

getInt

public int getInt(String propertyName,
                  int defaultValue)
Gets the value of the property as a int using a default value.

Parameters:
propertyName - the property name, not empty
defaultValue - the default value for null or invalid property
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible

getLong

public long getLong(String propertyName)
Gets the value of the property as a long.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible
NullPointerException - if the property does not exist or is null

getLong

public long getLong(String propertyName,
                    long defaultValue)
Gets the value of the property as a long using a default value.

Parameters:
propertyName - the property name, not empty
defaultValue - the default value for null or invalid property
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible

getDouble

public double getDouble(String propertyName)
Gets the value of the property as a double.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible
NullPointerException - if the property does not exist or is null

getDouble

public double getDouble(String propertyName,
                        double defaultValue)
Gets the value of the property as a double using a default value.

Parameters:
propertyName - the property name, not empty
defaultValue - the default value for null or invalid property
Returns:
the value of the property
Throws:
ClassCastException - if the value is not compatible

append

public FlexiBean append(String propertyName,
                        Object newValue)
Sets a property in this bean to the specified value.

This creates a property if one does not exist.

Parameters:
propertyName - the property name, not empty
newValue - the new value, may be null
Returns:
this for chaining, not null

set

public void set(String propertyName,
                Object newValue)
Sets a property in this bean to the specified value.

This creates a property if one does not exist.

Parameters:
propertyName - the property name, not empty
newValue - the new value, may be null

put

public Object put(String propertyName,
                  Object newValue)
Sets a property in this bean to the specified value.

This creates a property if one does not exist.

Parameters:
propertyName - the property name, not empty
newValue - the new value, may be null
Returns:
the old value of the property, may be null

putAll

public void putAll(Map<String,Object> map)
Puts the properties in the specified map into this bean.

This creates properties if they do not exist.

Parameters:
map - the map of properties to add, not null

putAll

public void putAll(FlexiBean other)
Puts the properties in the specified bean into this bean.

This creates properties if they do not exist.

Parameters:
other - the map of properties to add, not null

remove

public void remove(String propertyName)
Removes a property.

No error occurs if the property does not exist.

Parameters:
propertyName - the property name, not empty

clear

public void clear()
Removes all properties.


propertyExists

public boolean propertyExists(String propertyName)
Checks if the property exists.

Parameters:
propertyName - the property name, not empty
Returns:
true if the property exists

propertyGet

public Object propertyGet(String propertyName)
Gets the value of the property.

Parameters:
propertyName - the property name, not empty
Returns:
the value of the property, may be null

propertySet

public void propertySet(String propertyName,
                        Object newValue)
Sets the value of the property.

Parameters:
propertyName - the property name, not empty
newValue - the new value of the property, may be null

metaBean

public DynamicMetaBean metaBean()
Description copied from interface: DynamicBean
Gets the meta-bean representing the parts of the bean that are common across all instances, such as the set of meta-properties.

Specified by:
metaBean in interface Bean
Specified by:
metaBean in interface DynamicBean
Returns:
the meta-bean, not null

property

public Property<Object> property(String name)
Description copied from interface: Bean
Gets a property by name.

The base interface throws an exception if the name is not recognised. By contrast, the DynamicBean subinterface creates the property on demand.

Specified by:
property in interface Bean
Specified by:
property in interface DynamicBean
Overrides:
property in class BasicBean
Parameters:
name - the property name to retrieve, not null
Returns:
the property, not null

propertyNames

public Set<String> propertyNames()
Description copied from interface: Bean
Gets the set of property names.

Specified by:
propertyNames in interface Bean
Overrides:
propertyNames in class BasicBean
Returns:
the unmodifiable map of property objects, not null

propertyDefine

public void propertyDefine(String propertyName,
                           Class<?> propertyType)
Description copied from interface: DynamicBean
Adds a property to those allowed to be stored in the bean.

Some implementations will automatically add properties, in which case this method will have no effect.

Specified by:
propertyDefine in interface DynamicBean
Parameters:
propertyName - the property name to check, not empty, not null
propertyType - the property type, not null

propertyRemove

public void propertyRemove(String propertyName)
Description copied from interface: DynamicBean
Removes a property by name.

Specified by:
propertyRemove in interface DynamicBean
Parameters:
propertyName - the property name to remove, null ignored

toMap

public Map<String,Object> toMap()
Returns a map representing the contents of the bean.

Returns:
a map representing the contents of the bean, not null

clone

public FlexiBean clone()
Clones this bean, returning an independent copy.

Specified by:
clone in interface Bean
Overrides:
clone in class BasicBean
Returns:
the clone, not null

equals

public boolean equals(Object obj)
Compares this bean to another based on the property names and content.

Overrides:
equals in class BasicBean
Parameters:
obj - the object to compare to, null returns false
Returns:
true if equal

hashCode

public int hashCode()
Returns a suitable hash code.

Overrides:
hashCode in class BasicBean
Returns:
a hash code

toString

public String toString()
Returns a string that summarises the bean.

The string contains the class name and properties.

Overrides:
toString in class BasicBean
Returns:
a summary string, not null


Copyright © 2007–2014 Joda.org. All rights reserved.