001/** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.camel.spi; 018 019import org.apache.camel.CamelContext; 020import org.apache.camel.Endpoint; 021import org.apache.camel.Exchange; 022import org.apache.camel.Processor; 023import org.apache.camel.Route; 024 025/** 026 * This interface is implemented by all events. 027 */ 028public interface CamelEvent { 029 030 enum Type { 031 CamelContextResumed, 032 CamelContextResumeFailure, 033 CamelContextResuming, 034 CamelContextStarted, 035 CamelContextStarting, 036 CamelContextStartupFailure, 037 CamelContextStopFailure, 038 CamelContextStopped, 039 CamelContextStopping, 040 CamelContextSuspended, 041 CamelContextSuspending, 042 ExchangeCompleted, 043 ExchangeCreated, 044 ExchangeFailed, 045 ExchangeFailureHandled, 046 ExchangeFailureHandling, 047 ExchangeRedelivery, 048 ExchangeSending, 049 ExchangeSent, 050 RouteAdded, 051 RouteRemoved, 052 RouteStarted, 053 RouteStopped, 054 ServiceStartupFailure, 055 ServiceStopFailure, 056 Custom 057 } 058 059 Type getType(); 060 061 Object getSource(); 062 063 /** 064 * This interface is implemented by all events that contain an exception and is used to 065 * retrieve the exception in a universal way. 066 */ 067 interface FailureEvent extends CamelEvent { 068 069 Throwable getCause(); 070 071 } 072 073 interface CamelContextEvent extends CamelEvent { 074 075 CamelContext getContext(); 076 077 default Object getSource() { 078 return getContext(); 079 } 080 081 } 082 083 interface CamelContextResumedEvent extends CamelContextEvent { 084 default Type getType() { 085 return Type.CamelContextResumed; 086 } 087 } 088 089 interface CamelContextResumeFailureEvent extends CamelContextEvent, FailureEvent { 090 default Type getType() { 091 return Type.CamelContextResumeFailure; 092 } 093 } 094 095 interface CamelContextResumingEvent extends CamelContextEvent { 096 default Type getType() { 097 return Type.CamelContextResuming; 098 } 099 } 100 101 interface CamelContextStartedEvent extends CamelContextEvent { 102 default Type getType() { 103 return Type.CamelContextStarted; 104 } 105 } 106 107 interface CamelContextStartingEvent extends CamelContextEvent { 108 default Type getType() { 109 return Type.CamelContextStarting; 110 } 111 } 112 113 interface CamelContextStartupFailureEvent extends CamelContextEvent, FailureEvent { 114 default Type getType() { 115 return Type.CamelContextStartupFailure; 116 } 117 } 118 119 interface CamelContextStopFailureEvent extends CamelContextEvent, FailureEvent { 120 default Type getType() { 121 return Type.CamelContextStopFailure; 122 } 123 } 124 125 interface CamelContextStoppedEvent extends CamelContextEvent { 126 default Type getType() { 127 return Type.CamelContextStopped; 128 } 129 } 130 131 interface CamelContextStoppingEvent extends CamelContextEvent { 132 default Type getType() { 133 return Type.CamelContextStopping; 134 } 135 } 136 137 interface CamelContextSuspendedEvent extends CamelContextEvent { 138 default Type getType() { 139 return Type.CamelContextSuspended; 140 } 141 } 142 143 interface CamelContextSuspendingEvent extends CamelContextEvent { 144 default Type getType() { 145 return Type.CamelContextSuspending; 146 } 147 } 148 149 interface ExchangeEvent extends CamelEvent { 150 151 Exchange getExchange(); 152 153 default Object getSource() { 154 return getExchange(); 155 } 156 } 157 158 interface ExchangeCompletedEvent extends ExchangeEvent { 159 default Type getType() { 160 return Type.ExchangeCompleted; 161 } 162 } 163 164 interface ExchangeCreatedEvent extends ExchangeEvent { 165 default Type getType() { 166 return Type.ExchangeCreated; 167 } 168 } 169 170 interface ExchangeFailedEvent extends ExchangeEvent, FailureEvent { 171 default Type getType() { 172 return Type.ExchangeFailed; 173 } 174 175 } 176 177 interface ExchangeFailureEvent extends ExchangeEvent { 178 179 Processor getFailureHandler(); 180 181 boolean isDeadLetterChannel(); 182 183 String getDeadLetterUri(); 184 185 } 186 187 interface ExchangeFailureHandledEvent extends ExchangeFailureEvent { 188 default Type getType() { 189 return Type.ExchangeFailureHandled; 190 } 191 } 192 193 interface ExchangeFailureHandlingEvent extends ExchangeFailureEvent { 194 default Type getType() { 195 return Type.ExchangeFailureHandling; 196 } 197 } 198 199 interface ExchangeRedeliveryEvent extends ExchangeEvent { 200 201 int getAttempt(); 202 203 default Type getType() { 204 return Type.ExchangeRedelivery; 205 } 206 } 207 208 interface ExchangeSendingEvent extends ExchangeEvent { 209 210 Endpoint getEndpoint(); 211 212 default Type getType() { 213 return Type.ExchangeSending; 214 } 215 } 216 217 interface ExchangeSentEvent extends ExchangeEvent { 218 219 Endpoint getEndpoint(); 220 221 long getTimeTaken(); 222 223 default Type getType() { 224 return Type.ExchangeSent; 225 } 226 } 227 228 interface RouteEvent extends CamelEvent { 229 230 Route getRoute(); 231 232 default Object getSource() { 233 return getRoute(); 234 } 235 } 236 237 interface RouteAddedEvent extends RouteEvent { 238 default Type getType() { 239 return Type.RouteAdded; 240 } 241 } 242 243 interface RouteRemovedEvent extends RouteEvent { 244 default Type getType() { 245 return Type.RouteRemoved; 246 } 247 } 248 249 interface RouteStartedEvent extends RouteEvent { 250 default Type getType() { 251 return Type.RouteStarted; 252 } 253 } 254 255 interface RouteStoppedEvent extends RouteEvent { 256 default Type getType() { 257 return Type.RouteStopped; 258 } 259 } 260 261 interface ServiceEvent extends CamelEvent { 262 263 Object getService(); 264 265 default Object getSource() { 266 return getService(); 267 } 268 } 269 270 interface ServiceStartupFailureEvent extends ServiceEvent, FailureEvent { 271 default Type getType() { 272 return Type.ServiceStartupFailure; 273 } 274 } 275 276 interface ServiceStopFailureEvent extends ServiceEvent, FailureEvent { 277 default Type getType() { 278 return Type.ServiceStopFailure; 279 } 280 } 281 282}