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 */
017 package org.apache.camel.spi;
018
019 import java.util.List;
020
021 import org.apache.camel.CamelContext;
022 import org.apache.camel.Endpoint;
023 import org.apache.camel.Exchange;
024 import org.apache.camel.Intercept;
025 import org.apache.camel.Processor;
026 import org.apache.camel.model.FromType;
027 import org.apache.camel.model.ProcessorType;
028 import org.apache.camel.model.RouteType;
029
030 /**
031 * The context used to activate new routing rules
032 *
033 * @version $Revision: 673335 $
034 */
035 public interface RouteContext {
036
037 Endpoint<? extends Exchange> getEndpoint();
038
039 FromType getFrom();
040
041 RouteType getRoute();
042
043 /**
044 * Gets the CamelContext
045 */
046 CamelContext getCamelContext();
047
048 Processor createProcessor(ProcessorType node) throws Exception;
049
050 /**
051 * Resolves an endpoint from the URI
052 */
053 Endpoint<? extends Exchange> resolveEndpoint(String uri);
054
055 /**
056 * Resolves an endpoint from either a URI or a named reference
057 */
058 Endpoint<? extends Exchange> resolveEndpoint(String uri, String ref);
059
060 /**
061 * lookup an object by name and type
062 */
063 <T> T lookup(String name, Class<T> type);
064
065 /**
066 * Lets complete the route creation, creating a single event driven route
067 * for the current from endpoint with any processors required
068 */
069 void commit();
070
071 void addEventDrivenProcessor(Processor processor);
072
073 void intercept(Intercept interceptor);
074
075 Processor createProceedProcessor();
076
077 /**
078 * This method retrieves the InterceptStrategy instances this route context.
079 *
080 * @return InterceptStrategy
081 */
082 List<InterceptStrategy> getInterceptStrategies();
083
084 /**
085 * This method sets the InterceptStrategy instances on this route context.
086 *
087 * @param interceptStrategies
088 */
089 void setInterceptStrategies(List<InterceptStrategy> interceptStrategies);
090
091 void addInterceptStrategy(InterceptStrategy interceptStrategy);
092
093 /**
094 * This method retrieves the ErrorHandlerWrappingStrategy.
095 *
096 * @return ErrorHandlerWrappingStrategy
097 */
098 ErrorHandlerWrappingStrategy getErrorHandlerWrappingStrategy();
099
100 /**
101 * This method sets the ErrorHandlerWrappingStrategy.
102 *
103 */
104 void setErrorHandlerWrappingStrategy(ErrorHandlerWrappingStrategy strategy);
105
106 /**
107 * If this flag is true, {@link ProcessorType#addRoutes(RouteContext, java.util.Collection)
108 * will not add processor to addEventDrivenProcessor to the RouteContext and it
109 * will prevent from adding an EventDrivenRoute.
110 *
111 */
112 void setIsRouteAdded(boolean value);
113
114 /**
115 * @see {@link #setIsRouteAdded(boolean)}
116 *
117 */
118 boolean isRouteAdded();
119
120
121
122 }