Coverage Report - org.kuali.student.enrollment.classI.hold.service.HoldService
 
Classes in this File Line Coverage Branch Coverage Complexity
HoldService
N/A
N/A
1
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 
 16  
 package org.kuali.student.enrollment.classI.hold.service;
 17  
 
 18  
 import java.util.List;
 19  
 
 20  
 import javax.jws.WebParam;
 21  
 import javax.jws.WebService;
 22  
 import javax.jws.soap.SOAPBinding;
 23  
 
 24  
 import org.kuali.student.enrollment.classI.hold.dto.HoldInfo;
 25  
 import org.kuali.student.enrollment.classI.hold.dto.IssueInfo;
 26  
 import org.kuali.student.enrollment.classI.hold.dto.RestrictionInfo;
 27  
 
 28  
 import org.kuali.student.r2.common.service.StateService;
 29  
 import org.kuali.student.r2.common.service.TypeService;
 30  
 import org.kuali.student.r2.common.datadictionary.service.DataDictionaryService;
 31  
 
 32  
 import org.kuali.student.r2.common.dto.ContextInfo;
 33  
 import org.kuali.student.r2.common.dto.StatusInfo;
 34  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 35  
 
 36  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 37  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 38  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 39  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 40  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 41  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 42  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 43  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 44  
 import org.kuali.student.r2.common.util.constants.HoldServiceConstants;
 45  
 
 46  
 /**
 47  
  * Version: DRAFT - NOT READY FOR RELEASE.
 48  
  *
 49  
  * The Hold Service defines a service to manage Restrictions on a
 50  
  * Person by Person basis. Restrictions are a way to put a "stop" on
 51  
  * an action implemented by another service, such as registration for
 52  
  * a course.
 53  
  *
 54  
  * A Restriction is made up of Issues. A Restriction for course
 55  
  * registration may be based on payment of tuition and current
 56  
  * immunization. An Issue can be defined by the Bursar for non-payment
 57  
  * of tuition and by Medical for lack of immunization. Both these
 58  
  * Issues can be mapped to a Restriction.
 59  
  *
 60  
  * The Hold is a relation between a Person and an Issue. A person is
 61  
  * "restricted" if any active Hold exists for any Issue related to a
 62  
  * Restriction. An inactive Hold is one that has been released or
 63  
  * cancelled. The state of the Hold needs to be checked to determine
 64  
  * if a restriction exists. 
 65  
  *
 66  
  * Holds can be designated as a warning Hold. A warning Hold is a
 67  
  * non-blocking Hold where a warning message should be displayed to a
 68  
  * Person instead of blocking the action. A Person may not be
 69  
  * restricted but have active warning Holds.
 70  
  *
 71  
  * @Author tom
 72  
  * @Since Sun May 1 14:22:34 EDT 2011
 73  
  */
 74  
 
 75  
 @WebService(name = "HoldService", targetNamespace = HoldServiceConstants.NAMESPACE)
 76  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 77  
 public interface HoldService extends DataDictionaryService, StateService, TypeService {
 78  
 
 79  
     /** 
 80  
      * Tests if the given person has a Restriction. A person is
 81  
      * restricted if any active non-warning blocking hold exists for
 82  
      * the Person on any Issue related to the given Restriction. 
 83  
      *
 84  
      * @param restrictionKey a unique key of the Restriction
 85  
      * @param personId a unique Id of the Person
 86  
      * @param context Context information containing the principalId
 87  
      *                and locale information about the caller of service
 88  
      *                operation
 89  
      * @return true if a restriction exists, false otherwise
 90  
      * @throws DoesNotExistException holdId not found
 91  
      * @throws InvalidParameterException invalid parameter
 92  
      * @throws MissingParameterException missing parameter
 93  
      * @throws OperationFailedException unable to complete request
 94  
      * @throws PermissionDeniedException authorization failure
 95  
      */
 96  
     public Boolean isPersonRestricted(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 97  
 
 98  
     /** 
 99  
      * Gets a list of Person Ids that are restricted. A list of people
 100  
      * with any active non-warning blocking hold exists on any Issue
 101  
      * related to the given Restriction.
 102  
      *
 103  
      * @param restrictionKey a unique key of the Restriction
 104  
      * @param context Context information containing the principalId
 105  
      *                and locale information about the caller of service
 106  
      *                operation
 107  
      * @return a list of Holds
 108  
      * @throws DoesNotExistException holdId not found
 109  
      * @throws InvalidParameterException invalid holdId
 110  
      * @throws MissingParameterException missing holdId
 111  
      * @throws OperationFailedException unable to complete request
 112  
      * @throws PermissionDeniedException authorization failure
 113  
      */
 114  
     public List<String> getRestrictedPersons(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 115  
 
 116  
     /** 
 117  
      * Gets a list of holds for a Person and Restriction. The returned
 118  
      * list includes all Holds for the Person for any Issue related to
 119  
      * the given Restriction.
 120  
      *
 121  
      * @param restrictionKey a unique key of the Restriction
 122  
      * @param personId a unique Id of the Person
 123  
      * @param context Context information containing the principalId
 124  
      *                and locale information about the caller of service
 125  
      *                operation
 126  
      * @return a list of Holds
 127  
      * @throws DoesNotExistException holdId not found
 128  
      * @throws InvalidParameterException invalid holdId
 129  
      * @throws MissingParameterException missing holdId
 130  
      * @throws OperationFailedException unable to complete request
 131  
      * @throws PermissionDeniedException authorization failure
 132  
      */
 133  
     public List<HoldInfo> getHoldsByRestrictionForPerson(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 134  
 
 135  
     /** 
 136  
      * Gets a list of holds for a Person and Restriction. The returned
 137  
      * list includes only active Holds, both warning and blocking, for
 138  
      * the Person for any Issue related to the given Restriction. An
 139  
      * active Hold is any open Hold that has had not been released or
 140  
      * cancelled.
 141  
      *
 142  
      * @param restrictionKey a unique key of the Restriction
 143  
      * @param personId a unique Id of the Person
 144  
      * @param context Context information containing the principalId
 145  
      *                and locale information about the caller of service
 146  
      *                operation
 147  
      * @return a list of Holds
 148  
      * @throws DoesNotExistException holdId not found
 149  
      * @throws InvalidParameterException invalid holdId
 150  
      * @throws MissingParameterException missing holdId
 151  
      * @throws OperationFailedException unable to complete request
 152  
      * @throws PermissionDeniedException authorization failure
 153  
      */
 154  
     public List<HoldInfo> getActiveHoldsByRestrictionForPerson(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 155  
 
 156  
     /** 
 157  
      * Retrieves the details of a single Hold by a hold Id.
 158  
      *
 159  
      * @param holdId Unique Id of the Hold to be retrieved
 160  
      * @param context Context information containing the principalId
 161  
      *                and locale information about the caller of service
 162  
      *                operation
 163  
      * @return the details of the Hold requested
 164  
      * @throws DoesNotExistException holdId not found
 165  
      * @throws InvalidParameterException invalid holdId
 166  
      * @throws MissingParameterException missing holdId
 167  
      * @throws OperationFailedException unable to complete request
 168  
      * @throws PermissionDeniedException authorization failure
 169  
      */
 170  
     public HoldInfo getHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 171  
 
 172  
     /** 
 173  
      * Retrieves a list Holds corresponding to a list of
 174  
      * hold Ids.
 175  
      *
 176  
      * @param holdIdList list of unique Ids of the
 177  
      *        Hold to be retrieved
 178  
      * @param context Context information containing the principalId
 179  
      *                and locale information about the caller of service
 180  
      *                operation
 181  
      * @return a list of Holds
 182  
      * @throws DoesNotExistException an  holdId in list not found
 183  
      * @throws InvalidParameterException invalid holdId in list
 184  
      * @throws MissingParameterException missing holdIdList
 185  
      * @throws OperationFailedException unable to complete request
 186  
      * @throws PermissionDeniedException authorization failure
 187  
      */
 188  
     public List<HoldInfo> getHoldsByIdList(@WebParam(name = "holdIdList") List<String> holdIdList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 189  
 
 190  
     /** 
 191  
      * Retrieves a list of Holds by Issue.
 192  
      *
 193  
      * @param issueId an Id of an Issue 
 194  
      * @param context Context information containing the principalId
 195  
      *                and locale information about the caller of service
 196  
      *                operation
 197  
      * @return a list of Holds 
 198  
      * @throws InvalidParameterException invalid parameter
 199  
      * @throws MissingParameterException missing parameter
 200  
      * @throws OperationFailedException unable to complete request
 201  
      * @throws PermissionDeniedException authorization failure
 202  
      */
 203  
     public List<HoldInfo> getHoldsByIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 204  
 
 205  
     /** 
 206  
      * Retrieves a list of all Holds that pertain to the given Person.
 207  
      *
 208  
      * @param personId an Id of a Person 
 209  
      * @param context Context information containing the principalId
 210  
      *                and locale information about the caller of service
 211  
      *                operation
 212  
      * @return a list of Holds 
 213  
      * @throws InvalidParameterException invalid parameter
 214  
      * @throws MissingParameterException missing parameter
 215  
      * @throws OperationFailedException unable to complete request
 216  
      * @throws PermissionDeniedException authorization failure
 217  
      */
 218  
     public List<HoldInfo> getHoldsForPerson(@WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 219  
 
 220  
     /** 
 221  
      * Retrieves a list of active Holds, both warning and blocking,
 222  
      * that pertain to the given Person. An active Hold is any open
 223  
      * Hold that has had not been released or cancelled.
 224  
      *
 225  
      * @param personId an Id of a Person 
 226  
      * @param context Context information containing the principalId
 227  
      *                and locale information about the caller of service
 228  
      *                operation
 229  
      * @return a list of Holds 
 230  
      * @throws InvalidParameterException invalid parameter
 231  
      * @throws MissingParameterException missing parameter
 232  
      * @throws OperationFailedException unable to complete request
 233  
      * @throws PermissionDeniedException authorization failure
 234  
      */
 235  
     public List<HoldInfo> getActiveHoldsForPerson(@WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 236  
 
 237  
     /** 
 238  
      * Retrieves a list of all Holds by Issue for a Person.
 239  
      *
 240  
      * @param issueId an Issue
 241  
      * @param personId Id of a person
 242  
      * @param context Context information containing the principalId
 243  
      *                and locale information about the caller of service
 244  
      *                operation
 245  
      * @return a list of Holds
 246  
      * @throws InvalidParameterException invalid parameter
 247  
      * @throws MissingParameterException missing parameter
 248  
      * @throws OperationFailedException unable to complete request
 249  
      * @throws PermissionDeniedException authorization failure
 250  
      */
 251  
     public List<HoldInfo> getHoldsByIssueForPerson(@WebParam(name = "issueId") String issueId, @WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 252  
 
 253  
     /** 
 254  
      * Retrieves a list of active Holds, both warning and blocking, by
 255  
      * Issue for a Person. An active Hold is any open Hold that has
 256  
      * had not been released or cancelled.
 257  
      *
 258  
      * @param issueId an Issue
 259  
      * @param personId Id of a person
 260  
      * @param context Context information containing the principalId
 261  
      *                and locale information about the caller of service
 262  
      *                operation
 263  
      * @return a list of Holds
 264  
      * @throws InvalidParameterException invalid parameter
 265  
      * @throws MissingParameterException missing parameter
 266  
      * @throws OperationFailedException unable to complete request
 267  
      * @throws PermissionDeniedException authorization failure
 268  
      */
 269  
      public List<HoldInfo> getActiveHoldsByIssueForPerson(@WebParam(name = "issueId") String issueId, @WebParam(name = "personId") String personId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 270  
 
 271  
     /** 
 272  
      * Validates a Hold. Depending on the value of validationType,
 273  
      * this validation could be limited to tests on just the current
 274  
      * object and its directly contained subobjects or expanded to
 275  
      * perform all tests related to this object. If an identifier is
 276  
      * present for the hold and a record is found for that identifier,
 277  
      * the validation checks if the hold can be shifted to the new
 278  
      * values. If a record cannot be found for the identifier, it is
 279  
      * assumed that the record does not exist and as such, the checks
 280  
      * performed will be much shallower, typically mimicking those
 281  
      * performed by setting the validationType to the current
 282  
      * object. This is a slightly different pattern from the standard
 283  
      * validation as the caller provides the identifier in the create
 284  
      * statement instead of the server assigning an identifier.
 285  
      *
 286  
      * @param validationType Identifier of the extent of validation
 287  
      * @param holdInfo the hold information to be tested.
 288  
      * @param context Context information containing the principalId
 289  
      *                and locale information about the caller of service
 290  
      *                operation
 291  
      * @return the results from performing the validation
 292  
      * @throws DoesNotExistException validationTypeKey not found
 293  
      * @throws InvalidParameterException invalid validationTypeKey, holdInfo
 294  
      * @throws MissingParameterException missing validationTypeKey, holdInfo
 295  
      * @throws OperationFailedException unable to complete request
 296  
      */
 297  
     public List<ValidationResultInfo> validateHold(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "holdInfo") HoldInfo holdInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 298  
 
 299  
     /** 
 300  
      * Creates a new Hold.
 301  
      *
 302  
      * @param holdInfo Details of the Hold to be created
 303  
      * @param context Context information containing the principalId
 304  
      *                and locale information about the caller of service
 305  
      *                operation
 306  
      * @return the details of the Hold just created
 307  
      * @throws AlreadyExistsException the Hold being created already exists
 308  
      * @throws DataValidationErrorException One or more values invalid for this operation
 309  
      * @throws InvalidParameterException One or more parameters invalid
 310  
      * @throws MissingParameterException One or more parameters missing
 311  
      * @throws OperationFailedException unable to complete request
 312  
      * @throws PermissionDeniedException authorization failure
 313  
      */
 314  
     public HoldInfo createHold(@WebParam(name = "holdInfo") HoldInfo holdInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 315  
 
 316  
     /** 
 317  
      * Updates an existing Hold.
 318  
      *
 319  
      * @param holdId Id of Hold to be updated
 320  
      * @param holdInfo Details of updates to the Hold
 321  
      *        being updated
 322  
      * @param context Context information containing the principalId
 323  
      *                and locale information about the caller of service
 324  
      *                operation
 325  
      * @return the details of Hold just updated
 326  
      * @throws DataValidationErrorException One or more values invalid for this 
 327  
      *         operation
 328  
      * @throws DoesNotExistException the Hold does not exist
 329  
      * @throws InvalidParameterException One or more parameters invalid
 330  
      * @throws MissingParameterException One or more parameters missing
 331  
      * @throws OperationFailedException unable to complete request
 332  
      * @throws PermissionDeniedException authorization failure
 333  
      * @throws VersionMismatchException The action was attempted on an out of date 
 334  
      *         version.
 335  
      */
 336  
     public HoldInfo updateHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "holdInfo") HoldInfo holdInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 337  
 
 338  
     /** 
 339  
      * Releases a Hold. A release preserves the record and marks the
 340  
      * State as released and sets the released date. A Hold should be
 341  
      * released instead of deleted when the record needs to be
 342  
      * preserved.
 343  
      *
 344  
      * @param holdId a hold
 345  
      * @param context Context information containing the principalId
 346  
      *                and locale information about the caller of service
 347  
      *                operation
 348  
      * @return the modified HoldInfo
 349  
      * @throws InvalidParameterException invalid parameter
 350  
      * @throws MissingParameterException missing parameter
 351  
      * @throws OperationFailedException unable to complete request
 352  
      * @throws PermissionDeniedException authorization failure
 353  
      */
 354  
      public HoldInfo releaseHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 355  
 
 356  
     /** 
 357  
      * Deletes an existing Hold record.
 358  
      *
 359  
      * @param holdId the Id of the Hold to be deleted
 360  
      * @param context Context information containing the principalId
 361  
      *                and locale information about the caller of service
 362  
      *                operation
 363  
      * @return status of the operation (success, failed)
 364  
      * @throws DoesNotExistException the Hold does not exist
 365  
      * @throws InvalidParameterException One or more parameters invalid
 366  
      * @throws MissingParameterException One or more parameters missing
 367  
      * @throws OperationFailedException unable to complete request
 368  
      * @throws PermissionDeniedException authorization failure
 369  
      */
 370  
     public StatusInfo deleteHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 371  
 
 372  
     /** 
 373  
      * Retrieves the details of a single Issue by an issue Id.
 374  
      *
 375  
      * @param issueId Unique Id of the Issue to be retrieved
 376  
      * @param context Context information containing the principalId
 377  
      *                and locale information about the caller of service
 378  
      *                operation
 379  
      * @return the details of the Issue requested
 380  
      * @throws DoesNotExistException issueId not found
 381  
      * @throws InvalidParameterException invalid issueId
 382  
      * @throws MissingParameterException missing issueId
 383  
      * @Throws OperationFailedException unable to complete request
 384  
      * @throws PermissionDeniedException authorization failure
 385  
      */
 386  
     public IssueInfo getIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 387  
 
 388  
     /** 
 389  
      * Retrieves a list Issues corresponding to a list of issue Ids.
 390  
      *
 391  
      * @param issueIdList list of unique Ids of the
 392  
      *        Issue to be retrieved
 393  
      * @param context Context information containing the principalId
 394  
      *                and locale information about the caller of service
 395  
      *                operation
 396  
      * @return a list of Issues
 397  
      * @throws DoesNotExistException a issueId in list not found
 398  
      * @throws InvalidParameterException invalid issueId in list
 399  
      * @throws MissingParameterException missing issueIdList
 400  
      * @throws OperationFailedException unable to complete request
 401  
      * @throws PermissionDeniedException authorization failure
 402  
      */
 403  
     public List<IssueInfo> getIssuesByIdList(@WebParam(name = "issueIdList") List<String> issueIdList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 404  
 
 405  
     /** 
 406  
      * Retrieves a list of Issues by Type.
 407  
      *
 408  
      * @param issueTypeKey a Type of the Issue to be retrieved
 409  
      * @param context Context information containing the principalId
 410  
      *                and locale information about the caller of service
 411  
      *                operation
 412  
      * @return a list of Issues of the given Type
 413  
      * @throws InvalidParameterException invalid parameter
 414  
      * @throws MissingParameterException missing parameter
 415  
      * @throws OperationFailedException unable to complete request
 416  
      * @throws PermissionDeniedException authorization failure
 417  
      */
 418  
     public List<String> getIssueIdsByType(@WebParam(name = "issueTypeKey") String issueTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 419  
 
 420  
     /** 
 421  
      * Retrieves a list of Issues that pertain to the given
 422  
      * organization.
 423  
      *
 424  
      * @param organizationId a unique Id of an organoization
 425  
      * @param context Context information containing the principalId
 426  
      *                and locale information about the caller of service
 427  
      *                operation
 428  
      * @return a list of Issues 
 429  
      * @throws InvalidParameterException invalid parameter
 430  
      * @throws MissingParameterException missing parameter
 431  
      * @throws OperationFailedException unable to complete request
 432  
      * @throws PermissionDeniedException authorization failure
 433  
      */
 434  
     public List<IssueInfo> getIssuesByOrg(@WebParam(name = "organizationId") String organizationId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 435  
 
 436  
     /** 
 437  
      * Retrieves a list of Issues that are related to the given
 438  
      * Restriction.
 439  
      *
 440  
      * @param restrictionKey a unique key for a Restriction
 441  
      * @param context Context information containing the principalId
 442  
      *                and locale information about the caller of service
 443  
      *                operation
 444  
      * @return a list of Issues 
 445  
      * @throws InvalidParameterException invalid parameter
 446  
      * @throws MissingParameterException missing parameter
 447  
      * @throws OperationFailedException unable to complete request
 448  
      * @throws PermissionDeniedException authorization failure
 449  
      */
 450  
     public List<IssueInfo> getIssuesByRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 451  
 
 452  
     /** 
 453  
      * Adds an Issue to a Restriction.
 454  
      *
 455  
      * @param restrictionKey a unique key for a Restriction
 456  
      * @param issueId a unique Id of an Issue to be added
 457  
      * @param context Context information containing the principalId
 458  
      *                and locale information about the caller of service
 459  
      *                operation
 460  
      * @return StatusInfo
 461  
      * @throws InvalidParameterException invalid parameter
 462  
      * @throws MissingParameterException missing parameter
 463  
      * @throws OperationFailedException unable to complete request
 464  
      * @throws PermissionDeniedException authorization failure
 465  
      */
 466  
     public StatusInfo addIssueToRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "issueId") String issueId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 467  
 
 468  
     /** 
 469  
      * Removes an Issue to a Restriction.
 470  
      *
 471  
      * @param restrictionKey a unique key for a Restriction
 472  
      * @param issueId a unique Id of an Issue to be removed
 473  
      * @param context Context information containing the principalId
 474  
      *                and locale information about the caller of service
 475  
      *                operation
 476  
      * @return StatusInfo
 477  
      * @throws InvalidParameterException invalid parameter
 478  
      * @throws MissingParameterException missing parameter
 479  
      * @throws OperationFailedException unable to complete request
 480  
      * @throws PermissionDeniedException authorization failure
 481  
      */
 482  
     public StatusInfo removeIssueFromRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "issueId") String issueId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 483  
 
 484  
     /** 
 485  
      * Validates an issue. Depending on the value of validationType,
 486  
      * this validation could be limited to tests on just the current
 487  
      * object and its directly contained subobjects or expanded to
 488  
      * perform all tests related to this object. If an identifier is
 489  
      * present for the issue and a record is found for that
 490  
      * identifier, the validation checks if the issue can be
 491  
      * shifted to the new values. If a record cannot be found for the
 492  
      * identifier, it is assumed that the record does not exist and as
 493  
      * such, the checks performed will be much shallower, typically
 494  
      * mimicking those performed by setting the validationType to the
 495  
      * current object. This is a slightly different pattern from the
 496  
      * standard validation as the caller provides the identifier in
 497  
      * the create statement instead of the server assigning an
 498  
      * identifier.
 499  
      *
 500  
      * @param validationType Identifier of the extent of validation
 501  
      * @param issueInfo the issue information to be tested.
 502  
      * @param context Context information containing the principalId
 503  
      *                and locale information about the caller of service
 504  
      *                operation
 505  
      * @return the results from performing the validation
 506  
      * @throws DoesNotExistException validationTypeKey not found
 507  
      * @throws InvalidParameterException invalid validationTypeKey, issueInfo
 508  
      * @throws MissingParameterException missing validationTypeKey, issueInfo
 509  
      * @throws OperationFailedException unable to complete request
 510  
      */
 511  
     public List<ValidationResultInfo> validateIssue(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "issueInfo") IssueInfo issueInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 512  
 
 513  
     /** 
 514  
      * Creates a new Issue.
 515  
      *
 516  
      * @param issueInfo Details of the Issue to be created
 517  
      * @param context Context information containing the principalId
 518  
      *                and locale information about the caller of service
 519  
      *                operation
 520  
      * @return the details of the Issue just created
 521  
      * @throws AlreadyExistsException the Issue being created already exists
 522  
      * @throws DataValidationErrorException One or more values invalid for this operation
 523  
      * @throws InvalidParameterException One or more parameters invalid
 524  
      * @throws MissingParameterException One or more parameters missing
 525  
      * @throws OperationFailedException unable to complete request
 526  
      * @throws PermissionDeniedException authorization failure
 527  
      */
 528  
     public IssueInfo createIssue(@WebParam(name = "issueInfo") IssueInfo issueInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 529  
 
 530  
     /** 
 531  
      * Updates an existing Issue.
 532  
      *
 533  
      * @param issueId Id of the Issue to be updated
 534  
      * @param issueInfo Details of updates to the Issue
 535  
      *        being updated
 536  
      * @param context Context information containing the principalId
 537  
      *                and locale information about the caller of service
 538  
      *                operation
 539  
      * @return the details of the Issue just updated
 540  
      * @throws DataValidationErrorException One or more values invalid for this 
 541  
      *         operation
 542  
      * @throws DoesNotExistException the Issue does not exist
 543  
      * @throws InvalidParameterException One or more parameters invalid
 544  
      * @throws MissingParameterException One or more parameters missing
 545  
      * @throws OperationFailedException unable to complete request
 546  
      * @throws PermissionDeniedException authorization failure
 547  
      * @throws VersionMismatchException The action was attempted on an out of date 
 548  
      *         version.
 549  
      */
 550  
     public IssueInfo updateIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "issueInfo") IssueInfo issueInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 551  
 
 552  
     /** 
 553  
      * Deletes an existing Issue.
 554  
      *
 555  
      * @param issueId the Id of the Issue to
 556  
      *        be deleted
 557  
      * @param context Context information containing the principalId
 558  
      *                and locale information about the caller of service
 559  
      *                operation
 560  
      * @return status of the operation (success, failed)
 561  
      * @throws DoesNotExistException the Issue does not exist
 562  
      * @throws InvalidParameterException One or more parameters invalid
 563  
      * @throws MissingParameterException One or more parameters missing
 564  
      * @throws OperationFailedException unable to complete request
 565  
      * @throws PermissionDeniedException authorization failure
 566  
      */
 567  
     public StatusInfo deleteIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 568  
 
 569  
     /** 
 570  
      * Retrieves the details of a single Restriction by a restriction key.
 571  
      *
 572  
      * @param restrictionKey Unique Key of the Restriction to be retrieved
 573  
      * @param context Context information containing the principalId
 574  
      *                and locale information about the caller of service
 575  
      *                operation
 576  
      * @return the details of the Restriction requested
 577  
      * @throws DoesNotExistException restrictionKey not found
 578  
      * @throws InvalidParameterException invalid parameter
 579  
      * @throws MissingParameterException missing parameter
 580  
      * @Throws OperationFailedException unable to complete request
 581  
      * @throws PermissionDeniedException authorization failure
 582  
      */
 583  
     public RestrictionInfo getRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 584  
 
 585  
     /** 
 586  
      * Retrieves a list Restrictions corresponding to a list of
 587  
      * restriction keys.
 588  
      *
 589  
      * @param restrictionKeyList list of unique keys of the
 590  
      *        Restriction to be retrieved
 591  
      * @param context Context information containing the principalId
 592  
      *                and locale information about the caller of service
 593  
      *                operation
 594  
      * @return a list of Restrictions
 595  
      * @throws DoesNotExistException a restrictionKey in list not found
 596  
      * @throws InvalidParameterException invalid restrictionKey in list
 597  
      * @throws MissingParameterException missing parameter
 598  
      * @throws OperationFailedException unable to complete request
 599  
      * @throws PermissionDeniedException authorization failure
 600  
      */
 601  
     public List<RestrictionInfo> getRestrictionsByKeyList(@WebParam(name = "restrictionKeyList") List<String> restrictionKeyList, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 602  
 
 603  
     /** 
 604  
      * Retrieves a list of Restrictions by Type.
 605  
      *
 606  
      * @param restrictionTypeKey a Type of the Restriction to be retrieved
 607  
      * @param context Context information containing the principalId
 608  
      *                and locale information about the caller of service
 609  
      *                operation
 610  
      * @return a list of Restrictions of the given Type
 611  
      * @throws InvalidParameterException invalid parameter
 612  
      * @throws MissingParameterException missing parameter
 613  
      * @throws OperationFailedException unable to complete request
 614  
      * @throws PermissionDeniedException authorization failure
 615  
      */
 616  
     public List<String> getRestrictionKeysByType(@WebParam(name = "restrictionTypeKey") String restrictionTypeKey, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 617  
 
 618  
     /** 
 619  
      * Validates a restriction. Depending on the value of validationType,
 620  
      * this validation could be limited to tests on just the current
 621  
      * object and its directly contained subobjects or expanded to
 622  
      * perform all tests related to this object. If an identifier is
 623  
      * present for the restriction and a record is found for that
 624  
      * identifier, the validation checks if the restriction can be
 625  
      * shifted to the new values. If a record cannot be found for the
 626  
      * identifier, it is assumed that the record does not exist and as
 627  
      * such, the checks performed will be much shallower, typically
 628  
      * mimicking those performed by setting the validationType to the
 629  
      * current object. This is a slightly different pattern from the
 630  
      * standard validation as the caller provides the identifier in
 631  
      * the create statement instead of the server assigning an
 632  
      * identifier.
 633  
      *
 634  
      * @param validationType Identifier of the extent of validation
 635  
      * @param restrictionInfo the restriction information to be tested.
 636  
      * @param context Context information containing the principalId
 637  
      *                and locale information about the caller of service
 638  
      *                operation
 639  
      * @return the results from performing the validation
 640  
      * @throws DoesNotExistException validationTypeKey not found
 641  
      * @throws InvalidParameterException invalid validationTypeKey, restrictionInfo
 642  
      * @throws MissingParameterException missing validationTypeKey, restrictionInfo
 643  
      * @throws OperationFailedException unable to complete request
 644  
      */
 645  
     public List<ValidationResultInfo> validateRestriction(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "restrictionInfo") RestrictionInfo restrictionInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 646  
 
 647  
     /** 
 648  
      * Creates a new Restriction.
 649  
      *
 650  
      * @param restrictionKey a unique key for the restriction
 651  
      * @param restrictionInfo Details of the Restriction to be created
 652  
      * @param context Context information containing the principalId
 653  
      *                and locale information about the caller of service
 654  
      *                operation
 655  
      * @return the details of the Restriction just created
 656  
      * @throws AlreadyExistsException the Restriction being created already exists
 657  
      * @throws DataValidationErrorException One or more values invalid for this operation
 658  
      * @throws InvalidParameterException One or more parameters invalid
 659  
      * @throws MissingParameterException One or more parameters missing
 660  
      * @throws OperationFailedException unable to complete request
 661  
      * @throws PermissionDeniedException authorization failure
 662  
      */
 663  
     public RestrictionInfo createRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "restrictionInfo") RestrictionInfo restrictionInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 664  
 
 665  
     /** 
 666  
      * Updates an existing Restriction.
 667  
      *
 668  
      * @param restrictionKey the key of the Restriction to be updated
 669  
      * @param restrictionInfo Details of updates to the Restriction
 670  
      *        being updated
 671  
      * @param context Context information containing the principalId
 672  
      *                and locale information about the caller of service
 673  
      *                operation
 674  
      * @return the details of the Restriction just updated
 675  
      * @throws DataValidationErrorException One or more values invalid for this 
 676  
      *         operation
 677  
      * @throws DoesNotExistException the Restriction does not exist
 678  
      * @throws InvalidParameterException One or more parameters invalid
 679  
      * @throws MissingParameterException One or more parameters missing
 680  
      * @throws OperationFailedException unable to complete request
 681  
      * @throws PermissionDeniedException authorization failure
 682  
      * @throws VersionMismatchException The action was attempted on an out of date 
 683  
      *         version.
 684  
      */
 685  
     public RestrictionInfo updateRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "restrictionInfo") RestrictionInfo restrictionInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException;
 686  
 
 687  
     /** 
 688  
      * Deletes an existing Restriction.
 689  
      *
 690  
      * @param restrictionKey the key of the Restriction to
 691  
      *        be deleted
 692  
      * @param context Context information containing the principalId
 693  
      *                and locale information about the caller of service
 694  
      *                operation
 695  
      * @return status of the operation (success, failed)
 696  
      * @throws DoesNotExistException the Restriction does not exist
 697  
      * @throws InvalidParameterException One or more parameters invalid
 698  
      * @throws MissingParameterException One or more parameters missing
 699  
      * @throws OperationFailedException unable to complete request
 700  
      * @throws PermissionDeniedException authorization failure
 701  
      */
 702  
     public StatusInfo deleteRestriction(@WebParam(name = "restrictionKey") String restrictionKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 703  
 }