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     */
017    package org.apache.camel.management.event;
018    
019    import java.util.EventObject;
020    
021    import org.apache.camel.Exchange;
022    import org.apache.camel.Processor;
023    
024    /**
025     * @version $Revision: 897885 $
026     */
027    public class ExchangeFailureHandledEvent extends EventObject {
028        private static final long serialVersionUID = -7554809462006009547L;
029    
030        private final Exchange exchange;
031        private final Processor failureHandler;
032        private final boolean deadLetterChannel;
033        private final boolean handled;
034    
035        public ExchangeFailureHandledEvent(Exchange source, Processor failureHandler, boolean deadLetterChannel) {
036            super(source);
037            this.exchange = source;
038            this.failureHandler = failureHandler;
039            this.deadLetterChannel = deadLetterChannel;
040            this.handled = exchange.getProperty(Exchange.ERRORHANDLER_HANDLED, false, Boolean.class);
041        }
042    
043        public Exchange getExchange() {
044            return exchange;
045        }
046    
047        public Processor getFailureHandler() {
048            return failureHandler;
049        }
050    
051        public boolean isDeadLetterChannel() {
052            return deadLetterChannel;
053        }
054    
055        public boolean isHandled() {
056            return handled;
057        }
058    
059        @Override
060        public String toString() {
061            if (isDeadLetterChannel()) {
062                return exchange.getExchangeId() + " exchange failed: " + exchange + " but was handled by dead letter channel: " + failureHandler;
063            } else {
064                return exchange.getExchangeId() + " exchange failed: " + exchange + " but was processed by: " + failureHandler;
065            }
066        }
067    }