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.Set;
020
021import org.apache.camel.CamelContext;
022import org.apache.camel.api.management.ManagedResource;
023import org.apache.camel.api.management.mbean.ManagedAggregateProcessorMBean;
024import org.apache.camel.model.AggregateDefinition;
025import org.apache.camel.processor.aggregate.AggregateProcessor;
026
027@ManagedResource(description = "Managed AggregateProcessor")
028public class ManagedAggregateProcessor extends ManagedProcessor implements ManagedAggregateProcessorMBean {
029    private final AggregateProcessor processor;
030
031    public ManagedAggregateProcessor(CamelContext context, AggregateProcessor processor, AggregateDefinition definition) {
032        super(context, processor, definition);
033        this.processor = processor;
034    }
035
036    @Override
037    public AggregateProcessor getProcessor() {
038        return processor;
039    }
040
041    @Override
042    public AggregateDefinition getDefinition() {
043        return (AggregateDefinition) super.getDefinition();
044    }
045
046    @Override
047    public String getCorrelationExpressionLanguage() {
048        if (getDefinition().getCorrelationExpression() != null) {
049            return getDefinition().getCorrelationExpression().getExpressionType().getLanguage();
050        } else {
051            return null;
052        }
053    }
054
055    @Override
056    public String getCorrelationExpression() {
057        if (getDefinition().getCorrelationExpression() != null) {
058            return getDefinition().getCorrelationExpression().getExpressionType().getExpression();
059        } else {
060            return null;
061        }
062    }
063
064    @Override
065    public long getCompletionTimeout() {
066        return processor.getCompletionTimeout();
067    }
068
069    @Override
070    public String getCompletionTimeoutLanguage() {
071        if (getDefinition().getCompletionTimeoutExpression() != null) {
072            return getDefinition().getCompletionTimeoutExpression().getExpressionType().getLanguage();
073        } else {
074            return null;
075        }
076    }
077
078    @Override
079    public String getCompletionTimeoutExpression() {
080        if (getDefinition().getCompletionTimeoutExpression() != null) {
081            return getDefinition().getCompletionTimeoutExpression().getExpressionType().getExpression();
082        } else {
083            return null;
084        }
085    }
086
087    @Override
088    public long getCompletionInterval() {
089        return processor.getCompletionInterval();
090    }
091
092    @Override
093    public long getCompletionTimeoutCheckerInterval() {
094        return processor.getCompletionTimeoutCheckerInterval();
095    }
096
097    @Override
098    public int getCompletionSize() {
099        return processor.getCompletionSize();
100    }
101
102    @Override
103    public String getCompletionSizeExpressionLanguage() {
104        if (getDefinition().getCompletionSizeExpression() != null) {
105            return getDefinition().getCompletionSizeExpression().getExpressionType().getLanguage();
106        } else {
107            return null;
108        }
109    }
110
111    @Override
112    public String getCompletionSizeExpression() {
113        if (getDefinition().getCompletionSizeExpression() != null) {
114            return getDefinition().getCompletionSizeExpression().getExpressionType().getExpression();
115        } else {
116            return null;
117        }
118    }
119
120    @Override
121    public boolean isCompletionFromBatchConsumer() {
122        return processor.isCompletionFromBatchConsumer();
123    }
124
125    @Override
126    public boolean isCompletionOnNewCorrelationGroup() {
127        return processor.isCompletionOnNewCorrelationGroup();
128    }
129
130    @Override
131    public boolean isIgnoreInvalidCorrelationKeys() {
132        return processor.isIgnoreInvalidCorrelationKeys();
133    }
134
135    @Override
136    public Integer getCloseCorrelationKeyOnCompletion() {
137        return processor.getCloseCorrelationKeyOnCompletion();
138    }
139
140    @Override
141    public boolean isParallelProcessing() {
142        return processor.isParallelProcessing();
143    }
144
145    @Override
146    public boolean isOptimisticLocking() {
147        return processor.isOptimisticLocking();
148    }
149
150    @Override
151    public boolean isEagerCheckCompletion() {
152        return processor.isEagerCheckCompletion();
153    }
154
155    @Override
156    public String getCompletionPredicateLanguage() {
157        if (getDefinition().getCompletionPredicate() != null) {
158            return getDefinition().getCompletionPredicate().getExpressionType().getLanguage();
159        } else {
160            return null;
161        }
162    }
163
164    @Override
165    public String getCompletionPredicate() {
166        if (getDefinition().getCompletionPredicate() != null) {
167            return getDefinition().getCompletionPredicate().getExpressionType().getExpression();
168        } else {
169            return null;
170        }
171    }
172
173    @Override
174    public boolean isDiscardOnCompletionTimeout() {
175        return processor.isDiscardOnCompletionTimeout();
176    }
177
178    @Override
179    public boolean isForceCompletionOnStop() {
180        return processor.isCompletionFromBatchConsumer();
181    }
182
183    @Override
184    public boolean isCompleteAllOnStop() {
185        return processor.isCompleteAllOnStop();
186    }
187
188    @Override
189    public int getInProgressCompleteExchanges() {
190        return processor.getInProgressCompleteExchanges();
191    }
192
193    @Override
194    public int aggregationRepositoryGroups() {
195        Set<String> keys = processor.getAggregationRepository().getKeys();
196        if (keys != null) {
197            return keys.size();
198        } else {
199            return 0;
200        }
201    }
202
203    @Override
204    public int forceCompletionOfGroup(String key) {
205        if (processor.getAggregateController() != null) {
206            return processor.getAggregateController().forceCompletionOfGroup(key);
207        } else {
208            return 0;
209        }
210    }
211
212    @Override
213    public int forceCompletionOfAllGroups() {
214        if (processor.getAggregateController() != null) {
215            return processor.getAggregateController().forceCompletionOfAllGroups();
216        } else {
217            return 0;
218        }
219    }
220
221    @Override
222    public int forceDiscardingOfGroup(String key) {
223        if (processor.getAggregateController() != null) {
224            return processor.getAggregateController().forceDiscardingOfGroup(key);
225        } else {
226            return 0;
227        }
228    }
229
230    @Override
231    public int forceDiscardingOfAllGroups() {
232        if (processor.getAggregateController() != null) {
233            return processor.getAggregateController().forceDiscardingOfAllGroups();
234        } else {
235            return 0;
236        }
237    }
238
239    @Override
240    public int getClosedCorrelationKeysCacheSize() {
241        return processor.getClosedCorrelationKeysCacheSize();
242    }
243
244    @Override
245    public void clearClosedCorrelationKeysCache() {
246        processor.clearClosedCorrelationKeysCache();
247    }
248
249    @Override
250    public long getTotalIn() {
251        return processor.getStatistics().getTotalIn();
252    }
253
254    @Override
255    public long getTotalCompleted() {
256        return processor.getStatistics().getTotalCompleted();
257    }
258
259    @Override
260    public long getCompletedBySize() {
261        return processor.getStatistics().getCompletedBySize();
262    }
263
264    @Override
265    public long getCompletedByStrategy() {
266        return processor.getStatistics().getCompletedByStrategy();
267    }
268
269    @Override
270    public long getCompletedByInterval() {
271        return processor.getStatistics().getCompletedByInterval();
272    }
273
274    @Override
275    public long getCompletedByTimeout() {
276        return processor.getStatistics().getCompletedByTimeout();
277    }
278
279    @Override
280    public long getCompletedByPredicate() {
281        return processor.getStatistics().getCompletedByPredicate();
282    }
283
284    @Override
285    public long getCompletedByBatchConsumer() {
286        return processor.getStatistics().getCompletedByBatchConsumer();
287    }
288
289    @Override
290    public long getCompletedByForce() {
291        return processor.getStatistics().getCompletedByForce();
292    }
293
294    @Override
295    public long getDiscarded() {
296        return processor.getStatistics().getDiscarded();
297    }
298
299    @Override
300    public void resetStatistics() {
301        processor.getStatistics().reset();
302    }
303}