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 org.apache.camel.CamelContext;
020import org.apache.camel.api.management.ManagedResource;
021import org.apache.camel.api.management.mbean.ManagedDoCatchMBean;
022import org.apache.camel.model.CatchDefinition;
023import org.apache.camel.model.WhenDefinition;
024import org.apache.camel.processor.CatchProcessor;
025
026@ManagedResource(description = "Managed DoCatch")
027public class ManagedDoCatch extends ManagedProcessor implements ManagedDoCatchMBean {
028
029    private final CatchProcessor processor;
030
031    public ManagedDoCatch(CamelContext context, CatchProcessor processor, CatchDefinition definition) {
032        super(context, processor, definition);
033        this.processor = processor;
034    }
035
036    @Override
037    public CatchDefinition getDefinition() {
038        return (CatchDefinition) super.getDefinition();
039    }
040
041    @Override
042    public String getOnWhen() {
043        WhenDefinition when = getDefinition().getOnWhen();
044        if (when != null) {
045            return when.getExpression().getExpression();
046        }
047        return null;
048    }
049
050    @Override
051    public String getOnWhenLanguage() {
052        WhenDefinition when = getDefinition().getOnWhen();
053        if (when != null) {
054            return when.getExpression().getLanguage();
055        }
056        return null;
057    }
058
059    @Override
060    public Long getCaughtCount() {
061        return processor.getCaughtCount();
062    }
063
064    @Override
065    public Long getCaughtCount(String className) {
066        return processor.getCaughtCount(className);
067    }
068
069    @Override
070    public String[] getExceptionTypes() {
071        return processor.getCaughtExceptionClassNames().toArray(new String[0]);
072    }
073
074}