Skip to content

Commit

Permalink
Groovy - such property: DELEGATE_FIRST when mapping beans apache#529
Browse files Browse the repository at this point in the history
  • Loading branch information
lburgazzoli committed Oct 23, 2020
1 parent 2085879 commit d9c99d0
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,18 @@ import org.apache.camel.Predicate
import org.apache.camel.Processor

trait Support {
def processor(@DelegatesTo(Exchange) Closure<?> callable) {
Processor processor(@DelegatesTo(Exchange) Closure<?> callable) {
callable.resolveStrategy = Closure.DELEGATE_FIRST

return {
callable.resolveStrategy = DELEGATE_FIRST
callable.call(it)
} as Processor
}

def predicate(@DelegatesTo(Exchange) Closure<?> callable) {
Predicate predicate(@DelegatesTo(Exchange) Closure<?> callable) {
callable.resolveStrategy = Closure.DELEGATE_FIRST

return {
callable.resolveStrategy = DELEGATE_FIRST
return callable.call(it)
} as Predicate
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.k.loader.groovy


import org.apache.camel.k.loader.groovy.support.TestRuntime
import spock.lang.AutoCleanup
import spock.lang.Specification

class GroovySourceLoaderIssuesTest extends Specification{
@AutoCleanup
def runtime = new TestRuntime()

// https://github.com/apache/camel-k-runtime/issues/529
def "github-529"() {
when:
runtime.loadRoutes("classpath:issues/github-529.groovy")
runtime.start()

def result = runtime.camelContext.createFluentProducerTemplate()
.to('direct:process')
.request(Map.class)
then:
result['orderId'] == 'myOderId'
}
}
29 changes: 29 additions & 0 deletions camel-k-loader-groovy/src/test/resources/issues/github-529.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
beans {
processInvoice = processor {
it.out.body = [
orderId: 'myOderId',
datetime: System.currentTimeMillis(),
currency: 'USD',
invoiceId: 'B-0' + (Math.floor(1000 + Math.random() * 9999))
]
}
}

from('direct:process')
.process('processInvoice')

0 comments on commit d9c99d0

Please sign in to comment.