2015-01-22 2 views
0

Apache Camel поставляется с некоторыми относительно хорошими расширениями Groovy, так что вы, например, можете использовать закрытие с DSL Java для определения маршрутов.Используется ли CamelGroovyMethods как классный?

Большинство, если не все, из дополнительных методов, обеспечивающих эти расширения, кажется, находится в классе CamelGroovyMethods со статическими методами, такими как

public static ProcessorDefinition<?> process(ProcessorDefinition<?> self, 
     Closure<?> processorLogic){/* implementation */} 

Как фактическое расширение классов Camel ява понял? CamelGroovyMethods используется как категория где-то, а если да, то где use(CamelGroovyMethods) называется?

+1

Возможно, это добавлено так же, как методы из 'DefaultGroovyMethods', через метапрограммирование и протокол метаобъектов. – Opal

ответ

3

Просто догадаться, но поскольку они называются методами расширения, они, вероятно, были определены как таковые. Посмотрите в банку, вы должны найти файл org.codehaus.groovy.runtime.ExtensionModule в META-INF/services. Посмотрите на Creating an extension module. Я сам использовал эту технику, и она отлично работает, за исключением того, что вы хотите предоставить настраиваемые конструкторы, для чего требуется альтернативный механизм.

... Да, найдено ExtensionModule file in GitHub. Они даже предоставили dsld-файл, чтобы помочь с завершением кода в Eclipse.

+0

Очень ценим. Большое спасибо за ссылку на статью, это поможет мне понять ее немного лучше! –

Смежные вопросы