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 }