├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── project.clj └── src ├── clj_camel └── core.clj └── java └── com └── bpk └── cljcamel └── RouteBuilderImpl.java /.gitignore: -------------------------------------------------------------------------------- 1 | /pom.xml 2 | *jar 3 | /lib 4 | /classes 5 | /native 6 | /.lein-failures 7 | /checkouts 8 | /.lein-deps-sum 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: clojure 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2013 Manish Handa 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # clj-camel [![Build Status](https://travis-ci.org/hmanish/clj-camel.svg?branch=master)](https://travis-ci.org/hmanish/clj-camel) 2 | 3 | clj-camel provides a thin wrapper over the Apache Camel Java DSL. The routes are written as clojure vectors 4 | where the first element is the keyword corresponding to the camel dsl (converted to clojure convention, 5 | e.g onException will be represented by :on-exception) and subsequent elements are the 6 | parameters to the dsl element. For paramterless dsl element, the keyword can be specified 7 | with or without the vector. 8 | 9 | Expressing the routes as simple clojure vectors allows you to manipulate and compose routes with 10 | all the goodness of functional programming. 11 | 12 | ## Usage 13 | 14 | (require '[clj-camel.core :as c]) 15 | 16 | (defn test-bean [exchange body] 17 | (even? body)) 18 | 19 | (def error-handler 20 | [[:error-handler (c/defaultErrorHandler)] 21 | [:log-stack-trace true] 22 | [:log-retry-stack-trace true] 23 | [:log-handled true] 24 | [:log-exhausted true] 25 | [:retry-attempted-log-level LoggingLevel/WARN] 26 | [:redelivery-delay 1000] 27 | [:maximum-redeliveries 3]]) 28 | 29 | (def test-routes 30 | [ 31 | [[:from "direct:test-route-error"] 32 | [:log "error occurred: ${exception}"]] 33 | 34 | [[:from "direst:test-route-2"] 35 | [:to "file://test"]] 36 | 37 | [[:from "direct:test-route-1"] 38 | [:route-id "test-route-1"] 39 | [:on-exception Exception] 40 | [:redelivery-delay 30000] 41 | [:handled true] 42 | [:to "direct:test-route-error"] 43 | [:end] 44 | [:set-header :exchange][:exchange] 45 | [:bean-ref "test-bean" "invoke(${header.:exchange}, ${body})"] 46 | [:to "direct:test-route-2"]] 47 | ]) 48 | 49 | (defn start-camel-context [] 50 | (let [r (SimpleRegistry.) 51 | ctx (doto (DefaultCamelContext. r))] 52 | (.put r "test-bean" test-bean) 53 | (c/add-routes ctx (cons error-handler test-routes)) 54 | (.start ctx) 55 | ctx)) 56 | 57 | ## License 58 | 59 | Copyright (c) 2012-2013 Manish Handa and released under an MIT license. 60 | -------------------------------------------------------------------------------- /project.clj: -------------------------------------------------------------------------------- 1 | (defproject clj-camel "1.0.1-SNAPSHOT" 2 | :description "Clojure library wrapping the Apache Camel Java DSL" 3 | :dependencies [[org.clojure/clojure "1.5.1"] 4 | [org.apache.camel/camel-core "2.11.1"] 5 | [org.clojure/tools.logging "0.2.6"]]) 6 | -------------------------------------------------------------------------------- /src/clj_camel/core.clj: -------------------------------------------------------------------------------- 1 | (ns clj-camel.core 2 | "This library provides a thin wrapper over the Apache Camel Java 3 | DSL. The routes are wrtten as clojure vectors where the first element 4 | is the keyword corresponding to the camel dsl (converted to clojure 5 | convention, e.g onException will be represented by :on-exception) 6 | and subsequent elements are the parameters to the dsl element. For 7 | paramterless dsl element, the keyword can be specified with or 8 | without the vector. 9 | 10 | Expressing the routes as simple clojure vectors allows you to 11 | manipulate and compose routes with all the goodness of functional 12 | programming." 13 | 14 | (:import [org.apache.camel.model ProcessorDefinition MulticastDefinition ThreadsDefinition ChoiceDefinition 15 | TryDefinition RecipientListDefinition RoutingSlipDefinition DynamicRouterDefinition 16 | SamplingDefinition SplitDefinition ResequenceDefinition AggregateDefinition 17 | DelayDefinition ThrottleDefinition LoopDefinition OnExceptionDefinition RouteDefinition 18 | SortDefinition OnCompletionDefinition InterceptSendToEndpointDefinition InterceptDefinition 19 | IdempotentConsumerDefinition] 20 | [org.apache.camel.model.language HeaderExpression MethodCallExpression PropertyExpression] 21 | [org.apache.camel.builder Builder RouteBuilder ValueBuilder SimpleBuilder 22 | DefaultErrorHandlerBuilder NoErrorHandlerBuilder LoggingErrorHandlerBuilder 23 | DeadLetterChannelBuilder ExpressionClause DataFormatClause] 24 | [org.apache.camel.builder.xml XPathBuilder] 25 | [org.apache.camel Endpoint NoSuchEndpointException LoggingLevel util.ObjectHelper] 26 | [org.slf4j Logger] 27 | [com.bpk.cljcamel RouteBuilderImpl]) 28 | (:require [clojure.tools.logging :as l]) 29 | (:refer-clojure :exclude [bean error-handler])) 30 | 31 | (defmacro setp [obj method val] 32 | `(when (not (nil? ~val)) 33 | (. ~obj ~method ~val))) 34 | 35 | (defn derive-all [tgt parents] 36 | (if (sequential? parents) 37 | (doseq [p parents] 38 | (derive tgt p)) 39 | (derive tgt parents))) 40 | 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 42 | ;; BuilderSupport DSL methods 43 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 44 | (defn header [name] 45 | (ValueBuilder. (HeaderExpression. (str name)))) 46 | 47 | (defn property [name] 48 | (ValueBuilder. (PropertyExpression. name))) 49 | 50 | (defn body 51 | ([] (Builder/body)) 52 | ([type] (Builder/bodyAs type))) 53 | 54 | (defn outBody 55 | ([] (Builder/outBody)) 56 | ([type] (Builder/outBodyAs type))) 57 | 58 | (defn faultBody 59 | ([] (Builder/faultBody)) 60 | ([type] (Builder/faultBodyAs type))) 61 | 62 | 63 | (defn systemProperty 64 | ([name] (Builder/systemProperty name)) 65 | ([name default] (Builder/systemProperty name default))) 66 | 67 | (defn constant [val] 68 | (Builder/constant val)) 69 | 70 | (defn simple 71 | ([value] (SimpleBuilder/simple value)) 72 | ([value type] (SimpleBuilder/simple value type))) 73 | 74 | (defn xpath [value] 75 | (XPathBuilder/xpath value)) 76 | 77 | (defn bean 78 | ([beanOrBeanRef] (bean beanOrBeanRef nil)) 79 | ([beanOrBeanRef method] (ValueBuilder. (MethodCallExpression. beanOrBeanRef method)))) 80 | 81 | (defn bean-by-type 82 | ([type] (ValueBuilder. (MethodCallExpression. type))) 83 | ([type method] (ValueBuilder. (MethodCallExpression. type method)))) 84 | 85 | (defn sendTo [uri] 86 | (Builder/sendTo uri)) 87 | 88 | (defn regexReplaceAll [expression-content regex string-replacement] 89 | (Builder/regexReplaceAll expression-content regex string-replacement)) 90 | 91 | (defn regexReplaceAll-expression [expression-content regex expression-replacement] 92 | (Builder/regexReplaceAll expression-content regex expression-replacement)) 93 | 94 | (defn exceptionMessage [] 95 | (Builder/exceptionMessage)) 96 | 97 | (defn endpoint 98 | ([ctx uri] 99 | (ObjectHelper/notNull uri "uri") 100 | (if-let [endpoint (.getEndpoint ctx uri)] 101 | endpoint 102 | (throw (NoSuchEndpointException. uri)))) 103 | ([ctx uri type] 104 | (ObjectHelper/notNull uri "uri") 105 | (if-let [endpoint (.getEndpoint ctx uri type)] 106 | endpoint 107 | (throw (NoSuchEndpointException. uri))))) 108 | 109 | (defn endpoints [uri-list] 110 | (java.util.ArrayList. (map endpoint uri-list))) 111 | 112 | (defn defaultErrorHandler [] 113 | (DefaultErrorHandlerBuilder.)) 114 | 115 | (defn noErrorHandler [] 116 | (NoErrorHandlerBuilder.)) 117 | 118 | (defn loggingErrorHandler 119 | ([] (LoggingErrorHandlerBuilder.)) 120 | ([log] (LoggingErrorHandlerBuilder. log)) 121 | ([log log-level] (LoggingErrorHandlerBuilder. log log-level))) 122 | 123 | (defn deadLetterChannel 124 | ([channel] 125 | (DeadLetterChannelBuilder. channel))) 126 | 127 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 128 | ;; MULTIMETHODS 129 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 130 | 131 | (defmulti handle-spec (fn [bldr key & _] 132 | (if (coll? key) 133 | [(class bldr) (first key)] 134 | [(class bldr) key]))) 135 | 136 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 137 | ;; EXPRESSION CLAUSE SUPPORT 138 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 139 | (defmethod handle-spec [ExpressionClause :expression] [ec _ expression] 140 | (.expression ec expression)) 141 | 142 | (defmethod handle-spec [ExpressionClause :constant] [ec _ val] 143 | (.constant ec val)) 144 | 145 | (defmethod handle-spec [ExpressionClause :exchange] [ec _] 146 | (.exchange ec)) 147 | 148 | (defmethod handle-spec [ExpressionClause :in-message] [ec _] 149 | (.inMessage ec)) 150 | 151 | (defmethod handle-spec [ExpressionClause :out-message] [ec _] 152 | (.outMessage ec)) 153 | 154 | (defmethod handle-spec [ExpressionClause :body] 155 | ([ec _] (.body ec)) 156 | ([ec _ type] (.body ec type))) 157 | 158 | (defmethod handle-spec [ExpressionClause :out-body] 159 | ([ec _] (.outBody ec)) 160 | ([ec _ type] (.outBody ec type))) 161 | 162 | (defmethod handle-spec [ExpressionClause :header] [ec _ name] 163 | (.header ec (str name))) 164 | 165 | (defmethod handle-spec [ExpressionClause :headers] [ec _] 166 | (.headers ec)) 167 | 168 | (defmethod handle-spec [ExpressionClause :out-header] [ec _ name] 169 | (.outHeader ec (str name))) 170 | 171 | (defmethod handle-spec [ExpressionClause :out-headers] [ec _] 172 | (.outHeaders ec)) 173 | 174 | (defmethod handle-spec [ExpressionClause :attachments] [ec _] 175 | (.attachments ec)) 176 | 177 | (defmethod handle-spec [ExpressionClause :property] [ec _ name] 178 | (.property ec (str name))) 179 | 180 | (defmethod handle-spec [ExpressionClause :properties] [ec _] 181 | (.properties ec)) 182 | 183 | (defmethod handle-spec [ExpressionClause :method] 184 | ([ec _ bean-name-instance-or-class] (.method ec bean-name-instance-or-class)) 185 | ([ec _ bean-name-instance-or-class method-name] (.method ec bean-name-instance-or-class method-name))) 186 | 187 | (defmethod handle-spec [ExpressionClause :el] [ec _ text] 188 | (.el ec text)) 189 | 190 | (defmethod handle-spec [ExpressionClause :groovy] [ec _ text] 191 | (.groovy ec text)) 192 | 193 | (defmethod handle-spec [ExpressionClause :javascript] [ec _ text] 194 | (.javaScript ec text)) 195 | 196 | (defmethod handle-spec [ExpressionClause :jxpath] [ec _ text] 197 | (.jxpath ec text)) 198 | 199 | (defmethod handle-spec [ExpressionClause :ognl] [ec _ text] 200 | (.ognl ec text)) 201 | 202 | (defmethod handle-spec [ExpressionClause :mvel] [ec _ text] 203 | (.mvel ec text)) 204 | 205 | (defmethod handle-spec [ExpressionClause :php] [ec _ text] 206 | (.php ec text)) 207 | 208 | (defmethod handle-spec [ExpressionClause :python] [ec _ text] 209 | (.python ec text)) 210 | 211 | (defmethod handle-spec [ExpressionClause :ref] [ec _ text] 212 | (.ref ec text)) 213 | 214 | (defmethod handle-spec [ExpressionClause :ruby] [ec _ text] 215 | (.ruby ec text)) 216 | 217 | (defmethod handle-spec [ExpressionClause :sql] [ec _ text] 218 | (.sql ec text)) 219 | 220 | (defmethod handle-spec [ExpressionClause :spel] [ec _ text] 221 | (.spel ec text)) 222 | 223 | (defmethod handle-spec [ExpressionClause :simple] 224 | ([ec _ text] (.simple ec text)) 225 | ([ec _ text type] (.simple ec text type))) 226 | 227 | (defmethod handle-spec [ExpressionClause :tokenize] 228 | ([ec _ token] (.tokenize ec token)) 229 | ([ec _ token header-name] (.tokenize ec token (str header-name))) 230 | ([ec _ token header-name regex] (.tokenize ec token (str header-name) regex))) 231 | 232 | (defmethod handle-spec [ExpressionClause :tokenize-pair] 233 | ([ec _ start-token end-token] (.tokenizePair ec start-token end-token)) 234 | ([ec _ start-token end-token include-tokens] (.tokenize ec start-token end-token include-tokens))) 235 | 236 | (defmethod handle-spec [ExpressionClause :tokenize-xml] 237 | ([ec _ tag-name] (.tokenizeXML ec tag-name)) 238 | ([ec _ tag-name inherit-namespace-tag-name] (.tokenizeXML ec tag-name inherit-namespace-tag-name))) 239 | 240 | (defmethod handle-spec [ExpressionClause :xpath] 241 | ([ec _ text] (.xpath ec text)) 242 | ([ec _ text type-or-namespace] (.xpath ec text type-or-namespace)) 243 | ([ec _ text type namespaces] (.xpath ec text type namespaces))) 244 | 245 | (defmethod handle-spec [ExpressionClause :xquery] 246 | ([ec _ text] (.xquery ec text)) 247 | ([ec _ text type-or-namespace] (.xquery ec text type-or-namespace)) 248 | ([ec _ text type namespaces] (.xquery ec text type namespaces))) 249 | 250 | 251 | (defmethod handle-spec [ExpressionClause :language] [ec _ lang expression] 252 | (.language ec lang expression)) 253 | 254 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 255 | 256 | (defmethod handle-spec [ProcessorDefinition :to] 257 | ([rd _ dest exchange-pattern] (. rd to exchange-pattern dest)) 258 | ([rd _ dest] (. rd to dest))) 259 | 260 | 261 | (defmethod handle-spec [ProcessorDefinition :placeholder] [rd _ option key] 262 | (. rd placeholder option key)) 263 | 264 | (defmethod handle-spec [ProcessorDefinition :attribute] [rd _ name value] 265 | (. rd attribute name value)) 266 | 267 | (defmethod handle-spec [ProcessorDefinition :set-exchange-pattern] [rd _ exchange-pattern] 268 | (. rd setExchangePattern exchange-pattern)) 269 | 270 | (defmethod handle-spec [ProcessorDefinition :in-only] [rd _ uris] 271 | (. rd inOnly uris)) 272 | 273 | (defmethod handle-spec [ProcessorDefinition :in-out] [rd _ uris] 274 | (. rd inOut uris)) 275 | 276 | (defmethod handle-spec [ProcessorDefinition :id] [rd _ id] 277 | (. rd id id)) 278 | 279 | (defmethod handle-spec [ProcessorDefinition :route-id] [rd _ route-id] 280 | (. rd routeId route-id)) 281 | 282 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 283 | ;; COMMON METHODS 284 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 285 | 286 | (defmethod handle-spec [::agg-strategy-aware :aggregation-strategy] [rd _ agg-strategy] 287 | (.aggregationStrategy rd agg-strategy)) 288 | 289 | (defmethod handle-spec [::agg-strategy-aware :aggregation-strategy-ref] [rd _ agg-strategy-ref] 290 | (.aggregationStrategyRef rd agg-strategy-ref)) 291 | 292 | (defmethod handle-spec [::parallel-processing-aware :parallel-processing] [rd _] 293 | (. rd parallelProcessing)) 294 | 295 | (defmethod handle-spec [::executor-service-aware :executor-service] [rd _ executor-service] 296 | (.executorService rd executor-service)) 297 | 298 | (defmethod handle-spec [::executor-service-aware :executor-service-ref] [rd _ executor-service-ref] 299 | (.executorServiceRef rd executor-service-ref)) 300 | 301 | (defmethod handle-spec [::streaming-aware :streaming] [rd _] 302 | (.streaming rd)) 303 | 304 | (defmethod handle-spec [::stop-on-exception-aware :stop-on-exception] [rd _] 305 | (.stopOnException rd)) 306 | 307 | (defmethod handle-spec [::timeout-aware :timeout] [rd _ timeout] 308 | (.timeout rd timeout)) 309 | 310 | (defmethod handle-spec [::on-prepare-aware :on-prepare] [rd _ on-prepare] 311 | (.onPrepare rd on-prepare)) 312 | 313 | (defmethod handle-spec [::on-prepare-aware :on-prepare-ref] [rd _ on-prepare-ref] 314 | (.onPrepareRef rd on-prepare-ref)) 315 | 316 | (defmethod handle-spec [::share-unit-of-work-aware :share-unit-of-work] [rd _] 317 | (.shareUnitOfWork rd)) 318 | 319 | (defmethod handle-spec [::caller-runs-when-rejected-aware :caller-runs-when-rejected] [rd _] 320 | (.callerRunsWhenRejected rd)) 321 | 322 | (defmethod handle-spec [::async-delayed-aware :async-delayed] [rd _] 323 | (.asyncDelayed rd)) 324 | 325 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 326 | ;; MULTICAST DEFINITION 327 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 328 | 329 | (derive-all MulticastDefinition [::agg-strategy-aware ::parallel-processing-aware ::executor-service-aware 330 | ::streaming-aware ::stop-on-exception-aware ::timeout-aware ::on-prepare-aware 331 | ::share-unit-of-work-aware]) 332 | 333 | (defmethod handle-spec [ProcessorDefinition :multicast] [rd _] 334 | (.multicast rd )) 335 | 336 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 337 | 338 | (defmethod handle-spec [ProcessorDefinition :pipeline] [rd _ uris] 339 | (. rd pipeline uris)) 340 | 341 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 342 | ;; THREADS DSL 343 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 344 | (derive-all ThreadsDefinition [::executor-service-aware ::caller-runs-when-rejected-aware]) 345 | 346 | (defmethod handle-spec [ThreadsDefinition :pool-size] [td _ pool-size] 347 | (.poolSize td pool-size)) 348 | 349 | (defmethod handle-spec [ThreadsDefinition :max-pool-size] [td _ max-pool-size] 350 | (.maxPoolSize td max-pool-size)) 351 | 352 | (defmethod handle-spec [ThreadsDefinition :keep-alive-time] [td _ keep-alive-time] 353 | (.keepAliveTime td keep-alive-time)) 354 | 355 | (defmethod handle-spec [ThreadsDefinition :time-unit] [td _ time-unit] 356 | (.timeUnit td time-unit)) 357 | 358 | (defmethod handle-spec [ThreadsDefinition :max-queue-size] [td _ max-queue-size] 359 | (.maxQueueSize td max-queue-size)) 360 | 361 | (defmethod handle-spec [ThreadsDefinition :thread-name] [td _ thread-name] 362 | (.threadName td thread-name)) 363 | 364 | (defmethod handle-spec [ThreadsDefinition :rejected-policy] [td _ rejected-policy] 365 | (.rejectedPolicy td rejected-policy)) 366 | 367 | (defmethod handle-spec [ProcessorDefinition :threads] [rd _] 368 | (. rd threads)) 369 | 370 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 371 | 372 | (defmethod handle-spec [ProcessorDefinition :end] [rd _] 373 | (. rd end)) 374 | 375 | (defmethod handle-spec [ProcessorDefinition :end-parent] [rd _] 376 | (. rd endParent)) 377 | 378 | (defmethod handle-spec [ProcessorDefinition :end-choice] [rd _] 379 | (. rd endChoice)) 380 | 381 | (defmethod handle-spec [ProcessorDefinition :end-do-try] [rd _] 382 | (. rd endDoTry)) 383 | 384 | (defmethod handle-spec [ProcessorDefinition :idempotent-consumer] 385 | ([rd _ message-id-expression] (. rd idempotentConsumer message-id-expression)) 386 | ([rd _ message-id-expression idempotent-repository] (. rd idempotentConsumer message-id-expression idempotent-repository))) 387 | 388 | (defmethod handle-spec [ProcessorDefinition :filter] 389 | ([rd _ pred] (. rd filter pred)) 390 | ([rd _] (. rd filter))) 391 | 392 | (defmethod handle-spec [ProcessorDefinition :validate] [rd _ expression] 393 | (. rd validate expression)) 394 | 395 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 396 | ;; IDEMPOTENT CONSUMER DSL 397 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 398 | 399 | (defmethod handle-spec [IdempotentConsumerDefinition :message-id-repository-ref] 400 | [cd _ ref] (.messageIdRepositoryRef cd ref)) 401 | 402 | (defmethod handle-spec [IdempotentConsumerDefinition :message-id-repository] 403 | [cd _ repo] (.messageIdRepository cd repo)) 404 | 405 | (defmethod handle-spec [IdempotentConsumerDefinition :eager] 406 | [cd _ is-eager] (.eager cd is-eager)) 407 | 408 | (defmethod handle-spec [IdempotentConsumerDefinition :remove-on-failure] 409 | [cd _ is-remove] (.removeOnFailure cd is-remove)) 410 | 411 | (defmethod handle-spec [IdempotentConsumerDefinition :skip-duplicate] 412 | [cd _ is-skip-duplicate] (.skipDuplicate cd is-skip-duplicate)) 413 | 414 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 415 | ;; LOADBALANCE DEF 416 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 417 | 418 | ;; TO BE IMPLEMENTED 419 | 420 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 421 | 422 | (defmethod handle-spec [ProcessorDefinition :log] 423 | ([rd _ message] (. rd log message)) 424 | ([rd _ logging-level message] (. rd log logging-level message)) 425 | ([rd _ logging-level log-name message] (. rd log logging-level log-name message)) 426 | ([rd _ looging-level log-name marker message] (. rd log looging-level log-name marker message))) 427 | 428 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 429 | ;; CHOICE DEFINITION 430 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 431 | (defmethod handle-spec [ProcessorDefinition :choice] [rd _ & when-clauses] 432 | (.choice rd )) 433 | 434 | (defmethod handle-spec [ChoiceDefinition :when] 435 | ([cd _] (.when cd)) 436 | ([cd _ pred] (.when cd pred))) 437 | 438 | (defmethod handle-spec [ChoiceDefinition :otherwise] [cd _] 439 | (.otherwise cd)) 440 | 441 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 442 | ;; TRY CATCH FINALLY 443 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 444 | (defmethod handle-spec [ProcessorDefinition :do-try] [rd _] 445 | (.doTry rd)) 446 | 447 | (defmethod handle-spec [TryDefinition :do-catch] [rd _ & exceptions] 448 | (.doCatch rd (into-array exceptions))) 449 | 450 | (defmethod handle-spec [TryDefinition :do-finally] [rd _] 451 | (.doFinally rd)) 452 | 453 | (defmethod handle-spec [TryDefinition :on-when] [rd _ predicate] 454 | (.onWhen rd predicate)) 455 | 456 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 457 | ;; RECIPIENT LIST 458 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 459 | 460 | (derive-all RecipientListDefinition [::agg-strategy-aware ::parallel-processing-aware ::executor-service-aware 461 | ::streaming-aware ::stop-on-exception-aware ::timeout-aware ::on-prepare-aware 462 | ::share-unit-of-work-aware]) 463 | 464 | (defmethod handle-spec [ProcessorDefinition :recipient-list] 465 | ([rd _] (.recipientList rd)) 466 | ([rd _ recipients] (.recipientList rd recipients)) 467 | ([rd _ recipients delimiter] (.recipientList rd recipients delimiter))) 468 | 469 | (defmethod handle-spec [RecipientListDefinition :ignore-invalid-endpoints] [rd _] 470 | (.ignoreInvalidEndpoints rd)) 471 | 472 | 473 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 474 | ;; ROUTING SLIP 475 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 476 | 477 | (defmethod handle-spec [ProcessorDefinition :routing-slip] 478 | ([rd _] (.routingSlip rd)) 479 | ([rd _ expression] (.routingSlip rd expression)) 480 | ([rd _ expression delimiter] (.routingList rd expression delimiter))) 481 | 482 | (defmethod handle-spec [RoutingSlipDefinition :ignore-invalid-endpoints] [rd _] 483 | (.ignoreInvalidEndpoints rd)) 484 | 485 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 486 | ;; DYNAMIC ROUTER 487 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 488 | 489 | (defmethod handle-spec [ProcessorDefinition :dynamic-router] 490 | ([rd _] (.dynamicRouter rd)) 491 | ([rd _ expression] (.dynamicRouter rd expression))) 492 | 493 | (defmethod handle-spec [DynamicRouterDefinition :ignore-invalid-endpoints] [rd _] 494 | (.ignoreInvalidEndpoints rd)) 495 | 496 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 497 | ;;; SAMPLE DEFINITION 498 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 499 | 500 | (defmethod handle-spec [ProcessorDefinition :sample] 501 | ([rd _] (.sample rd)) 502 | ([rd _ sample-period time-unit] (.sample rd sample-period time-unit)) 503 | ([rd _ message-frequency] (.sample rd message-frequency))) 504 | 505 | (defmethod handle-spec [SamplingDefinition :sample-message-frequency] [sd _ message-frequency] 506 | (.messageFrequency sd message-frequency)) 507 | 508 | (defmethod handle-spec [SamplingDefinition :sample-period] [sd _ sample-period] 509 | (.samplePeriod sd sample-period)) 510 | 511 | (defmethod handle-spec [SamplingDefinition :time-units] [sd _ time-units] 512 | (.timeUnits sd time-units)) 513 | 514 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 515 | ;; SPLIT DEFINITION 516 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 517 | 518 | (derive-all SplitDefinition [::agg-strategy-aware ::parallel-processing-aware ::executor-service-aware 519 | ::streaming-aware ::stop-on-exception-aware ::timeout-aware ::on-prepare-aware 520 | ::share-unit-of-work-aware]) 521 | 522 | (defmethod handle-spec [ProcessorDefinition :split] 523 | ([rd _] (.split rd)) 524 | ([rd _ expression] (.split rd expression)) 525 | ([rd _ expression agg-strategy] (.split rd expression agg-strategy))) 526 | 527 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 528 | ;;;;; Resequence 529 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 530 | 531 | (derive ResequenceDefinition ::timeout-aware) 532 | 533 | (defmethod handle-spec [ProcessorDefinition :resequence] 534 | ([rd _] (.resequence rd)) 535 | ([rd _ expression] (.resequence rd expression))) 536 | 537 | (defmethod handle-spec [ResequenceDefinition :stream] 538 | ([rd _] (.stream rd)) 539 | ([rd _ config] (.stream rd config))) 540 | 541 | (defmethod handle-spec [ResequenceDefinition :batch] 542 | ([rd _] (.batch rd)) 543 | ([rd _ config] (.batch rd config))) 544 | 545 | (defmethod handle-spec [ResequenceDefinition :size] [rd _ batch-size] 546 | (.size rd batch-size)) 547 | 548 | (defmethod handle-spec [ResequenceDefinition :capacity] [rd _ capacity] 549 | (.capacity rd capacity)) 550 | 551 | (defmethod handle-spec [ResequenceDefinition :allow-duplicates] [rd _] 552 | (.allowDuplicates rd)) 553 | 554 | (defmethod handle-spec [ResequenceDefinition :reverse] [rd _] 555 | (.reverse rd)) 556 | 557 | (defmethod handle-spec [ResequenceDefinition :ignore-invalid-exchanges] [rd _] 558 | (.ignoreInvalidExchanges rd)) 559 | 560 | (defmethod handle-spec [ResequenceDefinition :comparator] [rd _ comparator] 561 | (.comparator rd comparator)) 562 | 563 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 564 | ;; AGGREGATE DEFINITION 565 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 566 | 567 | (derive-all AggregateDefinition [::agg-strategy-aware ::parallel-processing-aware ::executor-service-aware 568 | ::streaming-aware ::stop-on-exception-aware ::timeout-aware ::on-prepare-aware 569 | ::share-unit-of-work-aware]) 570 | 571 | (defmethod handle-spec [ProcessorDefinition :aggregate] 572 | ([rd _] (.aggregate rd)) 573 | ([rd _ expression-or-strategy] (.aggregate rd expression-or-strategy)) 574 | ([rd _ expression agg-strategy] (.aggregate rd expression agg-strategy))) 575 | 576 | (defmethod handle-spec [AggregateDefinition :eager-check-completion] [asd _] 577 | (.eagerCheckCompletion asd)) 578 | 579 | (defmethod handle-spec [AggregateDefinition :ignore-invalid-correlation-keys] [asd _] 580 | (.ignoreInvalidCorrelationKeys asd)) 581 | 582 | (defmethod handle-spec [AggregateDefinition :close-correlation-key-on-completion] [asd _ capacity] 583 | (.closeCorrelationKeyOnCompletion asd capacity)) 584 | 585 | (defmethod handle-spec [AggregateDefinition :discard-on-completion-timeout] [asd _] 586 | (.discardOnCompletionTimeout asd)) 587 | 588 | (defmethod handle-spec [AggregateDefinition :completion-from-batch-consumer] [asd _] 589 | (.completionFromBatchConsumer asd)) 590 | 591 | (defmethod handle-spec [AggregateDefinition :completion-size] [asd _ size] 592 | (.completionSize asd size)) 593 | 594 | (defmethod handle-spec [AggregateDefinition :completion-interval] [asd _ interval] 595 | (.completionInterval asd interval)) 596 | 597 | (defmethod handle-spec [AggregateDefinition :completion-timeout] [asd _ timeout] 598 | (.completionTimeout asd timeout)) 599 | 600 | (defmethod handle-spec [AggregateDefinition :agg-repository] [asd _ repo] 601 | (.aggregationRepository asd repo)) 602 | 603 | (defmethod handle-spec [AggregateDefinition :agg-repository-ref] [asd _ repo-ref] 604 | (.aggregationRepositoryRef asd repo-ref)) 605 | 606 | (defmethod handle-spec [AggregateDefinition :group-exchanges] [asd _] 607 | (.group-exchanges asd)) 608 | 609 | (defmethod handle-spec [AggregateDefinition :completion-predicate] [asd _ pred] 610 | (.completionPredicate asd pred)) 611 | 612 | (defmethod handle-spec [AggregateDefinition :force-completion-on-stop] [asd _] 613 | (.forceCompletionOnStop asd)) 614 | 615 | (defmethod handle-spec [AggregateDefinition :timeout-checker-executor-service] [asd _ svc] 616 | (.timeoutCheckerExecutorService asd svc)) 617 | 618 | (defmethod handle-spec [AggregateDefinition :timeout-checker-executor-service-ref] [asd _ svc-ref] 619 | (.timeoutCheckerExecutorServiceRef asd svc-ref)) 620 | 621 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 622 | ;; DELAY DEFINITION 623 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 624 | 625 | (derive-all DelayDefinition [::executor-service-aware ::caller-runs-when-rejected-aware ::async-delayed-aware]) 626 | 627 | (defmethod handle-spec [ProcessorDefinition :throttle] [rd _ max-request-count] 628 | (.throttle rd max-request-count)) 629 | 630 | (defmethod handle-spec [ThrottleDefinition :time-period-millis] [dd _ time] 631 | (.timePeriodMillis dd time)) 632 | 633 | (defmethod handle-spec [ThrottleDefinition :maximum-requests-per-period] [dd _ max-requests] 634 | (.maximumRequestsPerPeriod dd max-requests)) 635 | 636 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 637 | ;; THROTTLE DEFINITION 638 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 639 | 640 | (derive-all ThrottleDefinition [::executor-service-aware ::caller-runs-when-rejected-aware ::async-delayed-aware]) 641 | 642 | (defmethod handle-spec [ProcessorDefinition :delay] 643 | ([rd _] (.delay rd)) 644 | ([rd _ expression-or-time] (.delay rd expression-or-time))) 645 | 646 | (defmethod handle-spec [DelayDefinition :delay-time] [dd _ time] 647 | (.delayTime dd time)) 648 | 649 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 650 | ;; LOOP DEFINITION 651 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 652 | 653 | (defmethod handle-spec [ProcessorDefinition :loop] 654 | ([rd _] (.loop rd)) 655 | ([rd _ count] (.loop rd count))) 656 | 657 | (defmethod handle-spec [LoopDefinition :copy] [dd _] 658 | (.copy dd)) 659 | 660 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 661 | 662 | (defmethod handle-spec [ProcessorDefinition :throw-exception] [rd _ e] 663 | (.throwException rd e)) 664 | 665 | (defmethod handle-spec [ProcessorDefinition :mark-rollback-only] [rd _] 666 | (.markRollbackOnly rd)) 667 | 668 | (defmethod handle-spec [ProcessorDefinition :mark-rollback-only-last] [rd _] 669 | (.markRollbackOnlyLast rd)) 670 | 671 | (defmethod handle-spec [ProcessorDefinition :rollback] 672 | ([rd _] (.rollback rd)) 673 | ([rd _ message] (.rollback rd message))) 674 | 675 | (defmethod handle-spec [ProcessorDefinition :wire-tap] [rd _ uri] 676 | (.wireTap rd uri)) 677 | 678 | (defmethod handle-spec [ProcessorDefinition :stop] [rd _] 679 | (.stop rd)) 680 | 681 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 682 | ;; ONEXCEPTION DEFINITION 683 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 684 | 685 | (defmethod handle-spec [ProcessorDefinition :on-exception] [rd _ exceptions] 686 | (.onException rd exceptions)) 687 | 688 | (defmethod handle-spec [OnExceptionDefinition :redelivery-delay] [ed _ delay] 689 | (.redeliveryDelay ed delay)) 690 | 691 | (defmethod handle-spec [OnExceptionDefinition :maximum-redeliveries] [ed _ max] 692 | (.maximumRedeliveries ed max)) 693 | 694 | (defmethod handle-spec [OnExceptionDefinition :maximum-redelivery-delay] [ed _ max] 695 | (.maximumRedeliveryDelay ed max)) 696 | 697 | (defmethod handle-spec [OnExceptionDefinition :use-exponential-back-off] [ed _] 698 | (.useExponentialBackOff ed)) 699 | 700 | (defmethod handle-spec [OnExceptionDefinition :back-off-multiplier] [ed _ m] 701 | (.backOffMultiplier ed m)) 702 | 703 | (defmethod handle-spec [OnExceptionDefinition :use-collision-avoidance] [ed _] 704 | (.useCollisionAvoidance ed)) 705 | 706 | (defmethod handle-spec [OnExceptionDefinition :retry-exhausted-log-level] [ed _ level] 707 | (.retryExhaustedLogLevel ed level)) 708 | 709 | (defmethod handle-spec [OnExceptionDefinition :retry-attempted-log-level] [ed _ level] 710 | (.retryAttemptedLogLevel ed level)) 711 | 712 | 713 | (defmethod handle-spec [OnExceptionDefinition :log-stack-trace] [ed _ y-or-n] 714 | (.logStackTrace ed y-or-n)) 715 | 716 | (defmethod handle-spec [OnExceptionDefinition :log-retry-stack-trace] [ed _ y-or-n] 717 | (.logRetryStackTrace ed y-or-n)) 718 | 719 | (defmethod handle-spec [OnExceptionDefinition :log-handled] [ed _ y-or-n] 720 | (.logHandled ed y-or-n)) 721 | 722 | (defmethod handle-spec [OnExceptionDefinition :log-continued] [ed _ y-or-n] 723 | (.logContinued ed y-or-n)) 724 | 725 | (defmethod handle-spec [OnExceptionDefinition :log-exhausted] [ed _ y-or-n] 726 | (.logExhausted ed y-or-n)) 727 | 728 | (defmethod handle-spec [OnExceptionDefinition :log-retry-attempted] [ed _ y-or-n] 729 | (.logRetryAttempted ed y-or-n)) 730 | 731 | (defmethod handle-spec [OnExceptionDefinition :handled] [ed _ y-or-n] 732 | (.handled ed y-or-n)) 733 | 734 | (defmethod handle-spec [OnExceptionDefinition :continued] [ed _ y-or-n] 735 | (.continued ed y-or-n)) 736 | 737 | (defmethod handle-spec [OnExceptionDefinition :async-delayed-redelivery] [ed _] 738 | (.asyncDelayedRedelivery ed)) 739 | 740 | (defmethod handle-spec [OnExceptionDefinition :use-original-message] [ed _] 741 | (.useOriginalMessage ed)) 742 | 743 | (defmethod handle-spec [OnExceptionDefinition :on-when] [ed _ pred] 744 | (.onWhen ed pred)) 745 | 746 | (defmethod handle-spec [OnExceptionDefinition :redelivery-policy-ref] [ed _ ref] 747 | (.redeliveryPolicyRef ed ref)) 748 | 749 | (defmethod handle-spec [OnExceptionDefinition :delay-pattern] [ed _ pat] 750 | (.delayPattern ed pat)) 751 | 752 | (defmethod handle-spec [OnExceptionDefinition :on-redelivery] [ed _ processor] 753 | (.onRedelivery ed processor)) 754 | 755 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 756 | 757 | (defmethod handle-spec [ProcessorDefinition :policy] [rd _ p] 758 | (.policy rd p)) 759 | 760 | (defmethod handle-spec [ProcessorDefinition :transacted] 761 | ([rd _] (.transacted rd)) 762 | ([rd _ policy-ref] (.transacted rd policy-ref))) 763 | 764 | (defmethod handle-spec [ProcessorDefinition :process] [rd _ proc] 765 | (.process rd proc)) 766 | 767 | (defmethod handle-spec [ProcessorDefinition :process-ref] [rd _ proc] 768 | (.processRef rd proc)) 769 | 770 | (defmethod handle-spec [ProcessorDefinition :bean] 771 | ([rd _ bean] (.bean rd bean)) 772 | ([rd _ bean method] (.bean rd bean method))) 773 | 774 | (defmethod handle-spec [ProcessorDefinition :bean-ref] 775 | ([rd _ bean-ref] (.beanRef rd bean-ref)) 776 | ([rd _ bean-ref method] (.beanRef rd bean-ref method))) 777 | 778 | (defmethod handle-spec [ProcessorDefinition :set-body] 779 | ([rd _] (.setBody rd)) 780 | ([rd _ expression] (.setBody rd expression))) 781 | 782 | (defmethod handle-spec [ProcessorDefinition :transform] 783 | ([rd _] (.transform rd)) 784 | ([rd _ expression] (.transform rd expression))) 785 | 786 | (defmethod handle-spec [ProcessorDefinition :set-fault-body] [rd _ body] 787 | (.setFaultBody rd body)) 788 | 789 | (defmethod handle-spec [ProcessorDefinition :set-header] 790 | ([rd _ name] (.setHeader rd (str name))) 791 | ([rd _ name expression] (.setHeader rd (str name) expression))) 792 | 793 | (defmethod handle-spec [ProcessorDefinition :set-property] 794 | ([rd _ name] (.setProperty rd name)) 795 | ([rd _ name expression] (.setProperty rd name expression))) 796 | 797 | (defmethod handle-spec [ProcessorDefinition :remove-header] [rd _ name] 798 | (.removeHeader rd (str name))) 799 | 800 | (defmethod handle-spec [ProcessorDefinition :remove-headers] 801 | ([rd _ patterns] (.removeHeaders rd patterns)) 802 | ([rd _ patterns exclude-patterns] (.removeHeaders rd patterns exclude-patterns))) 803 | 804 | (defmethod handle-spec [ProcessorDefinition :remove-property] [rd _ name] 805 | (.removeProperty rd (str name))) 806 | 807 | (defmethod handle-spec [ProcessorDefinition :convert-body-to] 808 | ([rd _ cls] (.convertBodyTo rd cls)) 809 | ([rd _ cls char-set] (.convertBodyTo rd cls char-set))) 810 | 811 | (defmethod handle-spec [ProcessorDefinition :sort] 812 | ([rd _] (.sort rd)) 813 | ([rd _ expression] (.sort rd expression)) 814 | ([rd _ expression comparator] (.sort rd expression comparator))) 815 | 816 | (defmethod handle-spec [ProcessorDefinition :enrich] 817 | ([rd _ uri] (.enrich rd uri)) 818 | ([rd _ uri agg-strategy] (.enrich rd uri agg-strategy))) 819 | 820 | (defmethod handle-spec [ProcessorDefinition :enrich-ref] [rd _ uri agg-strategy-ref] 821 | (.enrichRef rd uri agg-strategy-ref)) 822 | 823 | (defmethod handle-spec [ProcessorDefinition :poll-enrich] 824 | ([rd _ uri] (.pollEnrich rd uri)) 825 | ([rd _ uri agg-strategy-or-timeout] (.pollEnrich rd uri agg-strategy-or-timeout)) 826 | ([rd _ uri timeout agg-strategy] (.pollEnrich rd uri timeout agg-strategy))) 827 | 828 | (defmethod handle-spec [ProcessorDefinition :poll-enrich-ref] [rd _ uri timeout agg-strategy-ref] 829 | (.pollEnrichRef rd uri timeout agg-strategy-ref)) 830 | 831 | (defmethod handle-spec [ProcessorDefinition :inherit-error-handler] [rd _ y-or-n] 832 | (.inheritErrorHandler rd y-or-n)) 833 | 834 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 835 | ;; ONCOMPLETION DEFINITION 836 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 837 | (derive OnCompletionDefinition ::executor-service-aware) 838 | 839 | (defmethod handle-spec [ProcessorDefinition :on-completion] [rd _] 840 | (.onCompletion rd)) 841 | 842 | (defmethod handle-spec [OnCompletionDefinition :on-complete-only] [rd _] 843 | (.onCompleteOnly rd)) 844 | 845 | (defmethod handle-spec [OnCompletionDefinition :on-failure-only] [rd _] 846 | (.onFailureOnly rd)) 847 | 848 | (defmethod handle-spec [OnCompletionDefinition :on-when] [rd _ pred] 849 | (.onWhen rd pred)) 850 | 851 | (defmethod handle-spec [OnCompletionDefinition :use-original-body] [rd _] 852 | (.useOriginalBody rd)) 853 | 854 | 855 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 856 | ;; DATAFORMAT DEFINITION 857 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 858 | (defmethod handle-spec [ProcessorDefinition :unmarshal] 859 | ([rd _] (.unmarshal rd)) 860 | ([rd _ format-type] (.unmarshal rd format-type))) 861 | 862 | (defmethod handle-spec [ProcessorDefinition :marshal] 863 | ([rd _] (.marshal rd)) 864 | ([rd _ format-type] (.marshal rd format-type))) 865 | 866 | (defmethod handle-spec [DataFormatClause :bindy] [rd _ bindy-type packages] 867 | (.bindy rd bindy-type packages)) 868 | 869 | (defmethod handle-spec [DataFormatClause :csv] [rd _] 870 | (.csv rd)) 871 | 872 | (defmethod handle-spec [DataFormatClause :custom] [rd _ ref] 873 | (.custom rd ref)) 874 | 875 | (defmethod handle-spec [DataFormatClause :castor] 876 | ([rd _] (.castor rd)) 877 | ([rd _ mapping-file] (.castor rd mapping-file)) 878 | ([rd _ mapping-file validation] (.castor rd mapping-file validation))) 879 | 880 | (defmethod handle-spec [DataFormatClause :gzip] [rd _] 881 | (.gzip rd)) 882 | 883 | (defmethod handle-spec [DataFormatClause :hl7] 884 | ([rd _] (.hl7 rd)) 885 | ([rd _ validate] (.hl7 rd validate))) 886 | 887 | (defmethod handle-spec [DataFormatClause :pgp] 888 | ([rd _ key-file user-id] (.pgp key-file user-id)) 889 | ([rd _ key-file user-id password] (.pgp key-file user-id password)) 890 | ([rd _ key-file user-id password armored integrity] (.pgp key-file user-id password armored integrity))) 891 | 892 | (defmethod handle-spec [DataFormatClause :jaxb] 893 | ([rd _] (.jaxb rd)) 894 | ([rd _ context-path-or-pretty-print] (.jaxb rd context-path-or-pretty-print))) 895 | 896 | (defmethod handle-spec [DataFormatClause :jixb] 897 | ([rd _] (.jixb rd)) 898 | ([rd _ cls] (.jixb rd cls))) 899 | 900 | (defmethod handle-spec [DataFormatClause :json] 901 | ([rd _] (.json rd)) 902 | ([rd _ lib] (.json rd lib)) 903 | ([rd _ lib cls] (.json rd lib cls))) 904 | 905 | (defmethod handle-spec [DataFormatClause :protobuf] 906 | ([rd _] (.protobuf rd)) 907 | ([rd _ instance-or-instance-name] (.protobuf rd instance-or-instance-name))) 908 | 909 | (defmethod handle-spec [DataFormatClause :rss] [rd _] 910 | (.rss rd)) 911 | 912 | (defmethod handle-spec [DataFormatClause :serialization] [rd _] 913 | (.serialization rd)) 914 | 915 | (defmethod handle-spec [DataFormatClause :soapjaxb] 916 | ([rd _] (.soapjaxb rd)) 917 | ([rd _ context-path] (.soapjaxb rd context-path)) 918 | ([rd _ context-path elem-strategy-name-or-ref] (.soapjaxb rd context-path elem-strategy-name-or-ref))) 919 | 920 | (defmethod handle-spec [DataFormatClause :string] 921 | ([rd _] (.string rd)) 922 | ([rd _ char-set] (.string rd char-set))) 923 | 924 | (defmethod handle-spec [DataFormatClause :syslog] [rd _] 925 | (.syslog rd)) 926 | 927 | (defmethod handle-spec [DataFormatClause :tidy-markup] 928 | ([rd _] (.tidyMarkup rd)) 929 | ([rd _ cls] (.tidyMarkup rd cls))) 930 | 931 | (defmethod handle-spec [DataFormatClause :xstream] 932 | ([rd _] (.xstream rd)) 933 | ([rd _ encoding] (.xstream rd encoding))) 934 | 935 | (defmethod handle-spec [DataFormatClause :xml-beans] [rd _] 936 | (.xmlBeans rd)) 937 | 938 | (defmethod handle-spec [DataFormatClause :zip] 939 | ([rd _] (.zip rd)) 940 | ([rd _ compression-level] (.tidyMarkup rd compression-level))) 941 | 942 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 943 | ;; FROM DEFINITIONS 944 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 945 | 946 | (defmethod handle-spec [RouteBuilder :from] [rb _ endpoints] 947 | (.from rb endpoints)) 948 | 949 | (defmethod handle-spec [RouteBuilder :fromF] [rb _ uri args] 950 | (.from rb uri args)) 951 | 952 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 953 | ;; ROUTEDEFINITION 954 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 955 | 956 | (defmethod handle-spec [RouteDefinition :route-id] [rd _ route-id] 957 | (.routeId rd route-id)) 958 | 959 | (defmethod handle-spec [RouteDefinition :group] [rd _ name] 960 | (.group rd name)) 961 | 962 | (defmethod handle-spec [RouteDefinition :no-stream-caching] [rd _] 963 | (.noStreamCaching rd)) 964 | 965 | (defmethod handle-spec [RouteDefinition :stream-caching] [rd _] 966 | (.streamCaching rd)) 967 | 968 | (defmethod handle-spec [RouteDefinition :no-tracing] [rd _] 969 | (.noTracing rd)) 970 | 971 | (defmethod handle-spec [RouteDefinition :tracing] [rd _] 972 | (.tracing rd)) 973 | 974 | (defmethod handle-spec [RouteDefinition :no-handle-fault] [rd _] 975 | (.noHandleFault rd)) 976 | 977 | (defmethod handle-spec [RouteDefinition :handle-fault] [rd _] 978 | (.handleFault rd)) 979 | 980 | (defmethod handle-spec [RouteDefinition :no-delayer] [rd _] 981 | (.noDelayer rd)) 982 | 983 | (defmethod handle-spec [RouteDefinition :delayer] [rd _] 984 | (.delayer rd)) 985 | 986 | (defmethod handle-spec [RouteDefinition :no-auto-startup] [rd _] 987 | (.noAutoStartup rd)) 988 | 989 | (defmethod handle-spec [RouteDefinition :auto-startup] [rd _] 990 | (.autoStartup rd)) 991 | 992 | (defmethod handle-spec [RouteDefinition :startup-order] [rd _ order] 993 | (.startupOrder rd order)) 994 | 995 | (defmethod handle-spec [RouteDefinition :route-policy] [rd _ policies] 996 | (.routePolicy rd policies)) 997 | 998 | (defmethod handle-spec [RouteDefinition :route-policy-ref] [rd _ policy-ref] 999 | (.routePolicyRef rd policy-ref)) 1000 | 1001 | (defmethod handle-spec [RouteDefinition :shutdown-route] [rd _ default-or-defer] 1002 | (.shutdownRoute rd default-or-defer)) 1003 | 1004 | (defmethod handle-spec [RouteDefinition :shutdown-running-task] [rd _ complete-current-or-all] 1005 | (.shutdownRunningTask rd complete-current-or-all)) 1006 | 1007 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1008 | ;; INTERCEPT DEFINITION 1009 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1010 | 1011 | (defmethod handle-spec [RouteBuilder :intercept] [rb _] 1012 | (.intercept rb)) 1013 | 1014 | (defmethod handle-spec [InterceptDefinition :when] [id _ pred] 1015 | (.when id pred)) 1016 | 1017 | (defmethod handle-spec [RouteBuilder :intercept-from] 1018 | ([rb _] (.interceptFrom rb)) 1019 | ([rb _ uri] (.interceptFrom rb uri))) 1020 | 1021 | (defmethod handle-spec [RouteBuilder :intercept-send-to-endpoint] [rb _ uri] 1022 | (.interceptSendToEndpoint rb uri)) 1023 | 1024 | (defmethod handle-spec [InterceptSendToEndpointDefinition :when] [id _ pred] 1025 | (.when id pred)) 1026 | 1027 | (defmethod handle-spec [InterceptSendToEndpointDefinition :skip-send-to-original-endpoint] [id _] 1028 | (.setSkipSendToOriginalEndpoint id)) 1029 | 1030 | (defmethod handle-spec [RouteBuilder :on-exception] [rb _ exceptions] 1031 | (.onException rb exceptions)) 1032 | 1033 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1034 | ;; ONCOMPLETION DEFINITION 1035 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1036 | 1037 | (defmethod handle-spec [RouteBuilder :on-completion] [rb _] 1038 | (.onCompletion rb)) 1039 | 1040 | (derive OnCompletionDefinition ::executor-service-aware) 1041 | 1042 | (defmethod handle-spec [OnCompletionDefinition :on-complete-only] [ocd _] 1043 | (.onCompleteOnly ocd)) 1044 | 1045 | (defmethod handle-spec [OnCompletionDefinition :on-failure-only] [ocd _] 1046 | (.onFailureOnly ocd)) 1047 | 1048 | (defmethod handle-spec [OnCompletionDefinition :on-when] [ocd _ pred] 1049 | (.onWhen ocd pred)) 1050 | 1051 | (defmethod handle-spec [OnCompletionDefinition :use-original-body] [ocd _] 1052 | (.useOriginalBody ocd)) 1053 | 1054 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1055 | ;; ERROR HANDLER BUILDER 1056 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1057 | (defmethod handle-spec [RouteBuilder :error-handler] [rb _ error-handler-builder] 1058 | (.errorHandler rb error-handler-builder)) 1059 | 1060 | (defn error-handler [rb error-handler-spec] 1061 | (.errorHandler (handle-spec rb error-handler-spec))) 1062 | 1063 | (defmethod handle-spec [DefaultErrorHandlerBuilder :redelivery-delay] [ed _ delay] 1064 | (.redeliveryDelay ed delay)) 1065 | 1066 | (defmethod handle-spec [DefaultErrorHandlerBuilder :maximum-redeliveries] [ed _ max] 1067 | (.maximumRedeliveries ed max)) 1068 | 1069 | (defmethod handle-spec [DefaultErrorHandlerBuilder :maximum-redelivery-delay] [ed _ max] 1070 | (.maximumRedeliveryDelay ed max)) 1071 | 1072 | (defmethod handle-spec [DefaultErrorHandlerBuilder :use-exponential-back-off] [ed _] 1073 | (.useExponentialBackOff ed)) 1074 | 1075 | (defmethod handle-spec [DefaultErrorHandlerBuilder :back-off-multiplier] [ed _ m] 1076 | (.backOffMultiplier ed m)) 1077 | 1078 | (defmethod handle-spec [DefaultErrorHandlerBuilder :use-collision-avoidance] [ed _] 1079 | (.useCollisionAvoidance ed)) 1080 | 1081 | (defmethod handle-spec [DefaultErrorHandlerBuilder :retries-exhausted-log-level] [ed _ level] 1082 | (.retriesExhaustedLogLevel ed level)) 1083 | 1084 | (defmethod handle-spec [DefaultErrorHandlerBuilder :retry-attempted-log-level] [ed _ level] 1085 | (.retryAttemptedLogLevel ed level)) 1086 | 1087 | 1088 | (defmethod handle-spec [DefaultErrorHandlerBuilder :log-stack-trace] [ed _ y-or-n] 1089 | (.logStackTrace ed y-or-n)) 1090 | 1091 | (defmethod handle-spec [DefaultErrorHandlerBuilder :log-retry-stack-trace] [ed _ y-or-n] 1092 | (.logRetryStackTrace ed y-or-n)) 1093 | 1094 | (defmethod handle-spec [DefaultErrorHandlerBuilder :log-handled] [ed _ y-or-n] 1095 | (.logHandled ed y-or-n)) 1096 | 1097 | (defmethod handle-spec [DefaultErrorHandlerBuilder :log-exhausted] [ed _ y-or-n] 1098 | (.logExhausted ed y-or-n)) 1099 | 1100 | (defmethod handle-spec [DefaultErrorHandlerBuilder :async-delayed-redelivery] [ed _] 1101 | (.asyncDelayedRedelivery ed)) 1102 | 1103 | (defmethod handle-spec [DefaultErrorHandlerBuilder :use-original-message] [ed _] 1104 | (.useOriginalMessage ed)) 1105 | 1106 | (defmethod handle-spec [DefaultErrorHandlerBuilder :delay-pattern] [ed _ pat] 1107 | (.delayPattern ed pat)) 1108 | 1109 | (defmethod handle-spec [DefaultErrorHandlerBuilder :on-redelivery] [ed _ processor] 1110 | (.onRedelivery ed processor)) 1111 | 1112 | (defmethod handle-spec [DefaultErrorHandlerBuilder :disable-redelivery] [ed _] 1113 | (.disableRedelivery ed)) 1114 | 1115 | (defmethod handle-spec [DefaultErrorHandlerBuilder :executor-service-ref] [ed _ ref] 1116 | (.executorServiceRef ed ref)) 1117 | 1118 | (defmethod handle-spec [DefaultErrorHandlerBuilder :logger] [ed _ l] 1119 | (.logger ed l)) 1120 | 1121 | (defmethod handle-spec [DefaultErrorHandlerBuilder :logging-level] [ed _ l] 1122 | (.loggingLevel ed l)) 1123 | 1124 | (defmethod handle-spec [DefaultErrorHandlerBuilder :log] [ed _ log] 1125 | (.log ed log)) 1126 | 1127 | (defmethod handle-spec [DefaultErrorHandlerBuilder :retry-while] [ed _ expression] 1128 | (.retryWhile ed expression)) 1129 | 1130 | (defmethod handle-spec [DefaultErrorHandlerBuilder :use-original-message] [ed _] 1131 | (.useOriginalMessage ed)) 1132 | 1133 | (defmethod handle-spec [LoggingErrorHandlerBuilder :level] [ed _ l] 1134 | (.level ed l)) 1135 | 1136 | (defmethod handle-spec [LoggingErrorHandlerBuilder :log] [ed _ l] 1137 | (.log ed l)) 1138 | 1139 | (defmethod handle-spec [LoggingErrorHandlerBuilder :log-name] [ed _ name] 1140 | (.logName ed name)) 1141 | 1142 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1143 | 1144 | (defn apply-dsl-part [bldr dsl-part] 1145 | (try 1146 | (if (sequential? dsl-part) 1147 | (apply handle-spec bldr dsl-part) 1148 | (handle-spec bldr dsl-part)) 1149 | (catch Exception e 1150 | (do 1151 | (l/error "Error while applying DSL part: " dsl-part) 1152 | (throw e))))) 1153 | 1154 | (defn apply-route-dsl [root-obj dsl-list] 1155 | (l/info "Parsing route: DSL for route --> " (first dsl-list) " ... ") 1156 | (let [ret (loop [[first & rest] (remove nil? dsl-list) 1157 | res root-obj] 1158 | (if first 1159 | (recur rest (apply-dsl-part res first)) 1160 | res))] 1161 | ret)) 1162 | 1163 | (defn add-route [rb [[key & rest-spec] & rest :as route]] 1164 | (let [ctx (.getContext rb)] 1165 | (condp get key 1166 | #{:error-handler} (apply handle-spec rb [:error-handler (apply-route-dsl (first rest-spec) rest)]) 1167 | #{:on-exception :from :intercept :intercept-from :intercept-send-to-endpoint} (apply-route-dsl rb route) 1168 | nil))) 1169 | 1170 | (defn add-routes [ctx route-specs] 1171 | (let [rb (RouteBuilderImpl. 1172 | (fn [this] 1173 | (doseq [spec route-specs] 1174 | (when (seq spec) 1175 | (add-route this spec))) 1176 | (l/info "Route configure done")))] 1177 | (.addRoutes ctx rb))) 1178 | 1179 | -------------------------------------------------------------------------------- /src/java/com/bpk/cljcamel/RouteBuilderImpl.java: -------------------------------------------------------------------------------- 1 | package com.bpk.cljcamel; 2 | 3 | import org.apache.camel.builder.RouteBuilder; 4 | import clojure.lang.IFn; 5 | 6 | public class RouteBuilderImpl extends RouteBuilder 7 | { 8 | private final IFn fn; 9 | 10 | public RouteBuilderImpl(IFn fn) 11 | { 12 | this.fn = fn; 13 | } 14 | 15 | public void configure() 16 | { 17 | fn.invoke(this); 18 | } 19 | } 20 | --------------------------------------------------------------------------------