View Javadoc

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