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