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.processor.interceptor;
018
019import java.util.List;
020
021import org.apache.camel.CamelContext;
022import org.apache.camel.Processor;
023import org.apache.camel.model.ProcessorDefinition;
024import org.apache.camel.spi.InterceptStrategy;
025
026/**
027 * {@link InterceptStrategy} implementation to configure stream caching on a RouteContext
028 *
029 * @deprecated no longer in use, will be removed in next Camel release.
030 */
031@Deprecated
032public final class StreamCaching implements InterceptStrategy {
033    
034    public Processor wrapProcessorInInterceptors(CamelContext context, ProcessorDefinition<?> definition,
035                                                 Processor target, Processor nextTarget) throws Exception {
036        return new StreamCachingInterceptor(target);
037    }
038    
039    /**
040     * A helper method to return the StreamCaching instance
041     * for a given {@link org.apache.camel.CamelContext} if one is enabled
042     *
043     * @param context the camel context the stream cache is connected to
044     * @return the stream cache or null if none can be found
045     */
046    public static StreamCaching getStreamCaching(CamelContext context) {
047        return getStreamCaching(context.getInterceptStrategies());
048    }
049
050    /**
051     * A helper method to return the StreamCaching instance
052     * for a given list of interceptors
053     *
054     * @param interceptors the list of interceptors
055     * @return the stream cache or null if none can be found
056     */
057    public static StreamCaching getStreamCaching(List<InterceptStrategy> interceptors) {
058        for (InterceptStrategy interceptStrategy : interceptors) {
059            if (interceptStrategy instanceof StreamCaching) {
060                return (StreamCaching)interceptStrategy;
061            }
062        }
063        return null;
064    }
065
066    /**
067     * Remove the {@link StreamCachingInterceptor} from the given list of interceptors
068     *
069     * @param interceptors the list of interceptors
070     */
071    public static void noStreamCaching(List<InterceptStrategy> interceptors) {
072        for (InterceptStrategy strategy : interceptors) {
073            if (strategy instanceof StreamCaching) {
074                interceptors.remove(strategy);
075            }
076        }
077    }
078
079    @Override
080    public String toString() {
081        return "StreamCaching";
082    }
083}