1/* 2* Conditions Of Use 3* 4* This software was developed by employees of the National Institute of 5* Standards and Technology (NIST), an agency of the Federal Government. 6* Pursuant to title 15 Untied States Code Section 105, works of NIST 7* employees are not subject to copyright protection in the United States 8* and are considered to be in the public domain. As a result, a formal 9* license is not needed to use the software. 10* 11* This software is provided by NIST as a service and is expressly 12* provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 13* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 15* AND DATA ACCURACY. NIST does not warrant or make any representations 16* regarding the use of the software or the results thereof, including but 17* not limited to the correctness, accuracy, reliability or usefulness of 18* the software. 19* 20* Permission to use this software is contingent upon your acceptance 21* of the terms of this agreement 22* 23* . 24* 25*/ 26/******************************************************************************* 27* Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * 28*******************************************************************************/ 29package gov.nist.javax.sip.header; 30 31import javax.sip.header.*; 32import java.text.ParseException; 33 34/** 35* Event SIP Header. 36* 37*@version 1.2 $Revision: 1.7 $ $Date: 2007/06/28 15:08:42 $ 38*@since 1.1 39* 40*@author M. Ranganathan <br/> 41*@author Olivier Deruelle <br/> 42* 43* 44*/ 45public class Event extends ParametersHeader implements EventHeader { 46 47 /** 48 * Comment for <code>serialVersionUID</code> 49 */ 50 private static final long serialVersionUID = -6458387810431874841L; 51 52 protected String eventType; 53 54 /** 55 * Creates a new instance of Event 56 */ 57 public Event() { 58 super(EVENT); 59 } 60 61 /** 62 * Sets the eventType to the newly supplied eventType string. 63 * 64 * @param eventType - the new string defining the eventType supported 65 * in this EventHeader 66 * @throws ParseException which signals that an error has been reached 67 * unexpectedly while parsing the eventType value. 68 */ 69 public void setEventType(String eventType) throws ParseException { 70 if (eventType == null) 71 throw new NullPointerException(" the eventType is null"); 72 this.eventType = eventType; 73 } 74 75 /** 76 * Gets the eventType of the EventHeader. 77 * 78 * @return the string object identifing the eventType of EventHeader. 79 */ 80 public String getEventType() { 81 return eventType; 82 } 83 84 /** 85 * Sets the id to the newly supplied <var>eventId</var> string. 86 * 87 * @param eventId - the new string defining the eventId of this EventHeader 88 * @throws ParseException which signals that an error has been reached 89 * unexpectedly while parsing the eventId value. 90 */ 91 public void setEventId(String eventId) throws ParseException { 92 if (eventId == null) 93 throw new NullPointerException(" the eventId parameter is null"); 94 setParameter(ParameterNames.ID, eventId); 95 } 96 97 /** 98 * Gets the id of the EventHeader. This method may return null if the 99 * "eventId" is not set. 100 * @return the string object identifing the eventId of EventHeader. 101 */ 102 public String getEventId() { 103 return getParameter(ParameterNames.ID); 104 } 105 106 /** 107 * Encode in canonical form. 108 * @return String 109 */ 110 public String encodeBody() { 111 return encodeBody(new StringBuffer()).toString(); 112 } 113 114 protected StringBuffer encodeBody(StringBuffer buffer) { 115 if (eventType != null) 116 buffer.append(eventType); 117 118 if (!parameters.isEmpty()) { 119 buffer.append(SEMICOLON); 120 this.parameters.encode(buffer); 121 } 122 return buffer; 123 } 124 125 /** 126 * Return true if the given event header matches the supplied one. 127 * 128 * @param matchTarget -- event header to match against. 129 */ 130 public boolean match(Event matchTarget) { 131 if (matchTarget.eventType == null && this.eventType != null) 132 return false; 133 else if (matchTarget.eventType != null && this.eventType == null) 134 return false; 135 else if (this.eventType == null && matchTarget.eventType == null) 136 return false; 137 else if (getEventId() == null && matchTarget.getEventId() != null) 138 return false; 139 else if (getEventId() != null && matchTarget.getEventId() == null) 140 return false; 141 return matchTarget.eventType.equalsIgnoreCase(this.eventType) 142 && ((this.getEventId() == matchTarget.getEventId()) 143 || this.getEventId().equalsIgnoreCase(matchTarget.getEventId())); 144 } 145} 146