This project has retired. For details please refer to its
Attic page.
001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.oozie.client.event.message;
019
020 import java.util.Date;
021 import java.util.HashMap;
022 import java.util.Map;
023
024 import javax.jms.JMSException;
025 import javax.jms.Message;
026
027 import org.apache.oozie.AppType;
028 import org.apache.oozie.client.event.Event.MessageType;
029 import org.apache.oozie.client.event.JobEvent.EventStatus;
030 import org.apache.oozie.client.event.JobEvent;
031 import org.apache.oozie.client.event.jms.JMSHeaderConstants;
032 import org.codehaus.jackson.annotate.JsonIgnore;
033 import org.codehaus.jackson.annotate.JsonProperty;
034 import org.codehaus.jackson.map.annotate.JsonSerialize;
035
036
037 /**
038 * Class holding attributes related to a job message
039 *
040 */
041 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
042 public class JobMessage extends EventMessage {
043
044 @JsonProperty
045 private String id;
046 @JsonProperty
047 private String parentId;
048 @JsonProperty
049 private Date startTime;
050 @JsonProperty
051 private Date endTime;
052
053 private Map<String, String> jmsMessageProperties = new HashMap<String, String>();
054 private JobEvent.EventStatus eventStatus;
055 private String appName;
056 private String user;
057
058 /**
059 * Default constructor
060 */
061 public JobMessage() {
062 // Default constructor for jackson
063 }
064
065 /**
066 * Constructs a job message
067 *
068 * @param eventStatus the event status
069 * @param appType the appType for event
070 * @param id the id of job
071 * @param parentId the parent id of job
072 * @param startTime the start time of job
073 * @param endTime the end time of job
074 * @param user user of the job
075 * @param appName appName for job
076 */
077 public JobMessage(JobEvent.EventStatus eventStatus, AppType appType, String id, String parentId, Date startTime,
078 Date endTime, String user, String appName) {
079 super(MessageType.JOB, appType);
080 this.eventStatus = eventStatus;
081 this.id = id;
082 this.parentId = parentId;
083 this.startTime = startTime;
084 this.appName = appName;
085 this.user = user;
086 this.endTime = endTime;
087
088 jmsMessageProperties = new HashMap<String, String>();
089 jmsMessageProperties.put(JMSHeaderConstants.APP_TYPE, appType.toString());
090 jmsMessageProperties.put(JMSHeaderConstants.MESSAGE_TYPE, MessageType.JOB.toString());
091 jmsMessageProperties.put(JMSHeaderConstants.EVENT_STATUS, eventStatus.toString());
092 jmsMessageProperties.put(JMSHeaderConstants.APP_NAME, appName);
093 jmsMessageProperties.put(JMSHeaderConstants.USER, user);
094 }
095
096 /**
097 * Sets the Job id for message
098 *
099 * @param id the job id
100 */
101 public void setId(String id) {
102 this.id = id;
103 }
104
105 /**
106 * Gets the job id
107 *
108 * @return the Job id
109 */
110 public String getId() {
111 return id;
112 }
113
114 /**
115 * Sets the parent job id for message
116 *
117 * @param parentId the parent job id
118 */
119 public void setParentId(String parentId) {
120 this.parentId = parentId;
121 }
122
123 /**
124 * Gets the parent job id
125 *
126 * @return the parentId
127 */
128 public String getParentId() {
129 return parentId;
130 }
131
132 /**
133 * Sets the job start time for message
134 *
135 * @param startTime
136 */
137 public void setStartTime(Date startTime) {
138 this.startTime = startTime;
139 }
140
141 /**
142 * Gets the job start time
143 *
144 * @return the start time
145 */
146 public Date getStartTime() {
147 return startTime;
148 }
149
150 /**
151 * Sets the job end time for message
152 *
153 * @param endTime
154 */
155 public void setEndTime(Date endTime) {
156 this.endTime = endTime;
157 }
158
159 /**
160 * Gets the job end time
161 *
162 * @return the end time
163 */
164 public Date getEndTime() {
165 return endTime;
166 }
167
168 /**
169 * Sets the job's app name for message
170 *
171 * @param appName
172 */
173 public void setAppName(String appName) {
174 this.appName = appName;
175 }
176
177 /**
178 * Gets the job's app name
179 *
180 * @return the app name
181 */
182 @JsonIgnore
183 public String getAppName() {
184 return appName;
185 }
186
187 /**
188 * Sets the JMS selectors for message
189 *
190 * @param properties the jms selector key value pair
191 */
192 void setMessageProperties(Map<String, String> properties) {
193 jmsMessageProperties = properties;
194 }
195
196 /**
197 * Gets the message properties
198 *
199 * @return the message properties
200 */
201 @JsonIgnore
202 public Map<String, String> getMessageProperties() {
203 return jmsMessageProperties;
204 }
205
206 /**
207 * sets the job user for the msg
208 *
209 * @param user
210 */
211 public void setUser(String user) {
212 this.user = user;
213 }
214
215 /**
216 * Gets the job user
217 *
218 * @return the user
219 */
220 @JsonIgnore
221 public String getUser() {
222 return user;
223 }
224
225 /**
226 * Sets the event status
227 *
228 * @param eventStatus
229 */
230 public void setEventStatus(JobEvent.EventStatus eventStatus) {
231 this.eventStatus = eventStatus;
232 }
233
234 /**
235 * Gets the event status
236 *
237 * @return the event status
238 */
239 @JsonIgnore
240 public JobEvent.EventStatus getEventStatus() {
241 return eventStatus;
242 }
243
244 @Override
245 public void setProperties(Message message) throws JMSException {
246 super.setProperties(message);
247 setEventStatus(EventStatus.valueOf(message.getStringProperty(JMSHeaderConstants.EVENT_STATUS)));
248 setAppName(message.getStringProperty(JMSHeaderConstants.APP_NAME));
249 setUser(message.getStringProperty(JMSHeaderConstants.USER));
250 }
251 }