This
org.jasig.portal.services.persondir.IPersonAttributeDao implementation iterates through an ordered
List of
org.jasig.portal.services.persondir.IPersonAttributeDao impls
when getting user attributes.
The first DAO is queried using the seed
Map passed to this class. The results
of the query are merged into a general result map. After the first DAO this general
result map used as the query seed for each DAO and each DAOs results are merged into it.
This behavior allows a DAO lower on the list to rely on attributes returned by a DAO
higher on the list.
The default merger for the general result set is
ReplacingAttributeAdder .
Note that most DAOs expect a Map of String->String. Some of the DAOs return a Map of
String->Object or String->List. This may cause problems in the DAO if the key for an
attribute with a non String value matches a key needed by the DAO for the query it is
running.
It is highly recomended that the first DAO on the list for this class is
the
org.jasig.portal.services.persondir.support.EchoPersonAttributeDaoImpl to ensure the seed gets placed into the general result map.
author: Eric Dalquist edalquist@unicon.net version: $Revision: 35515 $ $Date: 2005-04-06 08:31:40 -0700 (Wed, 06 Apr 2005) $ since: uPortal 2.5
getPossibleUserAttributeNames() This implementation is not always correct.
It handles the basic case where the Set of attributes returned by this
implementation is the union of the attributes declared by all of the
underlying implementations to be merged.
This implementation is not always correct.
It handles the basic case where the Set of attributes returned by this
implementation is the union of the attributes declared by all of the
underlying implementations to be merged. Of course, an IAttributeMerger
might provide for a merging policy such that the attributes resulting from
invoking this IPersonAttributeDao implementation are not the union
of the attributes declared by the underlying PersonAttributeDaos.
See Also:org.jasig.portal.services.persondir.IPersonAttributeDao.getPossibleUserAttributeNames
True if this class will catch exceptions thrown by its delegate DAOs
and fail to propogate them. False if this class will stop on failure.
true if will recover exceptions, false otherwise
Set the strategy whereby we accumulate attributes from the results of
polling our delegates.
Parameters: merger - The attrMerger to set. throws: IllegalArgumentException - If merger is null.
setPersonAttributeDaos
public void setPersonAttributeDaos(List daos)(Code)
Set the
List of delegates which we will poll for attributes.
Parameters: daos - The personAttributeDaos to set. throws: IllegalArgumentException - If daos is null.
setRecoverExceptions
public void setRecoverExceptions(boolean recover)(Code)
Set to true if you would like this class to swallow RuntimeExceptions
thrown by its delegates. This allows it to recover if a particular attribute
source fails, still considering previous and subsequent sources.
Set to false if you would like this class to fail hard upon any Throwable
thrown by its children. This is desirable in cases where your Portal will not
function without attributes from all of its sources.
Parameters: recover - whether you would like exceptions recovered internally
Fields inherited from org.jasig.portal.services.persondir.support.AbstractDefaultQueryPersonAttributeDao