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 /** 021 * @version $Revision: 519925 $ 022 */ 023 public class FilterProcessor<E> implements Processor<E> { 024 private Predicate<E> predicate; 025 private Processor<E> processor; 026 027 public FilterProcessor(Predicate<E> predicate, Processor<E> processor) { 028 this.predicate = predicate; 029 this.processor = processor; 030 } 031 032 public void onExchange(E exchange) { 033 if (predicate.evaluate(exchange)) { 034 processor.onExchange(exchange); 035 } 036 } 037 038 @Override 039 public String toString() { 040 return "if (" + predicate + ") " + processor; 041 } 042 043 public Predicate<E> getPredicate() { 044 return predicate; 045 } 046 047 public Processor<E> getProcessor() { 048 return processor; 049 } 050 }