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.builder;
018
019 import org.apache.camel.Expression;
020
021 /**
022 * A helper class for including portions of the <a
023 * href="http://camel.apache.org/expression.html">expression</a> and
024 * <a href="http://camel.apache.org/predicate.html">predicate</a> <a
025 * href="http://camel.apache.org/dsl.html">Java DSL</a>
026 *
027 * @version $Revision: 781237 $
028 */
029 public final class Builder {
030
031 /**
032 * Utility classes should not have a public constructor.
033 */
034 private Builder() {
035 }
036
037 /**
038 * Returns a <a href="http://camel.apache.org/bean-language.html">bean expression</a>
039 * value builder
040 *
041 * @param beanRef reference to bean to lookup in the Registry
042 * @return the builder
043 */
044 public static ValueBuilder bean(String beanRef) {
045 Expression expression = ExpressionBuilder.beanExpression(beanRef);
046 return new ValueBuilder(expression);
047 }
048
049 /**
050 * Returns a <a href="http://camel.apache.org/bean-language.html">bean expression</a>
051 * value builder
052 *
053 * @param beanRef reference to bean to lookup in the Registry
054 * @param method name of method to invoke
055 * @return the builder
056 */
057 public static ValueBuilder bean(String beanRef, String method) {
058 Expression expression = ExpressionBuilder.beanExpression(beanRef, method);
059 return new ValueBuilder(expression);
060 }
061
062 /**
063 * Returns a <a href="http://camel.apache.org/bean-language.html">bean expression</a>
064 * value builder
065 *
066 * @param beanType the bean class which will be invoked
067 * @param method name of method to invoke
068 * @return the builder
069 */
070 public static ValueBuilder bean(Class beanType, String method) {
071 Expression expression = ExpressionBuilder.beanExpression(beanType, method);
072 return new ValueBuilder(expression);
073 }
074
075 /**
076 * Returns a constant expression
077 */
078 public static ValueBuilder constant(Object value) {
079 Expression expression = ExpressionBuilder.constantExpression(value);
080 return new ValueBuilder(expression);
081 }
082
083 /**
084 * Returns a predicate and value builder for headers on an exchange
085 */
086 public static ValueBuilder header(String name) {
087 Expression expression = ExpressionBuilder.headerExpression(name);
088 return new ValueBuilder(expression);
089 }
090
091 /**
092 * Returns a predicate and value builder for properties on an exchange
093 */
094 public static ValueBuilder property(String name) {
095 Expression expression = ExpressionBuilder.propertyExpression(name);
096 return new ValueBuilder(expression);
097 }
098
099 /**
100 * Returns a predicate and value builder for the inbound body on an exchange
101 */
102 public static ValueBuilder body() {
103 Expression expression = ExpressionBuilder.bodyExpression();
104 return new ValueBuilder(expression);
105 }
106
107 /**
108 * Returns a predicate and value builder for the inbound message body as a
109 * specific type
110 */
111 public static <T> ValueBuilder bodyAs(Class<T> type) {
112 Expression expression = ExpressionBuilder.bodyExpression(type);
113 return new ValueBuilder(expression);
114 }
115
116 /**
117 * Returns a predicate and value builder for the outbound body on an
118 * exchange
119 */
120 public static ValueBuilder outBody() {
121 Expression expression = ExpressionBuilder.outBodyExpression();
122 return new ValueBuilder(expression);
123 }
124
125 /**
126 * Returns a predicate and value builder for the outbound message body as a
127 * specific type
128 */
129 public static <T> ValueBuilder outBodyAs(Class<T> type) {
130 Expression expression = ExpressionBuilder.outBodyExpression(type);
131 return new ValueBuilder(expression);
132 }
133
134 /**
135 * Returns a predicate and value builder for the fault body on an
136 * exchange
137 */
138 public static ValueBuilder faultBody() {
139 Expression expression = ExpressionBuilder.faultBodyExpression();
140 return new ValueBuilder(expression);
141 }
142
143 /**
144 * Returns a predicate and value builder for the fault message body as a
145 * specific type
146 */
147 public static <T> ValueBuilder faultBodyAs(Class<T> type) {
148 Expression expression = ExpressionBuilder.faultBodyExpression(type);
149 return new ValueBuilder(expression);
150 }
151
152 /**
153 * Returns an expression for the given system property
154 */
155 public static ValueBuilder systemProperty(final String name) {
156 return systemProperty(name, null);
157 }
158
159 /**
160 * Returns an expression for the given system property
161 */
162 public static ValueBuilder systemProperty(final String name, final String defaultValue) {
163 return new ValueBuilder(ExpressionBuilder.systemPropertyExpression(name, defaultValue));
164 }
165
166 /**
167 * Returns a predicate and value builder for the exception message on an exchange
168 */
169 public static ValueBuilder exceptionMessage() {
170 Expression expression = ExpressionBuilder.exchangeExceptionMessageExpression();
171 return new ValueBuilder(expression);
172 }
173
174 /**
175 * Returns an expression that replaces all occurrences of the regular
176 * expression with the given replacement
177 */
178 public static ValueBuilder regexReplaceAll(Expression content, String regex, String replacement) {
179 Expression newExp = ExpressionBuilder.regexReplaceAll(content, regex, replacement);
180 return new ValueBuilder(newExp);
181 }
182
183 /**
184 * Returns an expression that replaces all occurrences of the regular
185 * expression with the given replacement
186 */
187 public static ValueBuilder regexReplaceAll(Expression content, String regex, Expression replacement) {
188 Expression newExp = ExpressionBuilder.regexReplaceAll(content, regex, replacement);
189 return new ValueBuilder(newExp);
190 }
191
192 /**
193 * Returns an expression processing the exchange to the given endpoint uri.
194 *
195 * @param uri endpoint uri
196 * @return the builder
197 */
198 public static ValueBuilder sendTo(String uri) {
199 Expression expression = ExpressionBuilder.toExpression(uri);
200 return new ValueBuilder(expression);
201 }
202
203 }