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 */
017 package org.apache.camel.management.mbean;
018
019 import org.apache.camel.CamelContext;
020 import org.apache.camel.LoggingLevel;
021 import org.apache.camel.api.management.ManagedNotification;
022 import org.apache.camel.api.management.ManagedNotifications;
023 import org.apache.camel.api.management.ManagedResource;
024 import org.apache.camel.api.management.NotificationSender;
025 import org.apache.camel.api.management.NotificationSenderAware;
026 import org.apache.camel.api.management.mbean.ManagedTracerMBean;
027 import org.apache.camel.processor.interceptor.Tracer;
028 import org.apache.camel.spi.ManagementStrategy;
029 import org.apache.camel.util.ObjectHelper;
030
031 /**
032 * @version
033 */
034 @ManagedResource(description = "Managed Tracer")
035 @ManagedNotifications(@ManagedNotification(name = "javax.management.Notification",
036 description = "Fine grained trace events",
037 notificationTypes = {"TraceNotification"}))
038 public class ManagedTracer implements NotificationSenderAware, ManagedTracerMBean {
039 private final CamelContext camelContext;
040 private final Tracer tracer;
041 private JMXNotificationTraceEventHandler jmxTraceHandler;
042
043 public ManagedTracer(CamelContext camelContext, Tracer tracer) {
044 this.camelContext = camelContext;
045 this.tracer = tracer;
046 jmxTraceHandler = new JMXNotificationTraceEventHandler(tracer);
047 tracer.addTraceHandler(jmxTraceHandler);
048 }
049
050 public void init(ManagementStrategy strategy) {
051 // do nothing
052 }
053
054 public CamelContext getContext() {
055 return camelContext;
056 }
057
058 public Tracer getTracer() {
059 return tracer;
060 }
061
062 public boolean getEnabled() {
063 return tracer.isEnabled();
064 }
065
066 public void setEnabled(boolean enabled) {
067 tracer.setEnabled(enabled);
068 }
069
070 public String getDestinationUri() {
071 return tracer.getDestinationUri();
072 }
073
074 public void setDestinationUri(String uri) {
075 if (ObjectHelper.isEmpty(uri)) {
076 tracer.setDestinationUri(null);
077 } else {
078 tracer.setDestinationUri(uri);
079 }
080 }
081
082 public String getLogName() {
083 return tracer.getLogName();
084 }
085
086 public boolean getUseJpa() {
087 return tracer.isUseJpa();
088 }
089
090 public void setLogName(String logName) {
091 tracer.setLogName(logName);
092 }
093
094 public String getLogLevel() {
095 return tracer.getLogLevel().name();
096 }
097
098 public void setLogLevel(String logLevel) {
099 tracer.setLogLevel(LoggingLevel.valueOf(logLevel));
100 }
101
102 public boolean getLogStackTrace() {
103 return tracer.isLogStackTrace();
104 }
105
106 public void setLogStackTrace(boolean logStackTrace) {
107 tracer.setLogStackTrace(logStackTrace);
108 }
109
110 public boolean getTraceInterceptors() {
111 return tracer.isTraceInterceptors();
112 }
113
114 public void setTraceInterceptors(boolean traceInterceptors) {
115 tracer.setTraceInterceptors(traceInterceptors);
116 }
117
118 public boolean getTraceExceptions() {
119 return tracer.isTraceExceptions();
120 }
121
122 public void setTraceExceptions(boolean traceExceptions) {
123 tracer.setTraceExceptions(traceExceptions);
124 }
125
126 public boolean getTraceOutExchanges() {
127 return tracer.isTraceOutExchanges();
128 }
129
130 public void setTraceOutExchanges(boolean traceOutExchanges) {
131 tracer.setTraceOutExchanges(traceOutExchanges);
132 }
133
134 public boolean getFormatterShowBody() {
135 if (tracer.getDefaultTraceFormatter() == null) {
136 return false;
137 }
138 return tracer.getDefaultTraceFormatter().isShowBody();
139 }
140
141 public void setFormatterShowBody(boolean showBody) {
142 if (tracer.getDefaultTraceFormatter() == null) {
143 return;
144 }
145 tracer.getDefaultTraceFormatter().setShowBody(showBody);
146 }
147
148 public boolean getFormatterShowBodyType() {
149 if (tracer.getDefaultTraceFormatter() == null) {
150 return false;
151 }
152 return tracer.getDefaultTraceFormatter().isShowBodyType();
153 }
154
155 public void setFormatterShowBodyType(boolean showBodyType) {
156 if (tracer.getDefaultTraceFormatter() == null) {
157 return;
158 }
159 tracer.getDefaultTraceFormatter().setShowBodyType(showBodyType);
160 }
161
162 public boolean getFormatterShowOutBody() {
163 if (tracer.getDefaultTraceFormatter() == null) {
164 return false;
165 }
166 return tracer.getDefaultTraceFormatter().isShowOutBody();
167 }
168
169 public void setFormatterShowOutBody(boolean showOutBody) {
170 if (tracer.getDefaultTraceFormatter() == null) {
171 return;
172 }
173 tracer.getDefaultTraceFormatter().setShowOutBody(showOutBody);
174 }
175
176 public boolean getFormatterShowOutBodyType() {
177 if (tracer.getDefaultTraceFormatter() == null) {
178 return false;
179 }
180 return tracer.getDefaultTraceFormatter().isShowOutBodyType();
181 }
182
183 public void setFormatterShowOutBodyType(boolean showOutBodyType) {
184 if (tracer.getDefaultTraceFormatter() == null) {
185 return;
186 }
187 tracer.getDefaultTraceFormatter().setShowOutBodyType(showOutBodyType);
188 }
189
190 public boolean getFormatterShowBreadCrumb() {
191 if (tracer.getDefaultTraceFormatter() == null) {
192 return false;
193 }
194 return tracer.getDefaultTraceFormatter().isShowBreadCrumb();
195 }
196
197 public void setFormatterShowBreadCrumb(boolean showBreadCrumb) {
198 if (tracer.getDefaultTraceFormatter() == null) {
199 return;
200 }
201 tracer.getDefaultTraceFormatter().setShowBreadCrumb(showBreadCrumb);
202 }
203
204 public boolean getFormatterShowExchangeId() {
205 if (tracer.getDefaultTraceFormatter() == null) {
206 return false;
207 }
208 return tracer.getDefaultTraceFormatter().isShowExchangeId();
209 }
210
211 public void setFormatterShowExchangeId(boolean showExchangeId) {
212 if (tracer.getDefaultTraceFormatter() == null) {
213 return;
214 }
215 tracer.getDefaultTraceFormatter().setShowExchangeId(showExchangeId);
216 }
217
218 public boolean getFormatterShowHeaders() {
219 if (tracer.getDefaultTraceFormatter() == null) {
220 return false;
221 }
222 return tracer.getDefaultTraceFormatter().isShowHeaders();
223 }
224
225 public void setFormatterShowHeaders(boolean showHeaders) {
226 if (tracer.getDefaultTraceFormatter() == null) {
227 return;
228 }
229 tracer.getDefaultTraceFormatter().setShowHeaders(showHeaders);
230 }
231
232 public boolean getFormatterShowOutHeaders() {
233 if (tracer.getDefaultTraceFormatter() == null) {
234 return false;
235 }
236 return tracer.getDefaultTraceFormatter().isShowOutHeaders();
237 }
238
239 public void setFormatterShowOutHeaders(boolean showOutHeaders) {
240 if (tracer.getDefaultTraceFormatter() == null) {
241 return;
242 }
243 tracer.getDefaultTraceFormatter().setShowOutHeaders(showOutHeaders);
244 }
245
246 public boolean getFormatterShowProperties() {
247 if (tracer.getDefaultTraceFormatter() == null) {
248 return false;
249 }
250 return tracer.getDefaultTraceFormatter().isShowProperties();
251 }
252
253 public void setFormatterShowProperties(boolean showProperties) {
254 if (tracer.getDefaultTraceFormatter() == null) {
255 return;
256 }
257 tracer.getDefaultTraceFormatter().setShowProperties(showProperties);
258 }
259
260 public boolean getFormatterShowNode() {
261 if (tracer.getDefaultTraceFormatter() == null) {
262 return false;
263 }
264 return tracer.getDefaultTraceFormatter().isShowNode();
265 }
266
267 public void setFormatterShowNode(boolean showNode) {
268 if (tracer.getDefaultTraceFormatter() == null) {
269 return;
270 }
271 tracer.getDefaultTraceFormatter().setShowNode(showNode);
272 }
273
274 public boolean getFormatterShowExchangePattern() {
275 if (tracer.getDefaultTraceFormatter() == null) {
276 return false;
277 }
278 return tracer.getDefaultTraceFormatter().isShowExchangePattern();
279 }
280
281 public void setFormatterShowExchangePattern(boolean showExchangePattern) {
282 if (tracer.getDefaultTraceFormatter() == null) {
283 return;
284 }
285 tracer.getDefaultTraceFormatter().setShowExchangePattern(showExchangePattern);
286 }
287
288 public boolean getFormatterShowException() {
289 if (tracer.getDefaultTraceFormatter() == null) {
290 return false;
291 }
292 return tracer.getDefaultTraceFormatter().isShowException();
293 }
294
295 public void setFormatterShowException(boolean showException) {
296 if (tracer.getDefaultTraceFormatter() == null) {
297 return;
298 }
299 tracer.getDefaultTraceFormatter().setShowException(showException);
300 }
301
302 public boolean getFormatterShowRouteId() {
303 if (tracer.getDefaultTraceFormatter() == null) {
304 return false;
305 }
306 return tracer.getDefaultTraceFormatter().isShowRouteId();
307 }
308
309 public void setFormatterShowRouteId(boolean showRouteId) {
310 if (tracer.getDefaultTraceFormatter() == null) {
311 return;
312 }
313 tracer.getDefaultTraceFormatter().setShowRouteId(showRouteId);
314 }
315
316 public int getFormatterBreadCrumbLength() {
317 if (tracer.getDefaultTraceFormatter() == null) {
318 return 0;
319 }
320 return tracer.getDefaultTraceFormatter().getBreadCrumbLength();
321 }
322
323 public void setFormatterBreadCrumbLength(int breadCrumbLength) {
324 if (tracer.getDefaultTraceFormatter() == null) {
325 return;
326 }
327 tracer.getDefaultTraceFormatter().setBreadCrumbLength(breadCrumbLength);
328 }
329
330 public boolean getFormatterShowShortExchangeId() {
331 if (tracer.getDefaultTraceFormatter() == null) {
332 return false;
333 }
334 return tracer.getDefaultTraceFormatter().isShowShortExchangeId();
335 }
336
337 public void setFormatterShowShortExchangeId(boolean showShortExchangeId) {
338 if (tracer.getDefaultTraceFormatter() == null) {
339 return;
340 }
341 tracer.getDefaultTraceFormatter().setShowShortExchangeId(showShortExchangeId);
342 }
343
344 public int getFormatterNodeLength() {
345 if (tracer.getDefaultTraceFormatter() == null) {
346 return 0;
347 }
348 return tracer.getDefaultTraceFormatter().getNodeLength();
349 }
350
351 public void setFormatterNodeLength(int nodeLength) {
352 if (tracer.getDefaultTraceFormatter() == null) {
353 return;
354 }
355 tracer.getDefaultTraceFormatter().setNodeLength(nodeLength);
356 }
357
358 public int getFormatterMaxChars() {
359 if (tracer.getDefaultTraceFormatter() == null) {
360 return 0;
361 }
362 return tracer.getDefaultTraceFormatter().getMaxChars();
363 }
364
365 public void setFormatterMaxChars(int maxChars) {
366 if (tracer.getDefaultTraceFormatter() == null) {
367 return;
368 }
369 tracer.getDefaultTraceFormatter().setMaxChars(maxChars);
370 }
371
372 public boolean isJmxTraceNotifications() {
373 return this.tracer.isJmxTraceNotifications();
374 }
375
376 public void setJmxTraceNotifications(boolean jmxTraceNotifications) {
377 this.tracer.setJmxTraceNotifications(jmxTraceNotifications);
378 }
379
380 public int getTraceBodySize() {
381 return this.tracer.getTraceBodySize();
382 }
383
384 public void setTraceBodySize(int traceBodySize) {
385 this.tracer.setTraceBodySize(traceBodySize);
386 }
387
388 @Override
389 public void setNotificationSender(NotificationSender sender) {
390 jmxTraceHandler.setNotificationSender(sender);
391 }
392
393 }