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.mbean;
018    
019    import java.util.ArrayList;
020    import java.util.List;
021    import javax.management.MBeanNotificationInfo;
022    import javax.management.NotificationBroadcasterSupport;
023    
024    import org.apache.camel.CamelContext;
025    import org.apache.camel.api.management.JmxNotificationBroadcasterAware;
026    import org.apache.camel.spi.EventNotifier;
027    import org.apache.camel.spi.ManagementStrategy;
028    
029    /**
030     * @version 
031     */
032    public class ManagedEventNotifier extends NotificationBroadcasterSupport implements ManagedEventNotifierMBean {
033        private final CamelContext context;
034        private final EventNotifier eventNotifier;
035    
036        public ManagedEventNotifier(CamelContext context, EventNotifier eventNotifier) {
037            this.context = context;
038            this.eventNotifier = eventNotifier;
039            if (eventNotifier instanceof JmxNotificationBroadcasterAware) {
040                ((JmxNotificationBroadcasterAware)eventNotifier).setNotificationBroadcaster(this);
041            }
042        }
043    
044        public void init(ManagementStrategy strategy) {
045            // do nothing
046        }
047    
048        public CamelContext getContext() {
049            return context;
050        }
051    
052        public EventNotifier getEventNotifier() {
053            return eventNotifier;
054        }
055        
056        public boolean isIgnoreCamelContextEvents() {
057            return getEventNotifier().isIgnoreCamelContextEvents();
058        }
059        
060        public void setIgnoreCamelContextEvents(boolean ignoreCamelContextEvents) {
061            getEventNotifier().setIgnoreCamelContextEvents(ignoreCamelContextEvents);
062        }
063        
064        public boolean isIgnoreRouteEvents() {
065            return getEventNotifier().isIgnoreRouteEvents();
066        }
067        
068        public void setIgnoreRouteEvents(boolean ignoreRouteEvents) {
069            getEventNotifier().setIgnoreRouteEvents(ignoreRouteEvents);
070        }
071        
072        public boolean isIgnoreServiceEvents() {
073            return getEventNotifier().isIgnoreServiceEvents();
074        }
075       
076        public void setIgnoreServiceEvents(boolean ignoreServiceEvents) {
077            getEventNotifier().setIgnoreServiceEvents(ignoreServiceEvents);
078        }
079       
080        public boolean isIgnoreExchangeEvents() {
081            return getEventNotifier().isIgnoreExchangeEvents();
082        }
083        
084        public void setIgnoreExchangeEvents(boolean ignoreExchangeEvents) {
085            getEventNotifier().setIgnoreExchangeEvents(ignoreExchangeEvents);
086        }
087        
088        public boolean isIgnoreExchangeCreatedEvent() {
089            return getEventNotifier().isIgnoreExchangeCreatedEvent();
090        }
091       
092        public void setIgnoreExchangeCreatedEvent(boolean ignoreExchangeCreatedEvent) {
093            getEventNotifier().setIgnoreExchangeCreatedEvent(ignoreExchangeCreatedEvent);
094        }
095        
096        public boolean isIgnoreExchangeCompletedEvent() {
097            return getEventNotifier().isIgnoreExchangeCompletedEvent();
098        }
099        
100        public void setIgnoreExchangeCompletedEvent(boolean ignoreExchangeCompletedEvent) {
101            getEventNotifier().setIgnoreExchangeCompletedEvent(ignoreExchangeCompletedEvent);
102        }
103        
104        public boolean isIgnoreExchangeFailedEvents() {
105            return getEventNotifier().isIgnoreExchangeFailedEvents();
106        }
107        
108        public void setIgnoreExchangeFailedEvents(boolean ignoreExchangeFailedEvents) {
109            getEventNotifier().setIgnoreExchangeFailedEvents(ignoreExchangeFailedEvents);
110        }
111    
112        public boolean isIgnoreExchangeRedeliveryEvents() {
113            return getEventNotifier().isIgnoreExchangeRedeliveryEvents();
114        }
115    
116        public void setIgnoreExchangeRedeliveryEvents(boolean ignoreExchangeRedeliveryEvents) {
117            getEventNotifier().setIgnoreExchangeRedeliveryEvents(ignoreExchangeRedeliveryEvents);
118        }
119    
120        public boolean isIgnoreExchangeSentEvents() {
121            return getEventNotifier().isIgnoreExchangeSentEvents();
122        }
123     
124        public void setIgnoreExchangeSentEvents(boolean ignoreExchangeSentEvents) {
125            getEventNotifier().setIgnoreExchangeSentEvents(ignoreExchangeSentEvents);
126        }
127        
128        public boolean isIgnoreExchangeSendingEvents() {
129            return getEventNotifier().isIgnoreExchangeSendingEvents();
130        }
131    
132        public void setIgnoreExchangeSendingEvents(boolean ignoreExchangeSendingEvents) {
133            getEventNotifier().setIgnoreExchangeSendingEvents(ignoreExchangeSendingEvents);
134        }
135    
136        public MBeanNotificationInfo[] getNotificationInfo() {
137            // all the class names in the event package
138            String[] names = {"CamelContextStartedEvent", "CamelContextStartingEvent", "CamelContextStartupFailureEvent"
139                    , "CamelContextStopFailureEvent", "CamelContextStoppedEvent", "CamelContextStoppingEvent"
140                    , "CamelContextSuspendingEvent", "CamelContextSuspendedEvent", "CamelContextResumingEvent", "CamelContextResumedEvent"
141                    , "CamelContextResumeFailureEvent", "ExchangeCompletedEvent", "ExchangeCreatedEvent", "ExchangeFailedEvent"
142                    , "ExchangeFailureHandledEvent", "ExchangeRedeliveryEvents", "ExchangeSendingEvent", "ExchangeSentEvent", "RouteStartedEvent"
143                    , "RouteStoppedEvent", "ServiceStartupFailureEvent", "ServiceStopFailureEvent"};
144    
145            List<MBeanNotificationInfo> infos = new ArrayList<MBeanNotificationInfo>();
146            for (String name : names) {
147                MBeanNotificationInfo info = new MBeanNotificationInfo(new String[]{"org.apache.camel.management.event"},
148                        "org.apache.camel.management.event." + name, "The event " + name + " occurred");
149                infos.add(info);
150            }
151    
152            return infos.toArray(new MBeanNotificationInfo[infos.size()]);
153        }
154    
155    }