001 /** 002 * Copyright 2005-2011 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.ken.service; 017 018 import org.kuali.rice.core.api.util.xml.XmlException; 019 import org.kuali.rice.ken.bo.Notification; 020 import org.kuali.rice.ken.bo.NotificationResponse; 021 import org.xml.sax.SAXException; 022 023 import javax.xml.parsers.ParserConfigurationException; 024 import java.io.IOException; 025 import java.io.InputStream; 026 027 /** 028 * Notification Message Content service - handles parsing the notification XML message and also marshalling out BOs for the response. 029 * @see <a href="http://wiki.library.cornell.edu/wiki/display/notsys/Hi-Level+Service+Interface+Definitions#Hi-LevelServiceInterfaceDefinitions-NotificationMessageContentService">NotificationMessageContentService</a> 030 * @author Kuali Rice Team (rice.collab@kuali.org) 031 */ 032 public interface NotificationMessageContentService { 033 /** 034 * Parses a Notification request message into business objects. Performs syntactic and semantic validation. 035 * This method takes an InputStream. 036 * @param stream request message stream 037 * @return Notification business object 038 * @throws SAXException 039 * @throws ParserConfigurationException 040 * @throws IOException 041 * @throws XmlException 042 */ 043 public Notification parseNotificationRequestMessage(InputStream stream) throws IOException, XmlException; 044 045 /** 046 * Parses a Notification request message into business objects. Performs syntactic and semantic validation. 047 * This method takes a String of XML. 048 * @param notificationMessageAsXml 049 * @return 050 * @throws IOException 051 * @throws XmlException 052 */ 053 public Notification parseNotificationRequestMessage(String notificationMessageAsXml) throws IOException, XmlException; 054 055 /** 056 * Generates a Notification response message 057 * @param response 058 * @return String XML representation of a Notification response object 059 */ 060 public String generateNotificationResponseMessage(NotificationResponse response); 061 062 /** 063 * This method is responsible for marshalling out the passed in Notification object in and XML representation. 064 * @param notification 065 * @return String of XML. 066 */ 067 public String generateNotificationMessage(Notification notification); 068 069 /** 070 * This method is responsible for marshalling out the passed in Notification object in and XML representation, with 071 * the addition of adding the specific recipient to the recipients list and removing the others. 072 * @param notification 073 * @param userRecipientId 074 * @return String of XML. 075 */ 076 public String generateNotificationMessage(Notification notification, String userRecipientId); 077 078 /** 079 * This method parses out the serialized XML version of Notification BO and populates a Notification BO with it. 080 * @param xmlAsBytes 081 * @return Notification 082 * @throws Exception 083 */ 084 public Notification parseSerializedNotificationXml(byte[] xmlAsBytes) throws Exception; 085 }