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 public boolean isIgnoreCamelContextEvents() { 055 return getEventNotifier().isIgnoreCamelContextEvents(); 056 } 057 058 public void setIgnoreCamelContextEvents(boolean ignoreCamelContextEvents) { 059 getEventNotifier().setIgnoreCamelContextEvents(ignoreCamelContextEvents); 060 } 061 062 public boolean isIgnoreRouteEvents() { 063 return getEventNotifier().isIgnoreRouteEvents(); 064 } 065 066 public void setIgnoreRouteEvents(boolean ignoreRouteEvents) { 067 getEventNotifier().setIgnoreRouteEvents(ignoreRouteEvents); 068 } 069 070 public boolean isIgnoreServiceEvents() { 071 return getEventNotifier().isIgnoreServiceEvents(); 072 } 073 074 public void setIgnoreServiceEvents(boolean ignoreServiceEvents) { 075 getEventNotifier().setIgnoreServiceEvents(ignoreServiceEvents); 076 } 077 078 public boolean isIgnoreExchangeEvents() { 079 return getEventNotifier().isIgnoreExchangeEvents(); 080 } 081 082 public void setIgnoreExchangeEvents(boolean ignoreExchangeEvents) { 083 getEventNotifier().setIgnoreExchangeEvents(ignoreExchangeEvents); 084 } 085 086 public boolean isIgnoreExchangeCreatedEvent() { 087 return getEventNotifier().isIgnoreExchangeCreatedEvent(); 088 } 089 090 public void setIgnoreExchangeCreatedEvent(boolean ignoreExchangeCreatedEvent) { 091 getEventNotifier().setIgnoreExchangeCreatedEvent(ignoreExchangeCreatedEvent); 092 } 093 094 public boolean isIgnoreExchangeCompletedEvent() { 095 return getEventNotifier().isIgnoreExchangeCompletedEvent(); 096 } 097 098 public void setIgnoreExchangeCompletedEvent(boolean ignoreExchangeCompletedEvent) { 099 getEventNotifier().setIgnoreExchangeCompletedEvent(ignoreExchangeCompletedEvent); 100 } 101 102 public boolean isIgnoreExchangeFailedEvents() { 103 return getEventNotifier().isIgnoreExchangeFailedEvents(); 104 } 105 106 public void setIgnoreExchangeFailedEvents(boolean ignoreExchangeFailedEvents) { 107 getEventNotifier().setIgnoreExchangeFailedEvents(ignoreExchangeFailedEvents); 108 } 109 110 public boolean isIgnoreExchangeRedeliveryEvents() { 111 return getEventNotifier().isIgnoreExchangeRedeliveryEvents(); 112 } 113 114 public void setIgnoreExchangeRedeliveryEvents(boolean ignoreExchangeRedeliveryEvents) { 115 getEventNotifier().setIgnoreExchangeRedeliveryEvents(ignoreExchangeRedeliveryEvents); 116 } 117 118 public boolean isIgnoreExchangeSentEvents() { 119 return getEventNotifier().isIgnoreExchangeSentEvents(); 120 } 121 122 public void setIgnoreExchangeSentEvents(boolean ignoreExchangeSentEvents) { 123 getEventNotifier().setIgnoreExchangeSentEvents(ignoreExchangeSentEvents); 124 } 125 126 public boolean isIgnoreExchangeSendingEvents() { 127 return getEventNotifier().isIgnoreExchangeSendingEvents(); 128 } 129 130 public void setIgnoreExchangeSendingEvents(boolean ignoreExchangeSendingEvents) { 131 getEventNotifier().setIgnoreExchangeSendingEvents(ignoreExchangeSendingEvents); 132 } 133 134 public MBeanNotificationInfo[] getNotificationInfo() { 135 // all the class names in the event package 136 String[] names = {"CamelContextStartedEvent", "CamelContextStartingEvent", "CamelContextStartupFailureEvent", 137 "CamelContextStopFailureEvent", "CamelContextStoppedEvent", "CamelContextStoppingEvent", 138 "CamelContextSuspendingEvent", "CamelContextSuspendedEvent", "CamelContextResumingEvent", "CamelContextResumedEvent", 139 "CamelContextResumeFailureEvent", "ExchangeCompletedEvent", "ExchangeCreatedEvent", "ExchangeFailedEvent", 140 "ExchangeFailureHandledEvent", "ExchangeRedeliveryEvents", "ExchangeSendingEvent", "ExchangeSentEvent", "RouteStartedEvent", 141 "RouteStoppedEvent", "ServiceStartupFailureEvent", "ServiceStopFailureEvent"}; 142 143 List<MBeanNotificationInfo> infos = new ArrayList<>(); 144 for (String name : names) { 145 MBeanNotificationInfo info = new MBeanNotificationInfo(new String[]{"org.apache.camel.management.event"}, 146 "org.apache.camel.management.event." + name, "The event " + name + " occurred"); 147 infos.add(info); 148 } 149 150 return infos.toArray(new MBeanNotificationInfo[infos.size()]); 151 } 152 153}