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 = {"CamelContextStartedEvent", "CamelContextStartingEvent", "CamelContextStartupFailureEvent", 168 "CamelContextStopFailureEvent", "CamelContextStoppedEvent", "CamelContextStoppingEvent", 169 "CamelContextSuspendingEvent", "CamelContextSuspendedEvent", "CamelContextResumingEvent", "CamelContextResumedEvent", 170 "CamelContextResumeFailureEvent", "ExchangeCompletedEvent", "ExchangeCreatedEvent", "ExchangeFailedEvent", 171 "ExchangeFailureHandledEvent", "ExchangeRedeliveryEvents", "ExchangeSendingEvent", "ExchangeSentEvent", "RouteStartedEvent", 172 "RouteStoppedEvent", "ServiceStartupFailureEvent", "ServiceStopFailureEvent", 173 "StepStartedEvent", "StepCompletedEvent", "StepFailedEvent"}; 174 175 List<MBeanNotificationInfo> infos = new ArrayList<>(); 176 for (String name : names) { 177 MBeanNotificationInfo info = new MBeanNotificationInfo(new String[]{"org.apache.camel.management.event"}, 178 "org.apache.camel.management.event." + name, "The event " + name + " occurred"); 179 infos.add(info); 180 } 181 182 return infos.toArray(new MBeanNotificationInfo[infos.size()]); 183 } 184 185}