# com.bea.p13n.property
HierarchicalEntity Interface

public interface HierarchicalEntity
extends `ConfigurableEntity`

HierarchicalEntity extends ConfigurableEntity by describing an interface by which Entities can be included in a hierachy of successors. The resulting hierarchy is searched upward when getting Properties. This design pattern models the Chain of Responsibility Pattern (Gamma et al).

For example, if an entity A has a successor entity B, and A is queried for a property but does not have a value persisted for that property, it will lookup entity B and query it for that property.

Also, "explicit" successors can be specified as part of a getProperty method call. These are other ConfigurableEntities that should be queried after the current entity, but before any persisted successors.

A HierarchicalEntity can have one successor persisted for each property set, as well as a "default" successor that is not associated with a property set. The default successor will be queried in the case that the current entity does not have a value, the explicit successor (if one is specified) does not have a value, and the successor for the property's property set does not have a value.

All Known Implementing Classes
  `AbstractHierarchicalEntity`

All Superinterfaces
  `ConfigurableEntity`

## Field Summary

`public static final `String`` | `SUCCESSOR` property name for an entity's successor

Fields from interface com.bea.p13n.property`.`ConfigurableEntity``
``RESERVED_PROPERTY_SET``

## Method Summary

`public `Object`` | `getProperty`(`String` propertySet, `String` propertyName, `ConfigurableEntity` successor) Retrieve the value associated with the named key in the specified property set.
`public `String`` | `getPropertyAsString`(`String` propertySet, `String` propertyName, `ConfigurableEntity` successor) Convenience method to return the property as a String.
`public `Object`` | `getPropertyNoDefault`(`String` propertySet, `String` propertyName, `ConfigurableEntity` successor) Retrieve the value associated with the property in the specified property set, but does not return a default value from the property's PropertyDefinition if the property does not exist for the entity or in the hierarchy of successors.
`public `ConfigurableEntity`` | `getSuccessor`(`String` propertySet) Retrieve the successor for the specified property set.
`public void` | `removeSuccessor`(`String` propertySet) Remove the successor for the specified property set
`public void` | `setSuccessor`(`String` propertySet, `ConfigurableEntity` successor) Set the successor for the specified property set

Methods from interface `com.bea.p13n.property.`ConfigurableEntity``
``getJndiName`, `getPkString`, `getProperty`, `getPropertyAsString`, `getPropertyNoDefault`, `getUniqueId`, `removeProperty`, `setProperty``

## Field Detail

### SUCCESSOR

    public static final String SUCCESSOR

  property name for an entity's successor

## Method Detail

### getProperty(String, String, ConfigurableEntity) Method

    public Object getProperty(String propertySet,
                              String propertyName,
                              ConfigurableEntity successor)
         throws RemoteException

Retrieve the value associated with the named key in the specified property set. If the entity does not have a value defined for that property, the property will be searched in the successor hiearchy using the explicit successor first and then the successor for the specified scope, and finally the entity's default successor. If this search does not return a value, the default value from the property set will be returned.

#### Parameters

propertySet
  The name of the property set

propertyName
  The name of the property to retrieve.

successor
  The explicit successor to use for sucessor hiearchy search if the entity does not have the property defined.

#### Exceptions

``RemoteException``

### getPropertyAsString(String, String, ConfigurableEntity) Method

    public String getPropertyAsString(String propertySet,
                                      String propertyName,
                                      ConfigurableEntity successor)
         throws RemoteException

Convenience method to return the property as a String. Follows the same search order as the getProperty method.

#### Parameters

propertySet
  The name of the property set

propertyName
  The name of the property to retrieve.

successor
  The explicit successor to use for sucessor hiearchy search if the entity does not have the property defined.

#### Exceptions

``RemoteException``

### getPropertyNoDefault(String, String, ConfigurableEntity) Method

    public Object getPropertyNoDefault(String propertySet,
                                       String propertyName,
                                       ConfigurableEntity successor)
         throws RemoteException

Retrieve the value associated with the property in the specified property set, but does not return a default value from the property's PropertyDefinition if the property does not exist for the entity or in the hierarchy of successors. This method is used by the implementation of the getProperty methods so that the search in the successor hierarchy does not return a default value from the PropertySet.

#### Parameters

propertySet
  The name of the property set

propertyName
  The name of the property to retrieve.

successor
  The explicit successor to use for sucessor hiearchy search if the entity does not have the property defined.

#### Exceptions

``RemoteException``

### getSuccessor(String) Method

    public ConfigurableEntity getSuccessor(String propertySet)
         throws RemoteException

Retrieve the successor for the specified property set.

#### Parameters

propertySet
  The name of the property set

#### Exceptions

``RemoteException``

### removeSuccessor(String) Method

    public void removeSuccessor(String propertySet)
         throws RemoteException

Remove the successor for the specified property set

#### Parameters

propertySet
  The name of the property set

#### Exceptions

``RemoteException``

### setSuccessor(String, ConfigurableEntity) Method

    public void setSuccessor(String propertySet,
                             ConfigurableEntity successor)
         throws RemoteException

Set the successor for the specified property set

#### Parameters

propertySet
  The name of the property set

successor
  The property set-level successor used during the search of a property.

#### Exceptions

``RemoteException``