001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.camel;
019
020 import java.util.Collection;
021
022 /**
023 * Represents a composite pattern, aggregating a collection of processors together as a single processor
024 *
025 * @version $Revision: 519997 $
026 */
027 public class CompositeProcessor<E> implements Processor<E> {
028 private final Collection<Processor<E>> processors;
029
030 public CompositeProcessor(Collection<Processor<E>> processors) {
031 this.processors = processors;
032 }
033
034 public void onExchange(E exchange) {
035 for (Processor<E> processor : processors) {
036 processor.onExchange(exchange);
037 }
038 }
039
040 @Override
041 public String toString() {
042 StringBuilder builder = new StringBuilder("[ ");
043 boolean first = true;
044 for (Processor<E> processor : processors) {
045 if (first) {
046 first = false;
047 }
048 else {
049 builder.append(", ");
050 }
051 builder.append(processor.toString());
052 }
053 builder.append(" ]");
054 return builder.toString();
055 }
056
057 public Collection<Processor<E>> getProcessors() {
058 return processors;
059 }
060 }