Coverage Report - org.kuali.student.r2.core.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.r2.core.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.rice.core.api.criteria.QueryByCriteria;
 25  
 
 26  
 import org.kuali.student.r2.core.hold.dto.HoldInfo;
 27  
 import org.kuali.student.r2.core.hold.dto.IssueInfo;
 28  
 
 29  
 import org.kuali.student.r2.common.dto.ContextInfo;
 30  
 import org.kuali.student.r2.common.dto.StatusInfo;
 31  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 32  
 
 33  
 
 34  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 35  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 36  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 37  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 38  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 39  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 40  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 41  
 import org.kuali.student.r2.common.exceptions.ReadOnlyException;
 42  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 43  
 import org.kuali.student.r2.common.util.constants.HoldServiceConstants;
 44  
 
 45  
 /**
 46  
  * Version: DRAFT - NOT READY FOR RELEASE. 
 47  
  *
 48  
  * The Hold Service defines a service to manage holdss on a Person by
 49  
  * Person basis. Holds are a way to put a "stop" on an action
 50  
  * implemented by another service, such as registration for a course.
 51  
  * Holds are checked in the Process Service.
 52  
  *
 53  
  * The Hold is a relation between a Person and an Issue. An inactive
 54  
  * Hold is one that has been released or cancelled. The state of the
 55  
  * Hold needs to be checked to determine if a restriction exists.
 56  
  *
 57  
  * @author tom
 58  
  * @since Sun May 1 14:22:34 EDT 2011
 59  
  */
 60  
 
 61  
 @WebService(name = "HoldService", targetNamespace = HoldServiceConstants.NAMESPACE)
 62  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 63  
 
 64  
 public interface HoldService {
 65  
 
 66  
     /** 
 67  
      * Retrieves the a single Hold by a hold Id.
 68  
      *
 69  
      * @param holdId a unique identifier of the Hold to be retrieved
 70  
      * @param contextInfo information containing the principalId and
 71  
      *        locale information about the caller of service operation
 72  
      * @return the Hold requested
 73  
      * @throws DoesNotExistException holdId not found
 74  
      * @throws InvalidParameterException contextInfo is not valid
 75  
      * @throws MissingParameterException holdId or contextInfo is
 76  
      *         missing or null
 77  
      * @throws OperationFailedException unable to complete request
 78  
      * @throws PermissionDeniedException an authorization failure occurred
 79  
      */
 80  
     public HoldInfo getHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 81  
 
 82  
     /** 
 83  
      * Retrieves a list Holds from to a list of hold Ids. The returned
 84  
      * list may be in any order and of duplicate Ids are supplied, a
 85  
      * unique set may or may not be returned.
 86  
      *
 87  
      * @param holdIds list of Hold identifiers
 88  
      * @param contextInfo information containing the principalId and
 89  
      *        locale information about the caller of service operation
 90  
      * @return a list of Holds
 91  
      * @throws DoesNotExistException a holdId in list not found
 92  
      * @throws InvalidParameterException contextInfo is not valid
 93  
      * @throws MissingParameterException holdIds, a holdId in holdIds,
 94  
      *         or contextInfo is missing or null
 95  
      * @throws OperationFailedException unable to complete request
 96  
      * @throws PermissionDeniedException an authorization failure occurred
 97  
      */
 98  
     public List<HoldInfo> getHoldsByIds(@WebParam(name = "holdIds") List<String> holdIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 99  
 
 100  
     /** 
 101  
      * Retrieves a list Hold Ids by Hold Type.
 102  
      *
 103  
      * @param holdTypeKey an identifier for a Hold Type
 104  
      * @param contextInfo information containing the principalId and
 105  
      *        locale information about the caller of service operation
 106  
      * @return a list of Hold identifiers
 107  
      * @throws InvalidParameterException contextInfo is not valid
 108  
      * @throws MissingParameterException holdTypeKey or contextInfo
 109  
      *         is missing or null
 110  
      * @throws OperationFailedException unable to complete request
 111  
      * @throws PermissionDeniedException an authorization failure occurred
 112  
      */
 113  
     public List<String> getHoldIdsByType(@WebParam(name = "holdTypeKey") String holdTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 114  
 
 115  
     /** 
 116  
      * Retrieves all Holds related to the given Issue.
 117  
      *
 118  
      * @param issueId a unique identifier for the Issue 
 119  
      * @param contextInfo information containing the principalId and
 120  
      *        locale information about the caller of service operation
 121  
      * @return the Holds to the given Issue
 122  
      * @throws InvalidParameterException contextInfo is not valid
 123  
      * @throws MissingParameterException issueId or contetInfo is missing
 124  
      *         or null
 125  
      * @throws OperationFailedException unable to complete request
 126  
      * @throws PermissionDeniedException an authorization failure occurred
 127  
      */
 128  
     public List<HoldInfo> getHoldsByIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 129  
 
 130  
     /** 
 131  
      * Retrieves all Holds to the given Person.
 132  
      *
 133  
      * @param personId a unique identifier for the Person 
 134  
      * @param contextInfo information containing the principalId and
 135  
      *        locale information about the caller of service operation
 136  
      * @return the Holds to the given Person
 137  
      * @throws InvalidParameterException contextInfo is not valid
 138  
      * @throws MissingParameterException personId of contextInfo is
 139  
      *         missing or null
 140  
      * @throws OperationFailedException unable to complete request
 141  
      * @throws PermissionDeniedException an authorization failure occurred
 142  
      */
 143  
     public List<HoldInfo> getHoldsByPerson(@WebParam(name = "personId") String personId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 144  
 
 145  
     /** 
 146  
      * Retrieves a list of active Holds, that pertain to the given
 147  
      * Person. An active Hold is any open Hold that has had not been
 148  
      * released or cancelled.
 149  
      *
 150  
      * @param personId an Id of a Person 
 151  
      * @param contextInfo Context information containing the principalId
 152  
      *                and locale information about the caller of service
 153  
      *                operation
 154  
      * @return a list of Holds 
 155  
      * @throws InvalidParameterException invalid parameter
 156  
      * @throws MissingParameterException missing parameter
 157  
      * @throws OperationFailedException unable to complete request
 158  
      * @throws PermissionDeniedException authorization failure
 159  
      */
 160  
     public List<HoldInfo> getActiveHoldsByPerson(@WebParam(name = "personId") String personId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 161  
 
 162  
     /** 
 163  
      * Retrieves a list of all Holds by Issue for a Person.
 164  
      *
 165  
      * @param issueId an Issue
 166  
      * @param personId Id of a person
 167  
      * @param contextInfo Context information containing the principalId
 168  
      *                and locale information about the caller of service
 169  
      *                operation
 170  
      * @return a list of Holds
 171  
      * @throws InvalidParameterException invalid parameter
 172  
      * @throws MissingParameterException missing parameter
 173  
      * @throws OperationFailedException unable to complete request
 174  
      * @throws PermissionDeniedException authorization failure
 175  
      */
 176  
     public List<HoldInfo> getHoldsByIssueAndPerson(@WebParam(name = "issueId") String issueId, @WebParam(name = "personId") String personId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 177  
 
 178  
     /** 
 179  
      * Retrieves a list of active Holds, both warning and blocking, by
 180  
      * Issue for a Person. An active Hold is any open Hold that has
 181  
      * had not been released or cancelled.
 182  
      *
 183  
      * @param issueId an Issue
 184  
      * @param personId Id of a person
 185  
      * @param contextInfo Context information containing the principalId
 186  
      *                and locale information about the caller of service
 187  
      *                operation
 188  
      * @return a list of Holds
 189  
      * @throws InvalidParameterException invalid parameter
 190  
      * @throws MissingParameterException missing parameter
 191  
      * @throws OperationFailedException unable to complete request
 192  
      * @throws PermissionDeniedException authorization failure
 193  
      */
 194  
     public List<HoldInfo> getActiveHoldsByIssueAndPerson(@WebParam(name = "issueId") String issueId, @WebParam(name = "personId") String personId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 195  
 
 196  
     /**
 197  
      * Searches for Holds based on the criteria and returns a list
 198  
      * of Hold identifiers which match the search criteria.
 199  
      *
 200  
      * @param criteria the search criteria
 201  
      * @param contextInfo Context information containing the principalId
 202  
      *                and locale information about the caller of service
 203  
      *                operation
 204  
      * @return list of Hold Ids
 205  
      * @throws InvalidParameterException invalid parameter
 206  
      * @throws MissingParameterException parameter is missing
 207  
      * @throws OperationFailedException unable to complete request
 208  
      * @throws PermissionDeniedException authorization failure
 209  
      */
 210  
     public List<String> searchForHoldIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 211  
 
 212  
     /**
 213  
      * Searches for Holds based on the criteria and returns a list of
 214  
      * Holds which match the search criteria.
 215  
      * 
 216  
      * @param criteria the search criteria
 217  
      * @param contextInfo Context information containing the principalId
 218  
      *                and locale information about the caller of service
 219  
      *                operation
 220  
      * @return list of Holds
 221  
      * @throws InvalidParameterException invalid parameter
 222  
      * @throws MissingParameterException parameter is missing
 223  
      * @throws OperationFailedException unable to complete request
 224  
      * @throws PermissionDeniedException authorization failure
 225  
      */
 226  
     public List<HoldInfo> searchForHolds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 227  
 
 228  
     /** 
 229  
      * Validates a Hold. Depending on the value of validationType,
 230  
      * this validation could be limited to tests on just the current
 231  
      * object and its directly contained subobjects or expanded to
 232  
      * perform all tests related to this object. If an identifier is
 233  
      * present for the hold and a record is found for that identifier,
 234  
      * the validation checks if the hold can be shifted to the new
 235  
      * values. If a record cannot be found for the identifier, it is
 236  
      * assumed that the record does not exist and as such, the checks
 237  
      * performed will be much shallower, typically mimicking those
 238  
      * performed by setting the validationType to the current
 239  
      * object. This is a slightly different pattern from the standard
 240  
      * validation as the caller provides the identifier in the create
 241  
      * statement instead of the server assigning an identifier.
 242  
      *
 243  
      * @param validationTypeKey Identifier of the extent of validation
 244  
      * @param holdInfo the hold information to be tested.
 245  
      * @param contextInfo Context information containing the principalId
 246  
      *                and locale information about the caller of service
 247  
      *                operation
 248  
      * @return the results from performing the validation
 249  
      * @throws DoesNotExistException validationTypeKey not found
 250  
      * @throws InvalidParameterException invalid validationTypeKey, holdInfo
 251  
      * @throws MissingParameterException missing validationTypeKey, holdInfo
 252  
      * @throws OperationFailedException unable to complete request
 253  
      */
 254  
     public List<ValidationResultInfo> validateHold(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "holdInfo") HoldInfo holdInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 255  
 
 256  
     /** 
 257  
      * Creates a new Hold.
 258  
      *
 259  
      * @param personId identifying the person for whom the hold is to be applied
 260  
      * @param issueId identifying the exact issue involved
 261  
      * @param holdTypeKey identifying the type of the hold
 262  
      * @param holdInfo Details of the Hold to be created
 263  
      * @param contextInfo Context information containing the principalId
 264  
      *                and locale information about the caller of service
 265  
      *                operation
 266  
      * @return the details of the Hold just created
 267  
      * @throws AlreadyExistsException the Hold being created already exists
 268  
      * @throws DataValidationErrorException One or more values invalid for 
 269  
      *         this operation
 270  
      * @throws InvalidParameterException One or more parameters invalid
 271  
      * @throws MissingParameterException One or more parameters missing
 272  
      * @throws OperationFailedException unable to complete request
 273  
      * @throws ReadOnlyException an attempt at supplying information
 274  
      *         designated as read only
 275  
      * @throws PermissionDeniedException authorization failure
 276  
      */
 277  
     public HoldInfo createHold( 
 278  
             @WebParam(name = "personId") String personId,  
 279  
             @WebParam(name = "issueId") String issueId, 
 280  
             @WebParam(name = "holdTypeKey") String holdTypeKey,
 281  
             @WebParam(name = "holdInfo") HoldInfo holdInfo, 
 282  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 283  
             throws AlreadyExistsException, DataValidationErrorException, 
 284  
             InvalidParameterException, MissingParameterException, OperationFailedException,
 285  
             PermissionDeniedException, ReadOnlyException;
 286  
 
 287  
     /** 
 288  
      * Updates an existing Hold.
 289  
      *
 290  
      * @param holdId Id of Hold to be updated
 291  
      * @param holdInfo Details of updates to the Hold
 292  
      *        being updated
 293  
      * @param contextInfo Context information containing the principalId
 294  
      *                and locale information about the caller of service
 295  
      *                operation
 296  
      * @return the details of Hold just updated
 297  
      * @throws DataValidationErrorException One or more values invalid for this 
 298  
      *         operation
 299  
      * @throws DoesNotExistException the Hold does not exist
 300  
      * @throws InvalidParameterException One or more parameters invalid
 301  
      * @throws MissingParameterException One or more parameters missing
 302  
      * @throws OperationFailedException unable to complete request
 303  
      * @throws PermissionDeniedException authorization failure
 304  
      * @throws ReadOnlyException an attempt at supplying information
 305  
      *         designated as read only
 306  
      * @throws VersionMismatchException The action was attempted on an
 307  
      *         out of date version.
 308  
      */
 309  
     public HoldInfo updateHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "holdInfo") HoldInfo holdInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
 310  
 
 311  
     /** 
 312  
      * Releases a Hold. A release preserves the record and marks the
 313  
      * State as released and sets the released date. A Hold should be
 314  
      * released instead of deleted when the record needs to be
 315  
      * preserved.
 316  
      *
 317  
      * @param holdId a hold
 318  
      * @param contextInfo Context information containing the principalId
 319  
      *                and locale information about the caller of service
 320  
      *                operation
 321  
      * @return the modified HoldInfo
 322  
      * @throws DoesNotExistException the Hold does not exist
 323  
      * @throws InvalidParameterException invalid parameter
 324  
      * @throws MissingParameterException missing parameter
 325  
      * @throws OperationFailedException unable to complete request
 326  
      * @throws PermissionDeniedException authorization failure
 327  
      */
 328  
     public HoldInfo releaseHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 329  
 
 330  
     /** 
 331  
      * Deletes an existing Hold record.
 332  
      *
 333  
      * @param holdId the Id of the Hold to be deleted
 334  
      * @param contextInfo Context information containing the principalId
 335  
      *                and locale information about the caller of service
 336  
      *                operation
 337  
      * @return status of the operation (success, failed)
 338  
      * @throws DoesNotExistException the Hold does not exist
 339  
      * @throws InvalidParameterException One or more parameters invalid
 340  
      * @throws MissingParameterException One or more parameters missing
 341  
      * @throws OperationFailedException unable to complete request
 342  
      * @throws PermissionDeniedException authorization failure
 343  
      */
 344  
     public StatusInfo deleteHold(@WebParam(name = "holdId") String holdId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 345  
 
 346  
     /** 
 347  
      * Retrieves the details of a single Issue by an issue Id.
 348  
      *
 349  
      * @param issueId Unique Id of the Issue to be retrieved
 350  
      * @param contextInfo Context information containing the principalId
 351  
      *                and locale information about the caller of service
 352  
      *                operation
 353  
      * @return the details of the Issue requested
 354  
      * @throws DoesNotExistException issueId not found
 355  
      * @throws InvalidParameterException invalid issueId
 356  
      * @throws MissingParameterException missing issueId
 357  
      * @throws OperationFailedException unable to complete request
 358  
      * @throws PermissionDeniedException authorization failure
 359  
      */
 360  
     public IssueInfo getIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 361  
 
 362  
     /** 
 363  
      * Retrieves a list Issues corresponding to a list of issue Ids.
 364  
      *
 365  
      * @param issueIds list of unique Ids of the
 366  
      *        Issue to be retrieved
 367  
      * @param contextInfo Context information containing the principalId
 368  
      *                and locale information about the caller of service
 369  
      *                operation
 370  
      * @return a list of Issues
 371  
      * @throws DoesNotExistException a issueId in list not found
 372  
      * @throws InvalidParameterException invalid issueId in list
 373  
      * @throws MissingParameterException missing issueIds
 374  
      * @throws OperationFailedException unable to complete request
 375  
      * @throws PermissionDeniedException authorization failure
 376  
      */
 377  
     public List<IssueInfo> getIssuesByIds(@WebParam(name = "issueIds") List<String> issueIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 378  
 
 379  
     /** 
 380  
      * Retrieves a list of Issues by Type.
 381  
      *
 382  
      * @param issueTypeKey a Type of the Issue to be retrieved
 383  
      * @param contextInfo Context information containing the principalId
 384  
      *                and locale information about the caller of service
 385  
      *                operation
 386  
      * @return a list of Issues of the given Type
 387  
      * @throws InvalidParameterException invalid parameter
 388  
      * @throws MissingParameterException missing parameter
 389  
      * @throws OperationFailedException unable to complete request
 390  
      * @throws PermissionDeniedException authorization failure
 391  
      */
 392  
     public List<String> getIssueIdsByType(@WebParam(name = "issueTypeKey") String issueTypeKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 393  
 
 394  
     /** 
 395  
      * Retrieves a list of Issues that pertain to the given
 396  
      * organization.
 397  
      *
 398  
      * @param organizationId a unique Id of an organoization
 399  
      * @param contextInfo Context information containing the principalId
 400  
      *                and locale information about the caller of service
 401  
      *                operation
 402  
      * @return a list of Issues 
 403  
      * @throws InvalidParameterException invalid parameter
 404  
      * @throws MissingParameterException missing parameter
 405  
      * @throws OperationFailedException unable to complete request
 406  
      * @throws PermissionDeniedException authorization failure
 407  
      */
 408  
     public List<IssueInfo> getIssuesByOrg(@WebParam(name = "organizationId") String organizationId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 409  
 
 410  
     /**
 411  
      * Searches for Issues based on the criteria and returns a list
 412  
      * of Issue identifiers which match the search criteria.
 413  
      *
 414  
      * @param criteria the search criteria
 415  
      * @param contextInfo Context information containing the principalId
 416  
      *                and locale information about the caller of service
 417  
      *                operation
 418  
      * @return list of Issue Ids
 419  
      * @throws InvalidParameterException invalid parameter
 420  
      * @throws MissingParameterException parameter is missing
 421  
      * @throws OperationFailedException unable to complete request
 422  
      * @throws PermissionDeniedException authorization failure
 423  
      */
 424  
     public List<String> searchForIssueIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 425  
 
 426  
     /**
 427  
      * Searches for Issues based on the criteria and returns a list of
 428  
      * Issues which match the search criteria.
 429  
      * 
 430  
      * @param criteria the search criteria
 431  
      * @param contextInfo Context information containing the principalId
 432  
      *                and locale information about the caller of service
 433  
      *                operation
 434  
      * @return list of IssueIds
 435  
      * @throws InvalidParameterException invalid parameter
 436  
      * @throws MissingParameterException parameter is missing
 437  
      * @throws OperationFailedException unable to complete request
 438  
      * @throws PermissionDeniedException authorization failure
 439  
      */
 440  
     public List<IssueInfo> searchForIssues(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 441  
 
 442  
     /** 
 443  
      * Validates an issue. Depending on the value of validationType,
 444  
      * this validation could be limited to tests on just the current
 445  
      * object and its directly contained subobjects or expanded to
 446  
      * perform all tests related to this object. If an identifier is
 447  
      * present for the issue and a record is found for that
 448  
      * identifier, the validation checks if the issue can be
 449  
      * shifted to the new values. If a record cannot be found for the
 450  
      * identifier, it is assumed that the record does not exist and as
 451  
      * such, the checks performed will be much shallower, typically
 452  
      * mimicking those performed by setting the validationType to the
 453  
      * current object. This is a slightly different pattern from the
 454  
      * standard validation as the caller provides the identifier in
 455  
      * the create statement instead of the server assigning an
 456  
      * identifier.
 457  
      *
 458  
      * @param validationTypeKey Identifier of the extent of validation
 459  
      * @param issueInfo the issue information to be tested.
 460  
      * @param contextInfo Context information containing the principalId
 461  
      *                and locale information about the caller of service
 462  
      *                operation
 463  
      * @return the results from performing the validation
 464  
      * @throws DoesNotExistException validationTypeKey not found
 465  
      * @throws InvalidParameterException invalid validationTypeKey, issueInfo
 466  
      * @throws MissingParameterException missing validationTypeKey, issueInfo
 467  
      * @throws OperationFailedException unable to complete request
 468  
      */
 469  
     public List<ValidationResultInfo> validateIssue(@WebParam(name = "validationTypeKey") String validationTypeKey, @WebParam(name = "issueInfo") IssueInfo issueInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
 470  
 
 471  
     /** 
 472  
      * Creates a new Issue.
 473  
      *
 474  
      * @param issueTypeKey indicates the type of issue
 475  
      * @param issueInfo Details of the Issue to be created
 476  
      * @param contextInfo Context information containing the principalId
 477  
      *                and locale information about the caller of service
 478  
      *                operation
 479  
      * @return the details of the Issue just created
 480  
      * @throws AlreadyExistsException the Issue being created already exists
 481  
      * @throws DataValidationErrorException One or more values invalid for this operation
 482  
      * @throws InvalidParameterException One or more parameters invalid
 483  
      * @throws MissingParameterException One or more parameters missing
 484  
      * @throws OperationFailedException unable to complete request
 485  
      * @throws PermissionDeniedException authorization failure
 486  
      * @throws ReadOnlyException an attempt at supplying information
 487  
      *         designated as read only
 488  
      */
 489  
     public IssueInfo createIssue(
 490  
             @WebParam(name = "issueTypeKey") String issueTypeKey,
 491  
             @WebParam(name = "issueInfo") IssueInfo issueInfo, 
 492  
             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
 493  
             throws AlreadyExistsException, DataValidationErrorException, 
 494  
             InvalidParameterException, MissingParameterException, 
 495  
             OperationFailedException, 
 496  
             PermissionDeniedException, ReadOnlyException;;
 497  
 
 498  
     /** 
 499  
      * Updates an existing Issue.
 500  
      *
 501  
      * @param issueId Id of the Issue to be updated
 502  
      * @param issueInfo Details of updates to the Issue
 503  
      *        being updated
 504  
      * @param contextInfo Context information containing the principalId
 505  
      *                and locale information about the caller of service
 506  
      *                operation
 507  
      * @return the details of the Issue just updated
 508  
      * @throws DataValidationErrorException One or more values invalid
 509  
      *         for this operation
 510  
      * @throws DoesNotExistException the Issue does not exist
 511  
      * @throws InvalidParameterException One or more parameters invalid
 512  
      * @throws MissingParameterException One or more parameters missing
 513  
      * @throws OperationFailedException unable to complete request
 514  
      * @throws PermissionDeniedException authorization failure
 515  
      * @throws ReadOnlyException an attempt at supplying information
 516  
      *         designated as read only
 517  
      * @throws VersionMismatchException The action was attempted on an
 518  
      *         out of date version.
 519  
      */
 520  
     public IssueInfo updateIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "issueInfo") IssueInfo issueInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
 521  
 
 522  
     /** 
 523  
      * Deletes an existing Issue.
 524  
      *
 525  
      * @param issueId the Id of the Issue to
 526  
      *        be deleted
 527  
      * @param contextInfo Context information containing the principalId
 528  
      *                and locale information about the caller of service
 529  
      *                operation
 530  
      * @return status of the operation (success, failed)
 531  
      * @throws DoesNotExistException the Issue does not exist
 532  
      * @throws InvalidParameterException One or more parameters invalid
 533  
      * @throws MissingParameterException One or more parameters missing
 534  
      * @throws OperationFailedException unable to complete request
 535  
      * @throws PermissionDeniedException authorization failure
 536  
      */
 537  
     public StatusInfo deleteIssue(@WebParam(name = "issueId") String issueId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 538  
 }