|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface SecurityServerClient
An interface to communicate with the Crowd Security Server.
for a singleton factory implementation.
Method Summary | |
---|---|
void |
addAttributeToPrincipal(java.lang.String principal,
SOAPAttribute attribute)
Adds an attribute to a principal who is in the application's assigned directory. |
SOAPGroup |
addGroup(SOAPGroup group)
Adds a group to the application's assigned directory. |
SOAPPrincipal |
addPrincipal(SOAPPrincipal principal,
PasswordCredential credential)
Adds a principal to the application's assigned directory. |
void |
addPrincipalToGroup(java.lang.String principal,
java.lang.String group)
Adds a principal to a group for the application's assigned directory. |
void |
addPrincipalToRole(java.lang.String principal,
java.lang.String role)
Adds the principal to a role for the application's assigned directory. |
SOAPRole |
addRole(SOAPRole role)
Adds a role to the application's assigned directory. |
void |
authenticate()
Authenticate the client using the application name and password from crowd.properties. |
java.lang.String |
authenticatePrincipal(PrincipalAuthenticationContext principalAuthenticationContext)
Authenticates a principal verses the calling who is in the application's assigned directory. |
java.lang.String |
authenticatePrincipalSimple(java.lang.String username,
java.lang.String password)
Authentiates a principal without SSO details utilizing centralized authentication only. |
java.lang.String |
createPrincipalToken(java.lang.String username,
ValidationFactor[] validationFactors)
Authenticates a principal without validating a password. |
java.lang.String[] |
findAllGroupNames()
Finds all of the groups who are visible in the application's assigned directory. |
SOAPNestableGroup[] |
findAllGroupRelationships()
Finds all of the groups who are visible in the application's assigned directory. |
SOAPGroup[] |
findAllGroups()
Retrives all groups in the application's assigned directories. |
java.lang.String[] |
findAllPrincipalNames()
Finds all of the principals who are visable in the application's assigned directory. |
SOAPPrincipal[] |
findAllPrincipals()
Retrives all principals in the application's assigned directories. |
java.lang.String[] |
findAllRoleNames()
Finds all of the roles who are visable in the application's assigned directory. |
SOAPRole[] |
findAllRoles()
Retrives all roles in the application's assigned directories. |
SOAPGroup |
findGroupByName(java.lang.String name)
Find a group by name for the application's assigned directory. |
java.lang.String[] |
findGroupMemberships(java.lang.String principalName)
Finds all the groups the principal is a member of. |
SOAPPrincipal |
findPrincipalByName(java.lang.String name)
Finds a principal by name who is in the application's assigned directory. |
SOAPPrincipal |
findPrincipalByToken(java.lang.String key)
Finds a principal by token. |
SOAPRole |
findRoleByName(java.lang.String name)
Finds a role by name for the application's assigned directory. |
java.lang.String[] |
findRoleMemberships(java.lang.String principalName)
Finds all the roles the principal is a member of. |
long |
getCacheTime()
Deprecated. This method is now implemented by the crowd-ehache.xml configuration file. |
ClientProperties |
getClientProperties()
Retrieve the client properties used to connect to the Crowd Security Server. |
SOAPCookieInfo |
getCookieInfo()
Returns information needed to set the SSO cookie correctly. |
java.lang.String |
getDomain()
This will return the domain configured in Crowd or null if no domain has been set. |
java.lang.String[] |
getGrantedAuthorities()
Will return the List of group names that have been given access to connect to the application |
void |
invalidateToken(java.lang.String token)
Invalidates a principal token for all integrated applications. |
boolean |
isCacheEnabled()
Checks if the client application should cache security information from the Crowd server. |
boolean |
isGroupMember(java.lang.String group,
java.lang.String principal)
Checks if a prinicipal is a member of a group for the application's assigned directory. |
boolean |
isRoleMember(java.lang.String role,
java.lang.String principal)
Checks if a principal is a member of a role for the application's assigned directory. |
boolean |
isValidToken(java.lang.String principalToken,
ValidationFactor[] validationFactors)
Checks if the principal's current token is still valid. |
void |
removeAttributeFromPrincipal(java.lang.String principal,
java.lang.String attribute)
Removes an attribute from a principal who is in the application's assigned directory. |
void |
removeGroup(java.lang.String group)
Removes a group from the applciation's assigned directory. |
void |
removePrincipal(java.lang.String principal)
Removes a principal from the application's assigned directory. |
void |
removePrincipalFromGroup(java.lang.String principal,
java.lang.String group)
Removes a principal from a group for the application's assigned directory. |
void |
removePrincipalFromRole(java.lang.String principal,
java.lang.String role)
Removes a principal from a role for the application's assigned directory. |
void |
removeRole(java.lang.String role)
Removes a role from the application's assigned directory. |
void |
resetPrincipalCredential(java.lang.String principal)
Resets a principal's password credential to a random password and emails the new password who is in the application's assigned directory. |
SOAPGroup[] |
searchGroups(SearchRestriction[] searchRestrictions)
Searches for groups that are in the application's assigned directory. |
SOAPPrincipal[] |
searchPrincipals(SearchRestriction[] searchRestrictions)
Searches for prnicipals that are in the application's assigned directory. |
SOAPRole[] |
searchRoles(SearchRestriction[] searchRestrictions)
Searches for roles that are in the application's assigned directory. |
void |
updateGroup(java.lang.String group,
java.lang.String description,
boolean active)
Updates the first group located from the list of directories assigned to an application Available fields that can be updated are description and active |
void |
updatePrincipalAttribute(java.lang.String name,
SOAPAttribute attribute)
Updates an attribute for a principal who is in the application's assigned directory.. |
void |
updatePrincipalCredential(java.lang.String principal,
PasswordCredential credential)
Updates the password credential for a principal who is in the application's assigned directory. |
Method Detail |
---|
void authenticate() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- there was a problem communicating with the Crowd Security Server.
InvalidAuthorizationTokenException
- incorrect credentials were used to authenticate the client.
Ensure the application.password in crowd.properties matches the one defined in the Crowd Console.java.lang.String authenticatePrincipal(PrincipalAuthenticationContext principalAuthenticationContext) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, InvalidAuthenticationException, InactiveAccountException, ApplicationAccessDeniedException
principalAuthenticationContext
- The principal's authentication details.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
InvalidAuthenticationException
- The principal's authentication details were invalid.
InactiveAccountException
- The principal's account is not active.
ApplicationAccessDeniedException
- if the user does not have access to this application.boolean isValidToken(java.lang.String principalToken, ValidationFactor[] validationFactors) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ApplicationAccessDeniedException
principalToken
- The token to check.validationFactors
- The known identity factors used when creating the principal's token.
true
if and only if the token is active, otherwise false
.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ApplicationAccessDeniedException
- if the user does not have access to this application.void invalidateToken(java.lang.String token) throws java.rmi.RemoteException, InvalidAuthorizationTokenException
token
- The token to invalidate.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPGroup[] searchGroups(SearchRestriction[] searchRestrictions) throws java.rmi.RemoteException, InvalidAuthorizationTokenException
searchRestrictions
- The search restrictions to use when performing this search.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPPrincipal[] searchPrincipals(SearchRestriction[] searchRestrictions) throws java.rmi.RemoteException, InvalidAuthorizationTokenException
searchRestrictions
- The search restrictions to use when performing this search.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPRole[] searchRoles(SearchRestriction[] searchRestrictions) throws java.rmi.RemoteException, InvalidAuthorizationTokenException
searchRestrictions
- The search restrictions to use when performing this search.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPGroup[] findAllGroups() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPRole[] findAllRoles() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPPrincipal[] findAllPrincipals() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPGroup addGroup(SOAPGroup group) throws java.rmi.RemoteException, InvalidGroupException, InvalidAuthorizationTokenException, ApplicationPermissionException
group
- The group to add.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
InvalidGroupException
- An error occured adding the group to the directory server.
ApplicationPermissionException
- The application does not have the proper permissions to add the entity to the directory server.void updateGroup(java.lang.String group, java.lang.String description, boolean active) throws java.rmi.RemoteException, ObjectNotFoundException, ApplicationPermissionException, InvalidAuthorizationTokenException
description
and active
group
- The name of the group to update.description
- the new description of the group.active
- the new active flag for the group.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity to the directory server.
ObjectNotFoundException
- no groups matching the supplied name is found.SOAPGroup findGroupByName(java.lang.String name) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException
name
- The name of the group.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find the specific group.SOAPRole addRole(SOAPRole role) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, InvalidRoleException, ApplicationPermissionException
role
- The name of the role.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
InvalidRoleException
- An error occured adding the role to the directory server.
ApplicationPermissionException
- The application does not have the proper permissions to add the entity to the directory server.SOAPRole findRoleByName(java.lang.String name) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException
name
- The name of the role.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find the specified role.SOAPPrincipal findPrincipalByToken(java.lang.String key) throws java.rmi.RemoteException, InvalidTokenException, InvalidAuthorizationTokenException
key
- The principal's token.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidTokenException
- Unable to find the specified token.void updatePrincipalAttribute(java.lang.String name, SOAPAttribute attribute) throws java.rmi.RemoteException, ObjectNotFoundException, ApplicationPermissionException, InvalidAuthorizationTokenException
name
- The name of the principal.attribute
- The name of the attribute to update.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find the specified principal.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity in the directory server.SOAPPrincipal findPrincipalByName(java.lang.String name) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException
name
- The name of the principal.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find the specified principal.SOAPPrincipal addPrincipal(SOAPPrincipal principal, PasswordCredential credential) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, InvalidCredentialException, InvalidPrincipalException, ApplicationPermissionException
principal
- The populated principal object to added.credential
- The password for the principal.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidCredentialException
- The supplied password is invalid.
InvalidPrincipalException
- The supplied principal is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to add the entity to the directory server.void addPrincipalToGroup(java.lang.String principal, java.lang.String group) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.group
- The name of the group.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find one or both of the entities by name.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity in the directory server.void updatePrincipalCredential(java.lang.String principal, PasswordCredential credential) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, InvalidCredentialException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.credential
- The password.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find the specified principal.
InvalidCredentialException
- The supplied password is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity in the directory server.void resetPrincipalCredential(java.lang.String principal) throws java.rmi.RemoteException, InvalidEmailAddressException, InvalidCredentialException, ObjectNotFoundException, ApplicationPermissionException, InvalidAuthorizationTokenException
principal
- The name of the principal.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
InvalidCredentialException
- Unable to reset the principal's password.
ObjectNotFoundException
- Unable to find the specified principal.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity in the directory server.
InvalidEmailAddressException
void removeGroup(java.lang.String group) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
group
- The name of the group.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find the specified group.
ApplicationPermissionException
- The application does not have the proper permissions to remove the entity from the directory server.void removeRole(java.lang.String role) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
role
- The name of the role.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- The specified role is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to remove the entity from the directory server.void removePrincipal(java.lang.String principal) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- The specified principal is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to remove the entity from the directory server.void addPrincipalToRole(java.lang.String principal, java.lang.String role) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.role
- The name of the role.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- Unable to find one or both of the entities by name.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity to the directory server.boolean isGroupMember(java.lang.String group, java.lang.String principal) throws java.rmi.RemoteException, InvalidAuthorizationTokenException
group
- The name of the group.principal
- The name of the principal.
true
if and only if the principal is a group member, otherwise false
.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.boolean isRoleMember(java.lang.String role, java.lang.String principal) throws java.rmi.RemoteException, InvalidAuthorizationTokenException
role
- The name of the role.principal
- The name of the principal.
true
if and only if the principal is a role member, otherwise false
.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.void removePrincipalFromGroup(java.lang.String principal, java.lang.String group) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.group
- The name of the group.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
java.rmi.RemoteException
- An unknown remote exception occured.
ObjectNotFoundException
- The specified principal or group is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity in the directory server.void removePrincipalFromRole(java.lang.String principal, java.lang.String role) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.role
- The name of the role.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
java.rmi.RemoteException
- An unknown remote exception occured.
ObjectNotFoundException
- The specified principal or role is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to remove the entity from the directory server.void addAttributeToPrincipal(java.lang.String principal, SOAPAttribute attribute) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.attribute
- The name attribute to add.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- The specified principal is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to update the entity in the directory server.void removeAttributeFromPrincipal(java.lang.String principal, java.lang.String attribute) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException, ApplicationPermissionException
principal
- The name of the principal.attribute
- The name of the attribute.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- The specified principal is invalid.
ApplicationPermissionException
- The application does not have the proper permissions to remove the entity from the directory server.long getCacheTime() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
crowd-ehache.xml
configuration file.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.boolean isCacheEnabled() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
true
if and only if the cache is enabled, otherwise false
.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.java.lang.String getDomain() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.java.lang.String[] findAllPrincipalNames() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.java.lang.String[] findAllGroupNames() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
String
listing of the group names.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.SOAPNestableGroup[] findAllGroupRelationships() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
SOAPNestableGroup
listing of the groups, plus any direct sub-groups.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.java.lang.String[] findAllRoleNames() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
String
listing of the role names.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.java.lang.String[] findGroupMemberships(java.lang.String principalName) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException
principalName
- The name of the principal to use when performing the lookup.
String
listing of the principal's group memberships.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- The principal was not foundjava.lang.String[] findRoleMemberships(java.lang.String principalName) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, ObjectNotFoundException
principalName
- The name of the principal to use role performing the lookup.
String
listing of the principal's group memberships.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.
ObjectNotFoundException
- The principal was not foundjava.lang.String authenticatePrincipalSimple(java.lang.String username, java.lang.String password) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, InvalidAuthenticationException, InactiveAccountException, ApplicationAccessDeniedException
username
- The username of the principal.password
- The password credential.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthenticationException
- An invalid authentication occurred.
InvalidAuthorizationTokenException
- An invalid authentication occurred.
InactiveAccountException
- The principal's account is inactive.
ApplicationAccessDeniedException
- user does not have access to the application.java.lang.String createPrincipalToken(java.lang.String username, ValidationFactor[] validationFactors) throws java.rmi.RemoteException, InvalidAuthorizationTokenException, InvalidAuthenticationException, InactiveAccountException, ApplicationAccessDeniedException
username
- The username to create an authenticate token for.validationFactors
- The known attributes of the user to use when creating a token, such as their remote IP address and user-agent.
java.rmi.RemoteException
- An unknown remote exception occured.
InvalidAuthenticationException
- An invalid authentication occured.
InvalidAuthorizationTokenException
- An invalid authentication occured.
InactiveAccountException
- The principal's account is inactive.
ApplicationAccessDeniedException
java.lang.String[] getGrantedAuthorities() throws InvalidAuthorizationTokenException, java.rmi.RemoteException
InvalidAuthorizationTokenException
java.rmi.RemoteException
SOAPCookieInfo getCookieInfo() throws java.rmi.RemoteException, InvalidAuthorizationTokenException
java.rmi.RemoteException
- An unknown remote exception occurred.
InvalidAuthorizationTokenException
- The calling application's applicationToken
is invalid.ClientProperties getClientProperties()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |