atg.security
Class ClientAccount

java.lang.Object
  extended by atg.rmi.RemoteExceptionManager
      extended by atg.security.ClientAccount
All Implemented Interfaces:
Account, AccountTypes, atg.security.I18nAccount, java.io.Serializable

public class ClientAccount
extends atg.rmi.RemoteExceptionManager
implements atg.security.I18nAccount, java.io.Serializable

An Account object that wraps a RemoteAccount object. This allows a client to utilize a server-side AccountManager without knowing that it is working via RMI. Any RemoteExceptions that occur will be sent to all registered listeners or (in the case that there aren't any listeners) printed to System.err.

See Also:
AccountManager, RemoteAccountManager, RemoteExceptionListener, Serialized Form

Field Summary
static java.lang.String CLASS_VERSION
           
 
Fields inherited from interface atg.security.AccountTypes
ANY_ACCOUNT, GROUP_ACCOUNT, LOGIN_ACCOUNT, PRIVILEGE_ACCOUNT
 
Constructor Summary
ClientAccount(ClientAccountManager pAccountManager, RemoteAccount pAccount)
          Wrap an Account object with an RMI accessibility layer.
 
Method Summary
 void addGroup(java.lang.String pNewGroupName)
          Makes this account a member of a new group.
 AccountManager getAccountManager()
          Returns the account manager associated with this account.
 java.lang.String getAccountName()
          Returns the name of the account.
 int getAccountType()
          Returns the account type.
 java.lang.String getAttribute(java.lang.String pAttributeName)
          Retrieves the string value of a given attribute.
 java.util.Map getAttributes()
          Retrieves a mapping of all defined attributes and their values from the account.
 java.lang.String getDisplayNameForAttribute(java.lang.String pAttributeName)
          Returns the display name that should be associated with an attribute.
 void invalidate()
          Invalidates locally cached values.
protected  void invalidate(java.lang.String pAccountName)
          Invalidates a named account's cache.
 java.util.Iterator listGroups()
          Returns an iterator of the groups that this account is a member of.
 java.util.Iterator listMembers()
          If this Account is a group, return the names of the members of the group.
 void refresh()
          Refreshes locally cached values if necessary.
 void removeGroup(java.lang.String pGroupName)
          Removes a group from the set of groups that this account is a member of.
 void setAttribute(java.lang.String pAttributeName, java.lang.String pNewValue)
          Changes the value of a given attribute.
 void setAttributes(java.util.Map pNewAttributes)
          Changes the values of a set of account attributes.
 void setGroups(java.lang.String[] pNewGroups)
          Makes this account a member of a set of groups.
 
Methods inherited from class atg.rmi.RemoteExceptionManager
addRemoteExceptionListener, notifyRemoteExceptionListeners, removeRemoteExceptionListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Constructor Detail

ClientAccount

public ClientAccount(ClientAccountManager pAccountManager,
                     RemoteAccount pAccount)
Wrap an Account object with an RMI accessibility layer. This version is to be used on the client side when you've received a RemoteAccount RMI object.

Parameters:
pAccountManager - The client-side account manager that manages this account.
pAccount - The RMI stub object for the account.
pType - The type of account.
See Also:
AccountTypes
Method Detail

invalidate

public void invalidate()
Invalidates locally cached values.


invalidate

protected void invalidate(java.lang.String pAccountName)
Invalidates a named account's cache. This is used for invalidating group accounts as our membership changes.


refresh

public void refresh()
Refreshes locally cached values if necessary.


getAccountManager

public AccountManager getAccountManager()
Returns the account manager associated with this account.

Specified by:
getAccountManager in interface Account

getAccountName

public java.lang.String getAccountName()
Returns the name of the account. This is usually either a login name or a group name.

Specified by:
getAccountName in interface Account

getAccountType

public int getAccountType()
Returns the account type.

Specified by:
getAccountType in interface Account
See Also:
AccountTypes

getAttribute

public java.lang.String getAttribute(java.lang.String pAttributeName)
Retrieves the string value of a given attribute.

Note that this will not return the real value for the password attribute, for security reasons.

Specified by:
getAttribute in interface Account
Parameters:
pAttributeName - The name of the desired attribute.

getAttributes

public java.util.Map getAttributes()
Retrieves a mapping of all defined attributes and their values from the account.

Note that this will not return the correct value for the password attribute, for security reasons.

Specified by:
getAttributes in interface Account

setAttribute

public void setAttribute(java.lang.String pAttributeName,
                         java.lang.String pNewValue)
                  throws InvalidAttributeException
Changes the value of a given attribute.

Specified by:
setAttribute in interface Account
Parameters:
pAttributeName - The name of the attribute to change.
pNewValue - The new value to give to the attribute. If this value is null, the attribute is removed.
Throws:
InvalidAttributeException

setAttributes

public void setAttributes(java.util.Map pNewAttributes)
                   throws InvalidAttributeException
Changes the values of a set of account attributes. The mapping may contain a subset of existing attribute values; only those attributes that are present in the mapping are changed, and none are removed.

Specified by:
setAttributes in interface Account
Parameters:
pNewAttributes - The set of attributes to change, and their associated values.
Throws:
InvalidAttributeException

listGroups

public java.util.Iterator listGroups()
Returns an iterator of the groups that this account is a member of.

Specified by:
listGroups in interface Account

addGroup

public void addGroup(java.lang.String pNewGroupName)
              throws NoSuchAccountException,
                     PermissionDeniedException
Makes this account a member of a new group.

Specified by:
addGroup in interface Account
Parameters:
newGroupName - The name of the group to add membership to.
Throws:
NoSuchAccountException - Indicates that the specified group does not exist.
PermissionDeniedException

setGroups

public void setGroups(java.lang.String[] pNewGroups)
               throws NoSuchAccountException,
                      PermissionDeniedException
Makes this account a member of a set of groups.

Specified by:
setGroups in interface Account
Parameters:
pNewGroups - An array of names of groups to add membership to.
Throws:
NoSuchAccountException - Indicates that a specified group does not exist.
PermissionDeniedException

removeGroup

public void removeGroup(java.lang.String pGroupName)
                 throws NoSuchAccountException,
                        PermissionDeniedException
Removes a group from the set of groups that this account is a member of.

Specified by:
removeGroup in interface Account
Parameters:
groupName - The name of the group to remove membership from.
Throws:
NoSuchAccountException - Indicates that the account is not a member of the group.
PermissionDeniedException

listMembers

public java.util.Iterator listMembers()
If this Account is a group, return the names of the members of the group. (Note that there is no way to add members to the group; rather, you add the group to the account and it automagically becomes a member.)

Specified by:
listMembers in interface Account

getDisplayNameForAttribute

public java.lang.String getDisplayNameForAttribute(java.lang.String pAttributeName)
Returns the display name that should be associated with an attribute. If the name is not available this will return null.

Specified by:
getDisplayNameForAttribute in interface atg.security.I18nAccount