Coverage Report - org.kuali.rice.kim.api.services.IdentityService
 
Classes in this File Line Coverage Branch Coverage Complexity
IdentityService
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2008-2009 The Kuali Foundation
 3  
  * 
 4  
  * Licensed under the Educational Community License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  * 
 8  
  * http://www.opensource.org/licenses/ecl2.php
 9  
  * 
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.kuali.rice.kim.api.services;
 17  
 
 18  
 import org.kuali.rice.core.api.criteria.QueryByCriteria;
 19  
 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
 20  
 import org.kuali.rice.core.api.exception.RiceIllegalStateException;
 21  
 import org.kuali.rice.kim.api.identity.Type;
 22  
 import org.kuali.rice.kim.api.identity.address.EntityAddress;
 23  
 import org.kuali.rice.kim.api.identity.affiliation.EntityAffiliation;
 24  
 import org.kuali.rice.kim.api.identity.affiliation.EntityAffiliationType;
 25  
 import org.kuali.rice.kim.api.identity.citizenship.EntityCitizenship;
 26  
 import org.kuali.rice.kim.api.identity.email.EntityEmail;
 27  
 import org.kuali.rice.kim.api.identity.employment.EntityEmployment;
 28  
 import org.kuali.rice.kim.api.identity.entity.Entity;
 29  
 import org.kuali.rice.kim.api.identity.entity.EntityDefault;
 30  
 import org.kuali.rice.kim.api.identity.entity.EntityDefaultQueryResults;
 31  
 import org.kuali.rice.kim.api.identity.entity.EntityQueryResults;
 32  
 import org.kuali.rice.kim.api.identity.external.EntityExternalIdentifier;
 33  
 import org.kuali.rice.kim.api.identity.external.EntityExternalIdentifierType;
 34  
 import org.kuali.rice.kim.api.identity.name.EntityName;
 35  
 import org.kuali.rice.kim.api.identity.personal.EntityBioDemographics;
 36  
 import org.kuali.rice.kim.api.identity.personal.EntityEthnicity;
 37  
 import org.kuali.rice.kim.api.identity.phone.EntityPhone;
 38  
 import org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName;
 39  
 import org.kuali.rice.kim.api.identity.principal.Principal;
 40  
 import org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences;
 41  
 import org.kuali.rice.kim.api.identity.residency.EntityResidency;
 42  
 import org.kuali.rice.kim.api.identity.type.EntityTypeData;
 43  
 import org.kuali.rice.kim.api.identity.visa.EntityVisa;
 44  
 import org.kuali.rice.kim.api.jaxb.StringToKimEntityNameInfoMapAdapter;
 45  
 import org.kuali.rice.kim.api.jaxb.StringToKimEntityNamePrincipalInfoMapAdapter;
 46  
 import org.kuali.rice.kim.util.KIMWebServiceConstants;
 47  
 
 48  
 import javax.jws.WebMethod;
 49  
 import javax.jws.WebParam;
 50  
 import javax.jws.WebResult;
 51  
 import javax.jws.WebService;
 52  
 import javax.jws.soap.SOAPBinding;
 53  
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 54  
 import java.util.List;
 55  
 import java.util.Map;
 56  
 
 57  
 /**
 58  
  * This service provides operations to query for principal and identity data.
 59  
  * 
 60  
  * <p>A principal represents an identity that can authenticate.  In essence, a principal can be
 61  
  * thought of as an "account" or as an identity's authentication credentials.  A principal has
 62  
  * an id which is used to uniquely identify it.  It also has a name which represents the
 63  
  * principal's username and is typically what is entered when authenticating.  All principals
 64  
  * are associated with one and only one identity.
 65  
  * 
 66  
  * <p>An identity represents a person or system.  Additionally, other "types" of entities can
 67  
  * be defined in KIM.  Information like name, phone number, etc. is associated with an identity.
 68  
  * It is the representation of a concrete person or system.  While an identity will typically
 69  
  * have a single principal associated with it, it is possible for an identity to have more than
 70  
  * one principal or even no principals at all (in the case where the identity does not actually
 71  
  * authenticate).
 72  
  * 
 73  
  * <p>This service also provides operations for querying various pieces of reference data, such as 
 74  
  * address types, affiliation types, phone types, etc.
 75  
  * 
 76  
  * <p>This service provides read-only operations.  For write operations, see
 77  
  * {@link org.kuali.rice.kim.service.IdentityUpdateService}.
 78  
  * 
 79  
  * @see org.kuali.rice.kim.service.IdentityUpdateService
 80  
  * 
 81  
  * @author Kuali Rice Team (rice.collab@kuali.org)
 82  
  *
 83  
  */
 84  
 @WebService(name = KIMWebServiceConstants.IdentityService.WEB_SERVICE_NAME, targetNamespace = KIMWebServiceConstants.MODULE_TARGET_NAMESPACE)
 85  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 86  
 public interface IdentityService {
 87  
 
 88  
     /**
 89  
      * This method finds EntityDefault data based on a query criteria.  The criteria cannot be null.
 90  
      *
 91  
      * @param queryByCriteria the criteria.  Cannot be null.
 92  
      * @return query results.  will never return null.
 93  
      * @throws IllegalArgumentException if the queryByCriteria is null
 94  
      */
 95  
     @WebMethod(operationName = "findEntityDefaults")
 96  
     @WebResult(name = "results")
 97  
         EntityDefaultQueryResults findEntityDefaults(@WebParam(name = "query") QueryByCriteria query);
 98  
 
 99  
     /**
 100  
      * This method finds Entities based on a query criteria.  The criteria cannot be null.
 101  
      *
 102  
      * @param queryByCriteria the criteria.  Cannot be null.
 103  
      * @return query results.  will never return null.
 104  
      * @throws IllegalArgumentException if the queryByCriteria is null
 105  
      */
 106  
     @WebMethod(operationName = "findEntities")
 107  
     @WebResult(name = "results")
 108  
         EntityQueryResults findEntities(@WebParam(name = "query") QueryByCriteria query);
 109  
 
 110  
         
 111  
     /**
 112  
      * Gets a {@link org.kuali.rice.kim.api.identity.entity.Entity} from an id.
 113  
      *
 114  
      * <p>
 115  
      *   This method will return null if the Entity does not exist.
 116  
      * </p>
 117  
      *
 118  
      * @param id the unique id to retrieve the entity by. cannot be null.
 119  
      * @return a {@link org.kuali.rice.kim.api.identity.entity.Entity} or null
 120  
      * @throws IllegalArgumentException if the id is blank
 121  
      */
 122  
     @WebMethod(operationName = "getEntity")
 123  
     @WebResult(name = "entity")
 124  
         Entity getEntity( @WebParam(name="id") String id );
 125  
 
 126  
         /**
 127  
      * Gets a {@link org.kuali.rice.kim.api.identity.entity.Entity} from a principalId.
 128  
      *
 129  
      * <p>
 130  
      *   This method will return null if the Entity does not exist.
 131  
      * </p>
 132  
      *
 133  
      * @param principalId the unique id to retrieve the entity by. cannot be null.
 134  
      * @return a {@link org.kuali.rice.kim.api.identity.entity.Entity} or null
 135  
      * @throws IllegalArgumentException if the id is blank
 136  
      */
 137  
     @WebMethod(operationName = "getEntityByPrincipalId")
 138  
     @WebResult(name = "entity")
 139  
         Entity getEntityByPrincipalId(@WebParam(name = "principalId") String principalId);
 140  
 
 141  
         /**
 142  
      * Gets a {@link org.kuali.rice.kim.api.identity.entity.Entity} from a principalName.
 143  
      *
 144  
      * <p>
 145  
      *   This method will return null if the Entity does not exist.
 146  
      * </p>
 147  
      *
 148  
      * @param principalName the unique id to retrieve the entity by. cannot be null.
 149  
      * @return a {@link org.kuali.rice.kim.api.identity.entity.Entity} or null
 150  
      * @throws IllegalArgumentException if the id is blank
 151  
      */
 152  
     @WebMethod(operationName = "getEntityByPrincipalName")
 153  
     @WebResult(name = "entity")
 154  
         Entity getEntityByPrincipalName(@WebParam(name = "principalName") String principalName);
 155  
 
 156  
 
 157  
     /**
 158  
      * This will create a {@link org.kuali.rice.kim.api.identity.entity.Entity} exactly like the entity passed in.
 159  
      *
 160  
      * @param entity the entity to create
 161  
      * @return the newly created Entity object.
 162  
      * @throws IllegalArgumentException if the entity is null
 163  
      * @throws IllegalStateException if the entity already exists in the system
 164  
      */
 165  
     @WebMethod(operationName="createEntity")
 166  
     @WebResult(name = "entity")
 167  
     Entity createEntity(@WebParam(name = "entity") Entity entity)
 168  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 169  
 
 170  
     /**
 171  
      * This will update a {@link org.kuali.rice.kim.api.identity.entity.Entity}.
 172  
      *
 173  
      * @param entity the entity to update
 174  
      * @return the updated Entity object.
 175  
      * @throws IllegalArgumentException if the entity is null
 176  
      * @throws IllegalStateException if the entity does not already exist in the system
 177  
      */
 178  
     @WebMethod(operationName="updateEntity")
 179  
     @WebResult(name = "entity")
 180  
     Entity updateEntity(@WebParam(name = "entity") Entity entity)
 181  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 182  
 
 183  
     /**
 184  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.entity.Entity}.
 185  
      *
 186  
      * @param id the unique id of the entity to inactivate
 187  
      * @return the inactivated Entity object.
 188  
      * @throws IllegalArgumentException if the entity is null
 189  
      * @throws IllegalStateException if the entity does not already exist in the system
 190  
      */
 191  
     @WebMethod(operationName="inactivateEntity")
 192  
     @WebResult(name = "entity")
 193  
     Entity inactivateEntity(@WebParam(name = "id") String id)
 194  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 195  
 
 196  
     
 197  
     
 198  
     /**
 199  
      * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} from an id.
 200  
      * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains
 201  
      * default values of its subclasses
 202  
      *
 203  
      * <p>
 204  
      *   This method will return null if the Entity does not exist.
 205  
      * </p>
 206  
      *
 207  
      * @param id the unique id to retrieve the entity by. cannot be null.
 208  
      * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null
 209  
      * @throws IllegalArgumentException if the id is blank
 210  
      */
 211  
     @WebMethod(operationName = "getEntityDefault")
 212  
     @WebResult(name = "entityDefault")
 213  
         EntityDefault getEntityDefault(@WebParam(name = "id") String id);
 214  
 
 215  
         /**
 216  
      * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} from an principalId.
 217  
      * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains
 218  
      * default values of its subclasses
 219  
      *
 220  
      * <p>
 221  
      *   This method will return null if the Entity does not exist.
 222  
      * </p>
 223  
      *
 224  
      * @param principalId the unique id to retrieve the entity by. cannot be null.
 225  
      * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null
 226  
      * @throws IllegalArgumentException if the principalId is blank
 227  
      */
 228  
     @WebMethod(operationName = "getEntityDefaultByPrincipalId")
 229  
     @WebResult(name = "entityDefault")
 230  
         EntityDefault getEntityDefaultByPrincipalId(@WebParam(name = "principalId") String principalId);
 231  
 
 232  
         /**
 233  
      * Gets a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} from an principalName.
 234  
      * {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} is a condensed version of {@link org.kuali.rice.kim.api.identity.entity.Entity} that contains
 235  
      * default values of its subclasses
 236  
      *
 237  
      * <p>
 238  
      *   This method will return null if the Entity does not exist.
 239  
      * </p>
 240  
      *
 241  
      * @param principalName the unique id to retrieve the entity by. cannot be null.
 242  
      * @return a {@link org.kuali.rice.kim.api.identity.entity.EntityDefault} or null
 243  
      * @throws IllegalArgumentException if the principalId is blank
 244  
      */
 245  
     @WebMethod(operationName = "getEntityDefaultByPrincipalName")
 246  
     @WebResult(name = "entityDefault")
 247  
         EntityDefault getEntityDefaultByPrincipalName(@WebParam(name = "principalName") String principalName);
 248  
     
 249  
     
 250  
 
 251  
     /**
 252  
      * Gets a {@link org.kuali.rice.kim.api.identity.principal.Principal} from an principalId.
 253  
      *
 254  
      * <p>
 255  
      *   This method will return null if the Principal does not exist.
 256  
      * </p>
 257  
      *
 258  
      * @param principalId the unique id to retrieve the principal by. cannot be null.
 259  
      * @return a {@link org.kuali.rice.kim.api.identity.principal.Principal} or null
 260  
      * @throws IllegalArgumentException if the principalId is blank
 261  
      */
 262  
     @WebMethod(operationName = "getPrincipal")
 263  
     @WebResult(name = "principal")
 264  
     Principal getPrincipal( @WebParam(name="principalId") String principalId );
 265  
 
 266  
     /**
 267  
      * Gets a {@link org.kuali.rice.kim.api.identity.principal.Principal} from an principalName.
 268  
      *
 269  
      * <p>
 270  
      *   This method will return null if the Principal does not exist.
 271  
      * </p>
 272  
      *
 273  
      * @param principalName the unique id to retrieve the principal by. cannot be null.
 274  
      * @return a {@link org.kuali.rice.kim.api.identity.principal.Principal} or null
 275  
      * @throws IllegalArgumentException if the principalId is blank
 276  
      */
 277  
     @WebMethod(operationName = "getPrincipalByPrincipalName")
 278  
     @WebResult(name = "principal")
 279  
     Principal getPrincipalByPrincipalName( @WebParam(name="principalName") String principalName );
 280  
 
 281  
     /**
 282  
      * Gets a {@link org.kuali.rice.kim.api.identity.principal.Principal} from an principalName and password.
 283  
      *
 284  
      * <p>
 285  
      *   This method will return null if the Principal does not exist or the password is incorrect.
 286  
      * </p>
 287  
      *
 288  
      * @param principalName the unique id to retrieve the principal by. cannot be null.
 289  
      * @param password the password for the principal
 290  
      * @return a {@link org.kuali.rice.kim.api.identity.principal.Principal} or null
 291  
      * @throws IllegalArgumentException if the principalName is blank
 292  
      */
 293  
     @WebMethod(operationName = "getPrincipalByPrincipalNameAndPassword")
 294  
     @WebResult(name = "principal")
 295  
     Principal getPrincipalByPrincipalNameAndPassword( @WebParam(name="principalName") String principalName,  @WebParam(name="password") String password );
 296  
 
 297  
     /**
 298  
      * This will create a {@link org.kuali.rice.kim.api.identity.principal.Principal} exactly like the principal passed in.
 299  
      *
 300  
      * The principal object passed in must be populated with an entityId and a principalName
 301  
      *
 302  
      * @param principal the principal to create
 303  
      * @return the newly created Principal object.
 304  
      * @throws IllegalArgumentException if the principal is null
 305  
      * @throws IllegalStateException if the principal already exists in the system or the principal object is not populated with entityId and principalName
 306  
      */
 307  
     @WebMethod(operationName="addPrincipalToEntity")
 308  
     @WebResult(name = "principal")
 309  
     Principal addPrincipalToEntity(@WebParam(name = "principal") Principal principal)
 310  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 311  
 
 312  
     /**
 313  
      * This will update a {@link org.kuali.rice.kim.api.identity.principal.Principal} exactly like the principal passed in.
 314  
      *
 315  
      *
 316  
      * @param principal the principal to update
 317  
      * @return the updated Principal object.
 318  
      * @throws IllegalArgumentException if the principal is null
 319  
      * @throws IllegalStateException if the principal does not exist in the system.
 320  
      */
 321  
     @WebMethod(operationName="updatePrincipal")
 322  
     @WebResult(name = "principal")
 323  
     Principal updatePrincipal(@WebParam(name = "principal") Principal principal)
 324  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 325  
 
 326  
     /**
 327  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.principal.Principal}.
 328  
      *
 329  
      *
 330  
      * @param id the unique id of the principal to inactivate
 331  
      * @return the inactivated Principal object.
 332  
      * @throws IllegalArgumentException if the principal is null
 333  
      * @throws IllegalStateException if the principal does not exist in the system.
 334  
      */
 335  
     @WebMethod(operationName="inactivatePrincipal")
 336  
     @WebResult(name = "principal")
 337  
     Principal inactivatePrincipal(@WebParam(name = "principalId") String principalId)
 338  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 339  
 
 340  
     /**
 341  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.principal.Principal}.
 342  
      *
 343  
      *
 344  
      * @param principalName the unique principalName of the principal to inactivate
 345  
      * @return the inactivated Principal object.
 346  
      * @throws IllegalArgumentException if the principal is null
 347  
      * @throws IllegalStateException if the principal does not exist in the system.
 348  
      */
 349  
     @WebMethod(operationName="inactivatePrincipalByName")
 350  
     @WebResult(name = "principal")
 351  
     Principal inactivatePrincipalByName(@WebParam(name = "principalName") String principalName)
 352  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 353  
 
 354  
 
 355  
     /**
 356  
      * This will create a {@link org.kuali.rice.kim.api.identity.type.EntityTypeData} exactly like the entityTypeData passed in.
 357  
      *
 358  
      * The EntityTypeData object passed in must be populated with an entityId and a entityTypeCode
 359  
      *
 360  
      * @param entityTypeData the EntityTypeData to create
 361  
      * @return the newly created EntityTypeData object.
 362  
      * @throws IllegalArgumentException if the entityTypeData is null
 363  
      * @throws IllegalStateException if the entityTypeData already exists in the system or the EntityTypeData object is not populated with entityId and entityTypeCode
 364  
      */
 365  
     @WebMethod(operationName="addEntityTypeDataToEntity")
 366  
     @WebResult(name = "entityTypeData")
 367  
     EntityTypeData addEntityTypeDataToEntity(@WebParam(name = "entityTypeData") EntityTypeData entityTypeData)
 368  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 369  
 
 370  
     /**
 371  
      * This will update a {@link org.kuali.rice.kim.api.identity.type.EntityTypeData} exactly like the entityTypeData passed in.
 372  
      *
 373  
      *
 374  
      * @param entityTypeData the EntityTypeData to update
 375  
      * @return the updated EntityTypeData object.
 376  
      * @throws IllegalArgumentException if the entityTypeData is null
 377  
      * @throws IllegalStateException if the entityTypeData does not exist in the system.
 378  
      */
 379  
     @WebMethod(operationName="updateEntityTypeData")
 380  
     @WebResult(name = "entityTypeData")
 381  
     EntityTypeData updateEntityTypeData(@WebParam(name = "entityTypeData") EntityTypeData entityTypeData)
 382  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 383  
 
 384  
     /**
 385  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.type.EntityTypeData} with the passed in parameters.
 386  
      *
 387  
      *
 388  
      * @param entityId the entityId of the EntityTypeData to inactivate
 389  
      * @param entityTypeCode the entityTypeCode of the EntityTypeData to inactivate
 390  
      * @return the inactivated EntityTypeData object.
 391  
      * @throws IllegalArgumentException if the entityTypeData is null
 392  
      * @throws IllegalStateException if the entityTypeData does not exist in the system.
 393  
      */
 394  
     @WebMethod(operationName="inactivateEntityTypeData")
 395  
     @WebResult(name = "entityTypeData")
 396  
     EntityTypeData inactivateEntityTypeData(@WebParam(name = "entityId") String entityId, @WebParam(name = "entityTypeCode") String entityTypeCode)
 397  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 398  
 
 399  
     /**
 400  
      * This will create a {@link org.kuali.rice.kim.api.identity.address.EntityAddress} exactly like the address passed in.
 401  
      *
 402  
      * The EntityAddress object passed in must be populated with an entityId and a entityTypeCode
 403  
      *
 404  
      * @param address the EntityAddress to create
 405  
      * @return the newly created EntityAddress object.
 406  
      * @throws IllegalArgumentException if the address is null
 407  
      * @throws IllegalStateException if the address already exists in the system or address is not populated with entityId and entityTypeCode
 408  
      */
 409  
     @WebMethod(operationName="addAddressToEntity")
 410  
     @WebResult(name = "address")
 411  
     EntityAddress addAddressToEntity(@WebParam(name = "address") EntityAddress address)
 412  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 413  
 
 414  
     /**
 415  
      * This will update a {@link org.kuali.rice.kim.api.identity.address.EntityAddress} exactly like the address passed in.
 416  
      *
 417  
      *
 418  
      * @param address the EntityAddress to update
 419  
      * @return the updated EntityAddress object.
 420  
      * @throws IllegalArgumentException if the address is null
 421  
      * @throws IllegalStateException if the address does not exist in the system.
 422  
      */
 423  
     @WebMethod(operationName="updateAddress")
 424  
     @WebResult(name = "address")
 425  
     EntityAddress updateAddress(@WebParam(name = "address")EntityAddress address)
 426  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 427  
 
 428  
     /**
 429  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.address.EntityAddress} with the id passed in.
 430  
      *
 431  
      *
 432  
      * @param id the unique id of the EntityAddress to inactivate
 433  
      * @return the updated EntityAddress object.
 434  
      * @throws IllegalArgumentException if the id is null
 435  
      * @throws IllegalStateException if the address does not exist in the system.
 436  
      */
 437  
     @WebMethod(operationName="inactivateAddress")
 438  
     @WebResult(name = "address")
 439  
     EntityAddress inactivateAddress(@WebParam(name = "id") String id)
 440  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 441  
 
 442  
     /**
 443  
      * This will create a {@link org.kuali.rice.kim.api.identity.email.EntityEmail} exactly like the email passed in.
 444  
      *
 445  
      * The EntityEmail object passed in must be populated with an entityId and a entityTypeCode
 446  
      *
 447  
      * @param email the EntityEmail to create
 448  
      * @return the newly created EntityEmail object.
 449  
      * @throws IllegalArgumentException if the email is null
 450  
      * @throws IllegalStateException if the email already exists in the system or email is not populated with entityId and entityTypeCode
 451  
      */
 452  
     @WebMethod(operationName="addEmailToEntity")
 453  
     @WebResult(name = "email")
 454  
     EntityEmail addEmailToEntity(@WebParam(name = "email") EntityEmail email)
 455  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 456  
 
 457  
     /**
 458  
      * This will update a {@link org.kuali.rice.kim.api.identity.email.EntityEmail} exactly like the email passed in.
 459  
      *
 460  
      *
 461  
      * @param email the EntityEmail to update
 462  
      * @return the updated EntityEmail object.
 463  
      * @throws IllegalArgumentException if the email is null
 464  
      * @throws IllegalStateException if the email does not exist in the system.
 465  
      */
 466  
     @WebMethod(operationName="updateEmail")
 467  
     @WebResult(name = "email")
 468  
     EntityEmail updateEmail(@WebParam(name = "email") EntityEmail email)
 469  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 470  
 
 471  
     /**
 472  
      * This will inactivate the {@link org.kuali.rice.kim.api.identity.email.EntityEmail} with the passed in id.
 473  
      *
 474  
      *
 475  
      * @param id the unique id of the EntityEmail to inactivate
 476  
      * @return the inactivated EntityEmail object.
 477  
      * @throws IllegalArgumentException if the id is null
 478  
      * @throws IllegalStateException if the email does not exist in the system.
 479  
      */
 480  
     @WebMethod(operationName="inactivateEmail")
 481  
     @WebResult(name = "email")
 482  
     EntityEmail inactivateEmail(@WebParam(name = "id") String id)
 483  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 484  
 
 485  
     /**
 486  
      * This will create a {@link org.kuali.rice.kim.api.identity.phone.EntityPhone} exactly like the phone passed in.
 487  
      *
 488  
      * The EntityPhone object passed in must be populated with an entityId and a entityTypeCode
 489  
      *
 490  
      * @param phone the EntityPhone to create
 491  
      * @return the newly created EntityPhone object.
 492  
      * @throws IllegalArgumentException if the phone is null
 493  
      * @throws IllegalStateException if the phone already exists in the system or phone is not populated with entityId and entityTypeCode
 494  
      */
 495  
     @WebMethod(operationName="addPhoneToEntity")
 496  
     @WebResult(name = "phone")
 497  
     EntityPhone addPhoneToEntity(@WebParam(name = "phone") EntityPhone phone)
 498  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 499  
 
 500  
     /**
 501  
      * This will update a {@link org.kuali.rice.kim.api.identity.phone.EntityPhone} exactly like the phone passed in.
 502  
      *
 503  
      *
 504  
      * @param phone the EntityPhone to update
 505  
      * @return the updated EntityPhone object.
 506  
      * @throws IllegalArgumentException if the phone is null
 507  
      * @throws IllegalStateException if the phone does not exist in the system.
 508  
      */
 509  
     @WebMethod(operationName="updatePhone")
 510  
     @WebResult(name = "phone")
 511  
     EntityPhone updatePhone(@WebParam(name = "phone") EntityPhone phone)
 512  
             throws RiceIllegalArgumentException, RiceIllegalStateException;
 513  
 
 514  
     /**
 515  
      * This will inactivate the {@link org.kuali.rice.kim.api.identity.phone.EntityPhone} with the passed in id.
 516  
      *
 517  
      *
 518  
      * @param id the unique id of the EntityPhone to inactivate
 519  
      * @return the inactivated EntityPhone object.
 520  
      * @throws IllegalArgumentException if the id is null
 521  
      * @throws IllegalStateException if the phone does not exist in the system.
 522  
      */
 523  
     @WebMethod(operationName="inactivatePhone")
 524  
     @WebResult(name = "phone")
 525  
     EntityPhone inactivatePhone(@WebParam(name = "id") String id)
 526  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 527  
 
 528  
 
 529  
     /**
 530  
      * This will create a {@link org.kuali.rice.kim.api.identity.external.EntityExternalIdentifier} exactly like the externalId passed in.
 531  
      *
 532  
      * The EntityExternalIdentifier object passed in must be populated with an entityId and a externalIdentifierTypeCode
 533  
      *
 534  
      * @param externalId the EntityExternalIdentifier to create
 535  
      * @return the newly created EntityExternalIdentifier object.
 536  
      * @throws IllegalArgumentException if the externalId is null
 537  
      * @throws IllegalStateException if the externalId already exists in the system or externalId is not populated with entityId and externalIdentifierTypeCode
 538  
      */
 539  
     @WebMethod(operationName="addExternalIdentifierToEntity")
 540  
     @WebResult(name = "externalId")
 541  
     EntityExternalIdentifier addExternalIdentifierToEntity(@WebParam(name = "externalId") EntityExternalIdentifier externalId)
 542  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 543  
 
 544  
     /**
 545  
      * This will update a {@link org.kuali.rice.kim.api.identity.external.EntityExternalIdentifier} exactly like the externalId passed in.
 546  
      *
 547  
      *
 548  
      * @param externalId the EntityExternalIdentifier to update
 549  
      * @return the updated EntityExternalIdentifier object.
 550  
      * @throws IllegalArgumentException if the externalId is null
 551  
      * @throws IllegalStateException if the externalId does not exist in the system.
 552  
      */
 553  
     @WebMethod(operationName="updateExternalIdentifier")
 554  
     @WebResult(name = "externalId")
 555  
     EntityExternalIdentifier updateExternalIdentifier(@WebParam(name = "externalId") EntityExternalIdentifier externalId)
 556  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 557  
 
 558  
     /**
 559  
      * This will create a {@link org.kuali.rice.kim.api.identity.affiliation.EntityAffiliation} exactly like the affiliation passed in.
 560  
      *
 561  
      * The EntityAffiliation object passed in must be populated with an entityId and a affiliationType
 562  
      *
 563  
      * @param affiliation the EntityAffiliation to create
 564  
      * @return the newly created EntityAffiliation object.
 565  
      * @throws IllegalArgumentException if the affiliation is null
 566  
      * @throws IllegalStateException if the affiliation already exists in the system or affiliation is not populated with entityId and affiliationType
 567  
      */
 568  
     @WebMethod(operationName="addAffiliationToEntity")
 569  
     @WebResult(name = "affiliation")
 570  
     EntityAffiliation addAffiliationToEntity(@WebParam(name = "affiliation") EntityAffiliation affiliation)
 571  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 572  
 
 573  
     /**
 574  
      * This will update a {@link org.kuali.rice.kim.api.identity.affiliation.EntityAffiliation} exactly like the affiliation passed in.
 575  
      *
 576  
      *
 577  
      * @param affiliation the EntityAffiliation to update
 578  
      * @return the updated EntityAffiliation object.
 579  
      * @throws IllegalArgumentException if the affiliation is null
 580  
      * @throws IllegalStateException if the affiliation does not exist in the system.
 581  
      */
 582  
     @WebMethod(operationName="updateAffiliation")
 583  
     @WebResult(name = "affiliation")
 584  
     EntityAffiliation updateAffiliation(@WebParam(name = "affiliation") EntityAffiliation affiliation)
 585  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 586  
 
 587  
     /**
 588  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.affiliation.EntityAffiliation} with the id passed in.
 589  
      *
 590  
      *
 591  
      * @param id the unique id of the  EntityAffiliation to inactivate
 592  
      * @return the updated EntityAffiliation object.
 593  
      * @throws IllegalArgumentException if the affiliation is null
 594  
      * @throws IllegalStateException if the affiliation does not exist in the system.
 595  
      */
 596  
     @WebMethod(operationName="inactivateAffiliation")
 597  
     @WebResult(name = "affiliation")
 598  
     EntityAffiliation inactivateAffiliation(@WebParam(name = "id") String id)
 599  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 600  
 
 601  
     /**
 602  
      * Gets a map {@link org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName} for a list of principalIds.
 603  
      *
 604  
      * <p>The resulting Map contains the principalId as the key and the EntityNamePrincipalName as the value.
 605  
          * When fetching names by principal id, the resulting EntityNamePrincipalName contains the identity's default name
 606  
          * as well as the principalName.
 607  
      * </p>
 608  
      *
 609  
      * @param principalIds list of  unique principalIds to retrieve the names by. Cannot be null.
 610  
      * @return a map of {@link org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName}
 611  
      * @throws IllegalArgumentException if the list of principalIds is null
 612  
      */
 613  
     @WebMethod(operationName = "getDefaultNamesForPrincipalIds")
 614  
     @WebResult(name = "entityNamePrincipalNames")
 615  
         @XmlJavaTypeAdapter(value = StringToKimEntityNamePrincipalInfoMapAdapter.class) 
 616  
     Map<String, EntityNamePrincipalName> getDefaultNamesForPrincipalIds(@WebParam(name="principalIds") List<String> principalIds);
 617  
     
 618  
 
 619  
     /**
 620  
      * Gets a map {@link org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName} for a list of entityIds.
 621  
      *
 622  
      * <p>The resulting Map contains the entityId as the key and the EntityNamePrincipalName as the value.
 623  
          * When fetching names by principal id, the resulting EntityNamePrincipalName contains the identity's default name
 624  
          * as well as the principalName.
 625  
      * </p>
 626  
      *
 627  
      * @param principalIds list of  unique principalIds to retrieve the names by. Cannot be null.
 628  
      * @return a map of {@link org.kuali.rice.kim.api.identity.principal.EntityNamePrincipalName}
 629  
      * @throws IllegalArgumentException if the list of principalIds is null
 630  
      */
 631  
     @WebMethod(operationName = "getDefaultNamesForEntityIds")
 632  
     @WebResult(name = "entityNamePrincipalNames")
 633  
         @XmlJavaTypeAdapter(value = StringToKimEntityNameInfoMapAdapter.class) 
 634  
     Map<String, EntityNamePrincipalName> getDefaultNamesForEntityIds(@WebParam(name="entityIds") List<String> entityIds);
 635  
 
 636  
     /**
 637  
      * This will create a {@link org.kuali.rice.kim.api.identity.name.EntityName} exactly like the name passed in.
 638  
      *
 639  
      * The EntityName object passed in must be populated with an entityId and a nameType
 640  
      *
 641  
      * @param name the EntityName to create
 642  
      * @return the newly created EntityName object.
 643  
      * @throws IllegalArgumentException if the name is null
 644  
      * @throws IllegalStateException if the name already exists in the system or name is not populated with entityId and nameType
 645  
      */
 646  
     @WebMethod(operationName="addNameToEntity")
 647  
     @WebResult(name = "name")
 648  
     EntityName addNameToEntity(@WebParam(name = "name") EntityName name)
 649  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 650  
 
 651  
     /**
 652  
      * This will update a {@link org.kuali.rice.kim.api.identity.name.EntityName} exactly like the name passed in.
 653  
      *
 654  
      *
 655  
      * @param name the EntityName to update
 656  
      * @return the updated EntityName object.
 657  
      * @throws IllegalArgumentException if the name is null
 658  
      * @throws IllegalStateException if the name does not exist in the system.
 659  
      */
 660  
     @WebMethod(operationName="updateName")
 661  
     @WebResult(name = "name")
 662  
     EntityName updateName(@WebParam(name = "name") EntityName name)
 663  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 664  
 
 665  
     /**
 666  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.name.EntityName} with the passed in id.
 667  
      *
 668  
      *
 669  
      * @param id the unique id of the EntityName to inactivate
 670  
      * @return the inactivated EntityName object.
 671  
      * @throws IllegalArgumentException if the id is null
 672  
      * @throws IllegalStateException if the name with the id does not exist in the system.
 673  
      */
 674  
     @WebMethod(operationName="inactivateName")
 675  
     @WebResult(name = "name")
 676  
     EntityName inactivateName(@WebParam(name = "id") String id)
 677  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 678  
 
 679  
     /**
 680  
      * This will create a {@link org.kuali.rice.kim.api.identity.employment.EntityEmployment} exactly like the employment passed in.
 681  
      *
 682  
      * The EntityEmployment object passed in must be populated with an entityId and a employmentType
 683  
      *
 684  
      * @param employment the EntityEmployment to create
 685  
      * @return the newly created EntityName object.
 686  
      * @throws IllegalArgumentException if the employment is null
 687  
      * @throws IllegalStateException if the employment already exists in the system or employment is not populated with entityId and employmentType
 688  
      */
 689  
     @WebMethod(operationName="addEmploymentToEntity")
 690  
     @WebResult(name = "employment")
 691  
     EntityEmployment addEmploymentToEntity(@WebParam(name = "employment") EntityEmployment employment)
 692  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 693  
 
 694  
     /**
 695  
      * This will update a {@link org.kuali.rice.kim.api.identity.employment.EntityEmployment} exactly like the employment passed in.
 696  
      *
 697  
      *
 698  
      * @param employment the EntityEmployment to update
 699  
      * @return the updated EntityEmployment object.
 700  
      * @throws IllegalArgumentException if the employment is null
 701  
      * @throws IllegalStateException if the employment does not exist in the system.
 702  
      */
 703  
     @WebMethod(operationName="updateEmployment")
 704  
     @WebResult(name = "employment")
 705  
     EntityEmployment updateEmployment(@WebParam(name = "employment") EntityEmployment employment)
 706  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 707  
 
 708  
     /**
 709  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.employment.EntityEmployment} with the passed in id.
 710  
      *
 711  
      *
 712  
      * @param id the unique id of the EntityEmployment to inactivate
 713  
      * @return the inactivated EntityEmployment object.
 714  
      * @throws IllegalArgumentException if the id is null
 715  
      * @throws IllegalStateException if the employment with the id does not exist in the system.
 716  
      */
 717  
     @WebMethod(operationName="inactivateEmployment")
 718  
     @WebResult(name = "employment")
 719  
     EntityEmployment inactivateEmployment(@WebParam(name = "id") String id)
 720  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 721  
 
 722  
     /**
 723  
      * This will create a {@link org.kuali.rice.kim.api.identity.personal.EntityBioDemographics} exactly like the bioDemographics passed in.
 724  
      *
 725  
      * The EntityBioDemographics object passed in must be populated with an entityId
 726  
      *
 727  
      * @param bioDemographics the EntityBioDemographics to create
 728  
      * @return the newly created EntityBioDemographics object.
 729  
      * @throws IllegalArgumentException if the bioDemographics is null
 730  
      * @throws IllegalStateException if the bioDemographics already exists in the system or bioDemographics is not populated with entityId
 731  
      */
 732  
     @WebMethod(operationName="addBioDemographicsToEntity")
 733  
     @WebResult(name = "bioDemographics")
 734  
     EntityBioDemographics addBioDemographicsToEntity(@WebParam(name = "bioDemographics") EntityBioDemographics bioDemographics)
 735  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 736  
 
 737  
     /**
 738  
      * This will update a {@link org.kuali.rice.kim.api.identity.personal.EntityBioDemographics} exactly like the bioDemographics passed in.
 739  
      *
 740  
      *
 741  
      * @param bioDemographics the EntityBioDemographics to update
 742  
      * @return the updated EntityBioDemographics object.
 743  
      * @throws IllegalArgumentException if the bioDemographics is null
 744  
      * @throws IllegalStateException if the bioDemographics does not exist in the system.
 745  
      */
 746  
     @WebMethod(operationName="updateBioDemographics")
 747  
     @WebResult(name = "bioDemographics")
 748  
     EntityBioDemographics updateBioDemographics(@WebParam(name = "bioDemographics") EntityBioDemographics bioDemographics)
 749  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 750  
     
 751  
     /**
 752  
      * Gets a {@link org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences} for a given entityId.
 753  
      *
 754  
      * <p>
 755  
      *   This method will return null if the EntityPrivacyPreferences does not exist.
 756  
      * </p>
 757  
      *
 758  
      * @param entityId the unique id to retrieve the EntityPrivacyPreferences by. Cannot be null.
 759  
      * @return a {@link org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences} or null
 760  
      * @throws IllegalArgumentException if the entityId is blank
 761  
      */
 762  
     @WebMethod(operationName = "getEntityPrivacyPreferences")
 763  
     @WebResult(name = "privacyPreferences")
 764  
         EntityPrivacyPreferences getEntityPrivacyPreferences( @WebParam(name="entityId") String entityId );
 765  
 
 766  
     /**
 767  
      * This will create a {@link org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences} exactly like the privacyPreferences passed in.
 768  
      *
 769  
      * The EntityPrivacyPreferences object passed in must be populated with an entityId
 770  
      *
 771  
      * @param privacyPreferences the EntityPrivacyPreferences to create
 772  
      * @return the newly created EntityPrivacyPreferences object.
 773  
      * @throws IllegalArgumentException if the privacyPreferences is null
 774  
      * @throws IllegalStateException if the privacyPreferences already exists in the system or privacyPreferences is not populated with entityId
 775  
      */
 776  
     @WebMethod(operationName="addPrivacyPreferencesToEntity")
 777  
     @WebResult(name = "privacyPreferences")
 778  
     EntityPrivacyPreferences addPrivacyPreferencesToEntity(@WebParam(name = "privacyPreferences") EntityPrivacyPreferences privacyPreferences)
 779  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 780  
 
 781  
     /**
 782  
      * This will update a {@link org.kuali.rice.kim.api.identity.privacy.EntityPrivacyPreferences} exactly like the privacyPreferences passed in.
 783  
      *
 784  
      *
 785  
      * @param privacyPreferences the EntityPrivacyPreferences to update
 786  
      * @return the updated EntityPrivacyPreferences object.
 787  
      * @throws IllegalArgumentException if the privacyPreferences is null
 788  
      * @throws IllegalStateException if the privacyPreferences does not exist in the system.
 789  
      */
 790  
     @WebMethod(operationName="updatePrivacyPreferences")
 791  
     @WebResult(name = "privacyPreferences")
 792  
     EntityPrivacyPreferences updatePrivacyPreferences(@WebParam(name = "privacyPreferences") EntityPrivacyPreferences privacyPreferences)
 793  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 794  
 
 795  
 
 796  
     /**
 797  
      * This will create a {@link org.kuali.rice.kim.api.identity.citizenship.EntityCitizenship} exactly like the citizenship passed in.
 798  
      *
 799  
      * The EntityCitizenship object passed in must be populated with an entityId and a status
 800  
      *
 801  
      * @param citizenship the EntityCitizenship to create
 802  
      * @return the newly created EntityCitizenship object.
 803  
      * @throws IllegalArgumentException if the citizenship is null
 804  
      * @throws IllegalStateException if the citizenship already exists in the system or citizenship is not populated with entityId and status
 805  
      */
 806  
     @WebMethod(operationName="addCitizenshipToEntity")
 807  
     @WebResult(name = "citizenship")
 808  
     EntityCitizenship addCitizenshipToEntity(@WebParam(name = "citizenship") EntityCitizenship citizenship)
 809  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 810  
 
 811  
     /**
 812  
      * This will update a {@link org.kuali.rice.kim.api.identity.citizenship.EntityCitizenship} exactly like the citizenship passed in.
 813  
      *
 814  
      *
 815  
      * @param citizenship the EntityCitizenship to update
 816  
      * @return the updated EntityCitizenship object.
 817  
      * @throws IllegalArgumentException if the citizenship is null
 818  
      * @throws IllegalStateException if the citizenship does not exist in the system.
 819  
      */
 820  
     @WebMethod(operationName="updateCitizenship")
 821  
     @WebResult(name = "citizenship")
 822  
     EntityCitizenship updateCitizenship(@WebParam(name = "citizenship") EntityCitizenship citizenship)
 823  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 824  
 
 825  
     /**
 826  
      * This will inactivate a {@link org.kuali.rice.kim.api.identity.citizenship.EntityCitizenship} with the unique id passed in.
 827  
      *
 828  
      *
 829  
      * @param citizenship the EntityCitizenship to inactivate
 830  
      * @return the inactivated EntityCitizenship object.
 831  
      * @throws IllegalArgumentException if the citizenship is null
 832  
      * @throws IllegalStateException if the citizenship does not exist in the system.
 833  
      */
 834  
     @WebMethod(operationName="inactivateCitizenship")
 835  
     @WebResult(name = "citizenship")
 836  
     EntityCitizenship inactivateCitizenship(@WebParam(name = "id") String id)
 837  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 838  
 
 839  
     /**
 840  
      * This will create a {@link org.kuali.rice.kim.api.identity.ethnicity.EntityEthnicity} exactly like the ethnicity passed in.
 841  
      *
 842  
      * The EntityEthnicity object passed in must be populated with an entityId and a ethnicity code
 843  
      *
 844  
      * @param ethnicity the EntityEthnicity to create
 845  
      * @return the newly created EntityEthnicity object.
 846  
      * @throws IllegalArgumentException if the ethnicity is null
 847  
      * @throws IllegalStateException if the ethnicity already exists in the system or ethnicity is not populated with entityId and ethnicity code
 848  
      */
 849  
     @WebMethod(operationName="addEthnicityToEntity")
 850  
     @WebResult(name = "ethnicity")
 851  
     EntityEthnicity addEthnicityToEntity(@WebParam(name = "ethnicity") EntityEthnicity ethnicity)
 852  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 853  
 
 854  
     /**
 855  
      * This will update a {@link org.kuali.rice.kim.api.identity.ethnicity.EntityEthnicity} exactly like the ethnicity passed in.
 856  
      *
 857  
      *
 858  
      * @param ethnicity the EntityEthnicity to update
 859  
      * @return the updated EntityEthnicity object.
 860  
      * @throws IllegalArgumentException if the ethnicity is null
 861  
      * @throws IllegalStateException if the ethnicity does not exist in the system.
 862  
      */
 863  
     @WebMethod(operationName="updateEthnicity")
 864  
     @WebResult(name = "ethnicity")
 865  
     EntityEthnicity updateEthnicity(@WebParam(name = "ethnicity") EntityEthnicity ethnicity)
 866  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 867  
 
 868  
     /**
 869  
      * This will create a {@link org.kuali.rice.kim.api.identity.residency.EntityResidency} exactly like the residency passed in.
 870  
      *
 871  
      * The EntityResidency object passed in must be populated with an entityId
 872  
      *
 873  
      * @param residency the EntityResidency to create
 874  
      * @return the newly created EntityResidency object.
 875  
      * @throws IllegalArgumentException if the residency is null
 876  
      * @throws IllegalStateException if the residency already exists in the system or residency is not populated with entityId
 877  
      */
 878  
     @WebMethod(operationName="addResidencyToEntity")
 879  
     @WebResult(name = "residency")
 880  
     EntityResidency addResidencyToEntity(@WebParam(name = "residency") EntityResidency residency)
 881  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 882  
 
 883  
     /**
 884  
      * This will update a {@link org.kuali.rice.kim.api.identity.residency.EntityResidency} exactly like the residency passed in.
 885  
      *
 886  
      *
 887  
      * @param residency the EntityResidency to update
 888  
      * @return the updated EntityResidency object.
 889  
      * @throws IllegalArgumentException if the residency is null
 890  
      * @throws IllegalStateException if the residency does not exist in the system.
 891  
      */
 892  
     @WebMethod(operationName="updateResidency")
 893  
     @WebResult(name = "residency")
 894  
     EntityResidency updateResidency(@WebParam(name = "residency") EntityResidency residency)
 895  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 896  
 
 897  
 
 898  
     /**
 899  
      * This will create a {@link org.kuali.rice.kim.api.identity.visa.EntityVisa} exactly like the visa passed in.
 900  
      *
 901  
      * The EntityVisa object passed in must be populated with an entityId and a visaTypeKey
 902  
      *
 903  
      * @param visa the EntityVisa to create
 904  
      * @return the newly created EntityVisa object.
 905  
      * @throws IllegalArgumentException if the visa is null
 906  
      * @throws IllegalStateException if the visa already exists in the system or visa is not populated with entityId and a visaTypeKey
 907  
      */
 908  
     @WebMethod(operationName="addVisaToEntity")
 909  
     @WebResult(name = "visa")
 910  
     EntityVisa addVisaToEntity(@WebParam(name = "visa") EntityVisa visa)
 911  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 912  
 
 913  
     /**
 914  
      * This will update a {@link org.kuali.rice.kim.api.identity.visa.EntityVisa} exactly like the visa passed in.
 915  
      *
 916  
      *
 917  
      * @param visa the EntityVisa to update
 918  
      * @return the updated EntityVisa object.
 919  
      * @throws IllegalArgumentException if the visa is null
 920  
      * @throws IllegalStateException if the visa does not exist in the system.
 921  
      */
 922  
     @WebMethod(operationName="updateVisa")
 923  
     @WebResult(name = "visa")
 924  
     EntityVisa updateVisa(@WebParam(name = "visa") EntityVisa visa)
 925  
         throws RiceIllegalArgumentException, RiceIllegalStateException;
 926  
 
 927  
     /**
 928  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityType code.
 929  
      *
 930  
      * <p>
 931  
      *   This method will return null if the code does not exist.
 932  
      * </p>
 933  
      *
 934  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 935  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 936  
      * @throws IllegalArgumentException if the code is blank
 937  
      */
 938  
     @WebMethod(operationName = "getEntityType")
 939  
     @WebResult(name = "type")
 940  
         Type getEntityType( @WebParam(name="code") String code );
 941  
 
 942  
 
 943  
     /**
 944  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityAddressType code.
 945  
      *
 946  
      * <p>
 947  
      *   This method will return null if the code does not exist.
 948  
      * </p>
 949  
      *
 950  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 951  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 952  
      * @throws IllegalArgumentException if the code is blank
 953  
      */
 954  
     @WebMethod(operationName = "getAddressType")
 955  
     @WebResult(name = "type")
 956  
         Type getAddressType( @WebParam(name="code") String code );
 957  
 
 958  
     /**
 959  
      * Gets the {@link org.kuali.rice.kim.api.identity.affiliation.EntityAffiliationType} for a given EntityAffiliationType code.
 960  
      *
 961  
      * <p>
 962  
      *   This method will return null if the code does not exist.
 963  
      * </p>
 964  
      *
 965  
      * @param code the unique id to retrieve the EntityAffiliationType by. Cannot be null.
 966  
      * @return a {@link org.kuali.rice.kim.api.identity.affiliation.EntityAffiliationType} or null
 967  
      * @throws IllegalArgumentException if the code is blank
 968  
      */
 969  
     @WebMethod(operationName = "getAffiliationType")
 970  
     @WebResult(name = "affiliationType")
 971  
         EntityAffiliationType getAffiliationType( @WebParam(name="code") String code );
 972  
 
 973  
     /**
 974  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityCitizenship status code.
 975  
      *
 976  
      * <p>
 977  
      *   This method will return null if the code does not exist.
 978  
      * </p>
 979  
      *
 980  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 981  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 982  
      * @throws IllegalArgumentException if the code is blank
 983  
      */
 984  
     @WebMethod(operationName = "getCitizenshipStatus")
 985  
     @WebResult(name = "type")
 986  
         Type getCitizenshipStatus( @WebParam(name="code") String code );
 987  
 
 988  
     /**
 989  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityEmployment type code.
 990  
      *
 991  
      * <p>
 992  
      *   This method will return null if the code does not exist.
 993  
      * </p>
 994  
      *
 995  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 996  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 997  
      * @throws IllegalArgumentException if the code is blank
 998  
      */
 999  
     @WebMethod(operationName = "getEmploymentType")
 1000  
     @WebResult(name = "type")
 1001  
         Type getEmploymentType( @WebParam(name="code") String code );
 1002  
     
 1003  
     /**
 1004  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityEmployment status code.
 1005  
      *
 1006  
      * <p>
 1007  
      *   This method will return null if the code does not exist.
 1008  
      * </p>
 1009  
      *
 1010  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 1011  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 1012  
      * @throws IllegalArgumentException if the code is blank
 1013  
      */
 1014  
     @WebMethod(operationName = "getEmploymentStatus")
 1015  
     @WebResult(name = "type")
 1016  
         Type getEmploymentStatus( @WebParam(name="code") String code );
 1017  
     
 1018  
     /**
 1019  
      * Gets the {@link org.kuali.rice.kim.api.identity.external.EntityExternalIdentifierType} for a given type code.
 1020  
      *
 1021  
      * <p>
 1022  
      *   This method will return null if the code does not exist.
 1023  
      * </p>
 1024  
      *
 1025  
      * @param code the unique id to retrieve the EntityExternalIdentifierType by. Cannot be null.
 1026  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 1027  
      * @throws IllegalArgumentException if the code is blank
 1028  
      */
 1029  
     @WebMethod(operationName = "getExternalIdentifierType")
 1030  
     @WebResult(name = "type")
 1031  
         EntityExternalIdentifierType getExternalIdentifierType( @WebParam(name="code") String code );
 1032  
     
 1033  
     /**
 1034  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityName type code.
 1035  
      *
 1036  
      * <p>
 1037  
      *   This method will return null if the code does not exist.
 1038  
      * </p>
 1039  
      *
 1040  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 1041  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 1042  
      * @throws IllegalArgumentException if the code is blank
 1043  
      */
 1044  
     @WebMethod(operationName = "getNameType")
 1045  
     @WebResult(name = "type")
 1046  
         Type getNameType(@WebParam(name = "code") String code);
 1047  
     
 1048  
     /**
 1049  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityPhone type code.
 1050  
      *
 1051  
      * <p>
 1052  
      *   This method will return null if the code does not exist.
 1053  
      * </p>
 1054  
      *
 1055  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 1056  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 1057  
      * @throws IllegalArgumentException if the code is blank
 1058  
      */
 1059  
     @WebMethod(operationName = "getPhoneType")
 1060  
     @WebResult(name = "type")
 1061  
         Type getPhoneType( @WebParam(name="code") String code );
 1062  
     
 1063  
     /**
 1064  
      * Gets the {@link org.kuali.rice.kim.api.identity.Type} for a given EntityEmail type code.
 1065  
      *
 1066  
      * <p>
 1067  
      *   This method will return null if the code does not exist.
 1068  
      * </p>
 1069  
      *
 1070  
      * @param code the unique id to retrieve the Type by. Cannot be null.
 1071  
      * @return a {@link org.kuali.rice.kim.api.identity.Type} or null
 1072  
      * @throws IllegalArgumentException if the code is blank
 1073  
      */
 1074  
     @WebMethod(operationName = "getEmailType")
 1075  
     @WebResult(name = "type")
 1076  
         Type getEmailType( @WebParam(name="code") String code );
 1077  
 
 1078  
 }