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