Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
NotificationService |
|
| 1.0;1 |
1 | /* | |
2 | * Copyright 2007 The Kuali Foundation | |
3 | * | |
4 | * Licensed under the Educational Community License, Version 2.0 (the "License"); | |
5 | * you may not use this file except in compliance with the License. | |
6 | * You may obtain a copy of the License at | |
7 | * | |
8 | * http://www.opensource.org/licenses/ecl2.php | |
9 | * | |
10 | * Unless required by applicable law or agreed to in writing, software | |
11 | * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | * See the License for the specific language governing permissions and | |
14 | * limitations under the License. | |
15 | */ | |
16 | package org.kuali.rice.ken.service; | |
17 | ||
18 | import java.io.IOException; | |
19 | import java.util.Collection; | |
20 | ||
21 | import org.kuali.rice.ken.bo.Notification; | |
22 | import org.kuali.rice.ken.bo.NotificationResponse; | |
23 | import org.kuali.rice.ken.exception.InvalidXMLException; | |
24 | ||
25 | /** | |
26 | * The NotificationService class is responsible for processing notification messages | |
27 | * that come into the system. It also is able to retrieve notifications that have | |
28 | * already been entered/processed by the system. | |
29 | * | |
30 | * @author Kuali Rice Team (rice.collab@kuali.org) | |
31 | */ | |
32 | public interface NotificationService { | |
33 | /** | |
34 | * This method allows consumers to send notification messages. This particular service | |
35 | * accepts the XML format of the notification and then marshals it out into the actual | |
36 | * business object construct, for further processing. The response is also sent back as | |
37 | * a String of XML. | |
38 | * @param notificationMessageAsXml | |
39 | * @return NotificationResponse response object | |
40 | */ | |
41 | public NotificationResponse sendNotification(String notificationMessageAsXml) throws IOException, InvalidXMLException; | |
42 | ||
43 | /** | |
44 | * This method allows consumers to send notification messages. This particular service | |
45 | * accepts the actual business object. | |
46 | * @param notification | |
47 | * @return NotificationResponse | |
48 | */ | |
49 | public NotificationResponse sendNotification(Notification notification); | |
50 | ||
51 | /** | |
52 | * This method will retrieve a Notification object from the system, given the id of the | |
53 | * actual notification record. | |
54 | * @param id | |
55 | * @return Notification | |
56 | */ | |
57 | public Notification getNotification(Long id); | |
58 | ||
59 | /** | |
60 | * This method will retrieve a collection of notifications given a contentTypeName and recipientId. | |
61 | * @param contentTypeName the name of the content type | |
62 | * @param recipientId the recipient id | |
63 | * @return Collection of notifications | |
64 | */ | |
65 | public Collection<Notification> getNotificationsForRecipientByType(String contentTypeName, String recipientId); | |
66 | ||
67 | /** | |
68 | * This method will "dismiss"/remove a NotificationMessageDelivery with the specified cause. | |
69 | * @param id the id of the NotificationMessageDelivery that was acted upon | |
70 | * @param user the user or entity that performed the dismissal | |
71 | * @param cause the cause of the dismissal (e.g. an end user action or auto-removal by the system) | |
72 | */ | |
73 | public void dismissNotificationMessageDelivery(Long id, String user, String cause); | |
74 | ||
75 | ||
76 | /** | |
77 | * This method is responsible for atomically finding all untaken, unresolved notifications that are ready to be sent, | |
78 | * marking them as taken and returning them to the caller for processing. | |
79 | * NOTE: it is important that this method execute in a SEPARATE dedicated transaction; either the caller should | |
80 | * NOT be wrapped by Spring declarative transaction and this service should be wrapped (which is the case), or | |
81 | * the caller should arrange to invoke this from within a newly created transaction). | |
82 | * @return a list of notifications to be resolved that have been marked as taken by the caller | |
83 | */ | |
84 | public Collection<Notification> takeNotificationsForResolution(); | |
85 | ||
86 | /** | |
87 | * Unlocks specified notification | |
88 | * @param notification the notification object to unlock | |
89 | */ | |
90 | public void unlockNotification(Notification notification); | |
91 | } |