001 /** 002 * Copyright 2005-2012 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.kew.api.document; 017 018 import org.joda.time.DateTime; 019 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException; 020 import org.kuali.rice.core.api.exception.RiceIllegalStateException; 021 import org.kuali.rice.core.api.util.jaxb.DateTimeAdapter; 022 import org.kuali.rice.core.api.util.jaxb.MapStringStringAdapter; 023 import org.kuali.rice.kew.api.KewApiConstants; 024 import org.kuali.rice.kew.api.action.ActionRequest; 025 import org.kuali.rice.kew.api.action.ActionTaken; 026 import org.kuali.rice.kew.api.document.search.DocumentSearchCriteria; 027 import org.kuali.rice.kew.api.document.search.DocumentSearchResults; 028 import org.kuali.rice.kew.api.document.node.RouteNodeInstance; 029 030 import javax.jws.WebMethod; 031 import javax.jws.WebParam; 032 import javax.jws.WebResult; 033 import javax.jws.WebService; 034 import javax.jws.soap.SOAPBinding; 035 import javax.xml.bind.annotation.XmlElement; 036 import javax.xml.bind.annotation.XmlElementWrapper; 037 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 038 import java.math.BigDecimal; 039 import java.util.List; 040 import java.util.Map; 041 042 /** 043 * TODO ... annotate for JAX-WS! 044 * 045 * @author Kuali Rice Team (rice.collab@kuali.org) 046 */ 047 @WebService(name = "workflowDocumentService", targetNamespace = KewApiConstants.Namespaces.KEW_NAMESPACE_2_0) 048 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 049 public interface WorkflowDocumentService { 050 051 /** 052 * Gets a {@link Document} from a documentId. 053 * 054 * <p> 055 * This method will return null if the Document does not exist. 056 * </p> 057 * 058 * @param documentId the unique id of the document to return 059 * @return the document with the passed in id value 060 * @throws RiceIllegalArgumentException if {@code documentId} is null 061 */ 062 @WebMethod(operationName = "getDocument") 063 @WebResult(name = "document") 064 Document getDocument(@WebParam(name = "documentId") String documentId) throws RiceIllegalArgumentException; 065 066 /** 067 * Returns a boolean depending on if a {@link Document} exists with the specified documentId 068 * 069 * <p> 070 * This method will return false if the responsibility does not exist. 071 * </p> 072 * 073 * @param documentId the unique id of the document to check for existence 074 * @return boolean value representative of whether the document exists 075 * @throws RiceIllegalArgumentException if {@code documentId} is null 076 */ 077 @WebMethod(operationName = "doesDocumentExist") 078 @WebResult(name = "document") 079 boolean doesDocumentExist(@WebParam(name = "documentId") String documentId) 080 throws RiceIllegalArgumentException; 081 082 /** 083 * Gets {@link DocumentContent} from a documentId. 084 * 085 * <p> 086 * This method will return null if the document does not exist. 087 * </p> 088 * 089 * @param documentId the unique id of the document content to return 090 * @return the documentContent with the passed in id value 091 * @throws RiceIllegalArgumentException if {@code documentId} is null 092 */ 093 @WebMethod(operationName = "getDocumentContent") 094 @WebResult(name = "documentContent") 095 DocumentContent getDocumentContent(@WebParam(name = "documentId") String documentId) 096 throws RiceIllegalArgumentException; 097 098 /** 099 * Gets a list of root ActionRequests for a given documentId 100 * 101 * @param documentId the unique id of a document 102 * 103 * @return the list of root ActionRequests for a given documentId 104 * 105 * @throws RiceIllegalArgumentException if {@code documentId} is null 106 */ 107 @WebMethod(operationName = "getRootActionRequests") 108 @XmlElementWrapper(name = "rootActionRequests", required = true) 109 @XmlElement(name = "rootActionRequest", required = false) 110 @WebResult(name = "rootActionRequests") 111 List<ActionRequest> getRootActionRequests(@WebParam(name = "documentId") String documentId) 112 throws RiceIllegalArgumentException; 113 114 /** 115 * Gets a list of ActionRequests for a given documentId, nodeName and principalId 116 * 117 * @param documentId the unique id of a document 118 * @param nodeName the name of a RouteNode 119 * @param principalId the unique id of a principal 120 * 121 * @return the list of ActionRequests for a given documentId, nodeName, and principalId 122 * 123 * @throws RiceIllegalArgumentException if {@code documentId} is null 124 */ 125 @WebMethod(operationName = "getActionRequestsForPrincipalAtNode") 126 @XmlElementWrapper(name = "actionRequests", required = true) 127 @XmlElement(name = "actionRequests", required = false) 128 @WebResult(name = "actionRequests") 129 List<ActionRequest> getActionRequestsForPrincipalAtNode(@WebParam(name = "documentId") String documentId, 130 @WebParam(name = "nodeName") String nodeName, @WebParam(name = "principalId") String principalId) 131 throws RiceIllegalArgumentException; 132 133 /** 134 * Gets a list of past {@link ActionTaken} of a {@link Document} with the given documentId 135 * 136 * @param documentId the unique id of a document 137 * 138 * @return the list of past ActionTakens for a given documentId 139 * 140 * @throws RiceIllegalArgumentException if {@code documentId} is null 141 */ 142 @WebMethod(operationName = "getActionRequests") 143 @XmlElementWrapper(name = "actionsTaken", required = true) 144 @XmlElement(name = "actionTaken", required = false) 145 @WebResult(name = "actionsTaken") 146 List<ActionTaken> getActionsTaken(@WebParam(name = "documentId") String documentId) 147 throws RiceIllegalArgumentException; 148 149 150 /** 151 * Gets a {@link DocumentDetail} of a {@link Document} with the given documentTypeName and appId 152 * 153 * @param documentTypeName the name of the DocumentType 154 * @param appId the unique id of the application 155 * 156 * @return a {@link DocumentDetail} for with the given documentTypeName and appId 157 * 158 * @throws RiceIllegalArgumentException if {@code documentTypeName} is null 159 * @throws RiceIllegalArgumentException if {@code appId} is null 160 */ 161 @WebMethod(operationName = "getDocumentDetailByAppId") 162 @WebResult(name = "documentDetail") 163 DocumentDetail getDocumentDetailByAppId(@WebParam(name = "documentTypeName") String documentTypeName, 164 @WebParam(name = "appId") String appId) 165 throws RiceIllegalArgumentException; 166 167 /** 168 * Gets a {@link DocumentDetail} of a {@link Document} with the given documentId 169 * 170 * @param documentId the unique id of the Document 171 * 172 * @return a {@link DocumentDetail} for with the given documentId 173 * 174 * @throws RiceIllegalArgumentException if {@code documentId} is null 175 */ 176 @WebMethod(operationName = "getDocumentDetail") 177 @WebResult(name = "documentDetail") 178 DocumentDetail getDocumentDetail(@WebParam(name = "documentId") String documentId); 179 180 181 /** 182 * Gets a {@link RouteNodeInstance} with the given nodeInstanceId 183 * 184 * @param routeNodeInstanceId the unique id of the {@link RouteNodeInstance} 185 * 186 * @return a {@link DocumentDetail} for with the given documentId 187 * 188 * @throws RiceIllegalArgumentException if {@code nodeInstanceId} is null 189 */ 190 @WebMethod(operationName = "getRouteNodeInstance") 191 @WebResult(name = "routeNodeInstance") 192 RouteNodeInstance getRouteNodeInstance(@WebParam(name = "routeNodeInstanceId") String routeNodeInstanceId) 193 throws RiceIllegalArgumentException; 194 195 /** 196 * Gets a value application document id of a {@link Document} with the given documentId 197 * 198 * @param documentId the unique id of the Document 199 * 200 * @return the value of the applicationDocumentId for the {@link Document} with the given documentId 201 * 202 * @throws RiceIllegalArgumentException if {@code documentId} is null 203 */ 204 @WebMethod(operationName = "getApplicationDocumentId") 205 @WebResult(name = "applicationDocumentId") 206 String getApplicationDocumentId(@WebParam(name = "documentId") String documentId) 207 throws RiceIllegalArgumentException; 208 209 /** 210 * Executes a search for workflow documents using the given criteria and as the principal with the given id. Since 211 * documents can define security which permits access to view certain search results, the given principal id will 212 * be used when evaluating which documents should be filtered from the results because of lack of access. 213 * 214 * @param principalId the id of the principal to execute the search as, if this value is non-null then security 215 * filtering will be executed against the results, if it is null then no filtering will be performed 216 * @param criteria the criteria to use when executing the search 217 * 218 * @return the results of the search, this will never be null but may contain an empty list of results 219 * 220 * @throws RiceIllegalArgumentException if the given criteria is null 221 */ 222 @WebMethod(operationName = "documentSearch") 223 @WebResult(name = "documentSearchResults") 224 DocumentSearchResults documentSearch( 225 @WebParam(name = "principalId") String principalId, 226 @WebParam(name = "criteria") DocumentSearchCriteria criteria) 227 throws RiceIllegalArgumentException; 228 229 /** 230 * Gets a list of all {@link RouteNodeInstance} for a {@link Document} with the given documentId 231 * 232 * @param documentId the unique id of a Document 233 * 234 * @return the list of {@link RouteNodeInstance}s for the {@link Document} with the given documentId 235 * 236 * @throws RiceIllegalArgumentException if {@code documentId} is null 237 */ 238 @WebMethod(operationName = "getRouteNodeInstances") 239 @XmlElementWrapper(name = "routeNodeInstances", required = true) 240 @XmlElement(name = "routeNodeInstance", required = false) 241 @WebResult(name = "routeNodeInstances") 242 List<RouteNodeInstance> getRouteNodeInstances(@WebParam(name = "documentId") String documentId) 243 throws RiceIllegalArgumentException; 244 245 /** 246 * Gets a list of active {@link RouteNodeInstance} for a {@link Document} with the given documentId 247 * 248 * @param documentId the unique id of a Document 249 * 250 * @return the list of active {@link RouteNodeInstance}s for the {@link Document} with the given documentId 251 * 252 * @throws RiceIllegalArgumentException if {@code documentId} is null 253 */ 254 @WebMethod(operationName = "getActiveRouteNodeInstances") 255 @XmlElementWrapper(name = "routeNodeInstances", required = true) 256 @XmlElement(name = "routeNodeInstance", required = false) 257 @WebResult(name = "routeNodeInstances") 258 List<RouteNodeInstance> getActiveRouteNodeInstances(@WebParam(name = "documentId") String documentId) 259 throws RiceIllegalArgumentException; 260 261 /** 262 * Gets a list of terminal {@link RouteNodeInstance}s for a {@link Document} with the given documentId 263 * 264 * @param documentId the unique id of a Document 265 * 266 * @return the list of terminal {@link RouteNodeInstance}s for the {@link Document} with the given documentId 267 * 268 * @throws RiceIllegalArgumentException if {@code documentId} is null 269 */ 270 @WebMethod(operationName = "getTerminalRouteNodeInstances") 271 @XmlElementWrapper(name = "routeNodeInstances", required = true) 272 @XmlElement(name = "routeNodeInstance", required = false) 273 @WebResult(name = "routeNodeInstances") 274 List<RouteNodeInstance> getTerminalRouteNodeInstances(@WebParam(name = "documentId") String documentId) 275 throws RiceIllegalArgumentException; 276 277 /** 278 * Gets a list of current {@link RouteNodeInstance}s for a {@link Document} with the given documentId 279 * 280 * @param documentId the unique id of a Document 281 * 282 * @return the list of current {@link RouteNodeInstance}s for the {@link Document} with the given documentId 283 * 284 * @throws RiceIllegalArgumentException if {@code documentId} is null 285 */ 286 @WebMethod(operationName = "getCurrentRouteNodeInstances") 287 @XmlElementWrapper(name = "routeNodeInstances", required = true) 288 @XmlElement(name = "routeNodeInstance", required = false) 289 @WebResult(name = "routeNodeInstances") 290 List<RouteNodeInstance> getCurrentRouteNodeInstances(@WebParam(name = "documentId") String documentId) 291 throws RiceIllegalArgumentException; 292 293 /** 294 * Gets a list of all previous {@link RouteNodeInstance}'s node names for a {@link Document} with the given documentId 295 * 296 * @param documentId the unique id of a Document 297 * 298 * @return the list of all previous {@link RouteNodeInstance}'s node names for the {@link Document} with the 299 * given documentId 300 * 301 * @throws RiceIllegalArgumentException if {@code documentId} is null 302 */ 303 @WebMethod(operationName = "getPreviousRouteNodeNames") 304 @XmlElementWrapper(name = "previousRouteNodeNames", required = true) 305 @XmlElement(name = "previousRouteNodeName", required = false) 306 @WebResult(name = "previousRouteNodeNames") 307 List<String> getPreviousRouteNodeNames(@WebParam(name = "documentId") String documentId) 308 throws RiceIllegalArgumentException; 309 310 /** 311 * Gets the status value for a {@link Document} with the given documentId 312 * 313 * @param documentId the unique id of a Document 314 * 315 * @return the current status of the {@link Document} with the 316 * given documentId 317 * 318 * @throws RiceIllegalArgumentException if {@code documentId} is null 319 */ 320 @WebMethod(operationName = "getDocumentStatus") 321 @WebResult(name = "documentStatus") 322 DocumentStatus getDocumentStatus(@WebParam(name = "documentId") String documentId) 323 throws RiceIllegalArgumentException; 324 325 326 /** 327 * Gets a list of principalId values for a {@link Document} with the given documentId 328 * and action request code that have pending action requests 329 * 330 * @param actionRequestedCd code for the pending action requested 331 * @param documentId the unique id of a Document 332 * 333 * @return a list of principalIds for the {@link Document} with the 334 * given parameters and have a pending action request 335 * 336 * @throws RiceIllegalArgumentException if {@code documentId} is null 337 * @throws RiceIllegalArgumentException if {@code actionRequestCd} is null 338 */ 339 @WebMethod(operationName = "getPrincipalIdsWithPendingActionRequestByActionRequestedAndDocId") 340 @XmlElementWrapper(name = "principalIds", required = true) 341 @XmlElement(name = "principalId", required = false) 342 @WebResult(name = "principalIds") 343 List<String> getPrincipalIdsWithPendingActionRequestByActionRequestedAndDocId( 344 @WebParam(name = "actionRequestedCd") String actionRequestedCd, 345 @WebParam(name = "documentId") String documentId) 346 throws RiceIllegalArgumentException; 347 348 349 /** 350 * Gets the {@link Document} initiator's principalId with the given documentId 351 * 352 * @param documentId the unique id of a Document 353 * 354 * @return the {@link Document} initiator's principalId 355 * 356 * @throws RiceIllegalArgumentException if {@code documentId} is null 357 */ 358 @WebMethod(operationName = "getDocumentInitiatorPrincipalId") 359 @WebResult(name = "principalId") 360 String getDocumentInitiatorPrincipalId(@WebParam(name = "documentId") String documentId) 361 throws RiceIllegalArgumentException; 362 363 /** 364 * Gets the {@link Document}'s 'routed by' principalId with the given documentId 365 * Returns null if the document is not found 366 * 367 * @param documentId the unique id of a Document 368 * 369 * @return the {@link Document}'s 'routed by' principalId 370 * 371 * @throws RiceIllegalArgumentException if {@code documentId} is null 372 */ 373 @WebMethod(operationName = "getRoutedByPrincipalIdByDocumentId") 374 @WebResult(name = "principalId") 375 String getRoutedByPrincipalIdByDocumentId(@WebParam(name = "documentId") String documentId) 376 throws RiceIllegalArgumentException; 377 378 /** 379 * Does a direct search for searchableAttributes without going through the document search 380 * This returns a list of String values for String searchableAttributes 381 * 382 * @param documentId the unique id of a Document 383 * @param key the searchableAttributes key value 384 * 385 * @return a list of String values for the {@link Document} with the 386 * given documentId and searchable attribute key 387 * 388 * @throws RiceIllegalArgumentException if {@code documentId} is null 389 * @throws RiceIllegalArgumentException if {@code key} is null 390 */ 391 @WebMethod(operationName = "getSearchableAttributeStringValuesByKey") 392 @XmlElementWrapper(name = "searchableAttributeStringValues", required = true) 393 @XmlElement(name = "searchableAttributeStringValue", required = false) 394 @WebResult(name = "searchableAttributeStringValues") 395 List<String> getSearchableAttributeStringValuesByKey(@WebParam(name = "documentId") String documentId, 396 @WebParam(name = "key") String key) 397 throws RiceIllegalArgumentException; 398 399 /** 400 * Does a direct search for searchableAttributes without going through the document search 401 * This returns a list of DateTime values for date/time searchableAttributes 402 * 403 * @param documentId the unique id of a Document 404 * @param key the searchableAttributes key value 405 * 406 * @return a list of DateTime values for the {@link Document} with the 407 * given documentId and searchable attribute key 408 * 409 * @throws RiceIllegalArgumentException if {@code documentId} is null 410 * @throws RiceIllegalArgumentException if {@code key} is null 411 */ 412 @WebMethod(operationName = "getSearchableAttributeDateTimeValuesByKey") 413 @XmlElementWrapper(name = "searchableAttributeDateTimeValues", required = true) 414 @XmlElement(name = "searchableAttributeDateTimeValue", required = false) 415 @WebResult(name = "searchableAttributeDateTimeValues") 416 @XmlJavaTypeAdapter(value = DateTimeAdapter.class) 417 List<DateTime> getSearchableAttributeDateTimeValuesByKey(@WebParam(name = "documentId") String documentId, 418 @WebParam(name = "key") String key) 419 throws RiceIllegalArgumentException; 420 421 /** 422 * Does a direct search for searchableAttributes without going through the document search 423 * This returns a list of BigDecimal values for decimal searchableAttributes 424 * 425 * @param documentId the unique id of a Document 426 * @param key the searchableAttributes key value 427 * 428 * @return a list of BigDecimal values for the {@link Document} with the 429 * given documentId and searchable attribute key 430 * 431 * @throws RiceIllegalArgumentException if {@code documentId} is null 432 * @throws RiceIllegalArgumentException if {@code key} is null 433 */ 434 @WebMethod(operationName = "getSearchableAttributeFloatValuesByKey") 435 @XmlElementWrapper(name = "searchableAttributeBigDecimalValues", required = true) 436 @XmlElement(name = "searchableAttributeBigDecimalValue", required = false) 437 @WebResult(name = "searchableAttributeBigDecimalValues") 438 List<BigDecimal> getSearchableAttributeFloatValuesByKey(@WebParam(name = "documentId") String documentId, 439 @WebParam(name = "key") String key) 440 throws RiceIllegalArgumentException; 441 442 /** 443 * Does a direct search for searchableAttributes without going through the document search 444 * This returns a list of Long values for long searchableAttributes 445 * 446 * @param documentId the unique id of a Document 447 * @param key the searchableAttributes key value 448 * 449 * @return a list of BigDecimal values for the {@link Document} with the 450 * given documentId and searchable attribute key 451 * 452 * @throws RiceIllegalArgumentException if {@code documentId} is null 453 * @throws RiceIllegalArgumentException if {@code key} is null 454 */ 455 @WebMethod(operationName = "getSearchableAttributeLongValuesByKey") 456 @XmlElementWrapper(name = "searchableAttributeLongValues", required = true) 457 @XmlElement(name = "searchableAttributeLongValue", required = false) 458 @WebResult(name = "searchableAttributeLongValues") 459 List<Long> getSearchableAttributeLongValuesByKey(@WebParam(name = "documentId") String documentId, 460 @WebParam(name = "key") String key) 461 throws RiceIllegalArgumentException; 462 463 /** 464 * Gets a list of DocumentStatusTransitions for the {@link Document} with the given documentId 465 * 466 * @param documentId the unique id of a Document 467 * 468 * @return a list of DocumentStatusTransitions for the {@link Document} with the 469 * given documentId 470 * 471 * @throws RiceIllegalArgumentException if {@code documentId} is null 472 */ 473 @WebMethod(operationName = "getDocumentStatusTransitionHistory") 474 @XmlElementWrapper(name = "documentStatusTransitions", required = true) 475 @XmlElement(name = "documentStatusTransition", required = false) 476 @WebResult(name = "documentStatusTransitions") 477 List<DocumentStatusTransition> getDocumentStatusTransitionHistory(@WebParam(name = "documentId") String documentId) 478 throws RiceIllegalArgumentException; 479 480 481 /** 482 * Saves the passed in {@link DocumentLink}. If the {@link DocumentLink}'s id field is created. This method 483 * actually creates two different links in the database (one from the document being 484 * linked to the target and vice-versa). If the links already exist, then the call is ignored. 485 * 486 * @param documentLink the unique id of a Document 487 * 488 * @return the newly saved {@link DocumentLink} 489 * 490 * @throws RiceIllegalArgumentException if {@code documentLink} is null 491 * @throws RiceIllegalArgumentException if {@code documentLink}'s is id value is populated 492 */ 493 @WebMethod(operationName = "addDocumentLink") 494 @WebResult(name = "documentLink") 495 DocumentLink addDocumentLink(@WebParam(name = "documentLink") DocumentLink documentLink) throws RiceIllegalArgumentException; 496 497 /** 498 * Removes the {@link DocumentLink} with the given documentLinkId. 499 * 500 * @param documentLinkId the unique id of a Document 501 * 502 * @return the deleted {@link DocumentLink} 503 * 504 * @throws RiceIllegalArgumentException if {@code documentLink} is null 505 * @throws RiceIllegalStateException if no DocumentLink with the passed in{@code documentLink} exist 506 */ 507 @WebMethod(operationName = "deleteDocumentLink") 508 @WebResult(name = "documentLink") 509 DocumentLink deleteDocumentLink(@WebParam(name = "documentLinkId") String documentLinkId) throws RiceIllegalArgumentException; 510 511 512 /** 513 * Removes all {@link DocumentLink}s for the given {@link Document} with the given originatingDocumentId. 514 * 515 * @param originatingDocumentId the unique id of the originating Document of the document links to delete 516 * 517 * @return a list of the deleted {@link DocumentLink}s 518 * 519 * @throws RiceIllegalArgumentException if {@code documentLink} is null 520 */ 521 @WebMethod(operationName = "deleteDocumentLinksByDocumentId") 522 @XmlElementWrapper(name = "documentLinks", required = true) 523 @XmlElement(name = "documentLink", required = false) 524 @WebResult(name = "documentLinks") 525 List<DocumentLink> deleteDocumentLinksByDocumentId(@WebParam(name = "originatingDocumentId") String originatingDocumentId) throws RiceIllegalArgumentException; 526 527 /** 528 * Gets a list of all {@link DocumentLink}s for outgoing links from the {@link Document} with the given documentId. 529 * 530 * @param originatingDocumentId the unique id of the originating Document of the document links to retrieve 531 * 532 * @return a list of the outgoing {@link DocumentLink}s for the originating document 533 * 534 * @throws RiceIllegalArgumentException if {@code originatingDocumentId} is null 535 */ 536 @WebMethod(operationName = "getOutgoingDocumentLinks") 537 @XmlElementWrapper(name = "documentLinks", required = true) 538 @XmlElement(name = "documentLink", required = false) 539 @WebResult(name = "documentLinks") 540 List<DocumentLink> getOutgoingDocumentLinks(@WebParam(name = "originatingDocumentId") String originatingDocumentId) throws RiceIllegalArgumentException; 541 542 /** 543 * Gets a list of all {@link DocumentLink}s for incoming links from the {@link Document} with the given documentId. 544 * 545 * @param originatingDocumentId the unique id of the incoming Document of the document links to retrieve 546 * 547 * @return a list of the outgoing {@link DocumentLink}s for the incoming document 548 * 549 * @throws RiceIllegalArgumentException if {@code originatingDocumentId} is null 550 */ 551 @WebMethod(operationName = "getIncomingDocumentLinks") 552 @XmlElementWrapper(name = "documentLinks", required = true) 553 @XmlElement(name = "documentLink", required = false) 554 @WebResult(name = "documentLinks") 555 List<DocumentLink> getIncomingDocumentLinks(@WebParam(name = "originatingDocumentId") String originatingDocumentId) throws RiceIllegalArgumentException; 556 557 /** 558 * Gets the {@link DocumentLink} for with the given documentLinkId. 559 * 560 * @param documentLinkId the unique id of the {@link DocumentLink} to retrieve 561 * 562 * @return a {@link DocumentLink} with the passed in documentLinkId 563 * 564 * @throws RiceIllegalArgumentException if {@code documentLinkId} is null 565 */ 566 @WebMethod(operationName = "getDocumentLink") 567 @WebResult(name = "documentLinks") 568 DocumentLink getDocumentLink(@WebParam(name = "documentLinkId") String documentLinkId) throws RiceIllegalArgumentException; 569 570 }