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}