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 boolean isIgnoreStepEvents() { 135 return getEventNotifier().isIgnoreStepEvents(); 136 } 137 138 public void setIgnoreStepEvents(boolean ignoreStepEvents) { 139 getEventNotifier().setIgnoreStepEvents(ignoreStepEvents); 140 } 141 142 public MBeanNotificationInfo[] getNotificationInfo() { 143 // all the class names in the event package 144 String[] names = {"CamelContextStartedEvent", "CamelContextStartingEvent", "CamelContextStartupFailureEvent", 145 "CamelContextStopFailureEvent", "CamelContextStoppedEvent", "CamelContextStoppingEvent", 146 "CamelContextSuspendingEvent", "CamelContextSuspendedEvent", "CamelContextResumingEvent", "CamelContextResumedEvent", 147 "CamelContextResumeFailureEvent", "ExchangeCompletedEvent", "ExchangeCreatedEvent", "ExchangeFailedEvent", 148 "ExchangeFailureHandledEvent", "ExchangeRedeliveryEvents", "ExchangeSendingEvent", "ExchangeSentEvent", "RouteStartedEvent", 149 "RouteStoppedEvent", "ServiceStartupFailureEvent", "ServiceStopFailureEvent", 150 "StepStartedEvent", "StepCompletedEvent", "StepFailedEvent"}; 151 152 List<MBeanNotificationInfo> infos = new ArrayList<>(); 153 for (String name : names) { 154 MBeanNotificationInfo info = new MBeanNotificationInfo(new String[]{"org.apache.camel.management.event"}, 155 "org.apache.camel.management.event." + name, "The event " + name + " occurred"); 156 infos.add(info); 157 } 158 159 return infos.toArray(new MBeanNotificationInfo[infos.size()]); 160 } 161 162}