Hi Guillaume, The endpoint-dsl is really helpful for camel to verify the endpoint setting in the compile time. Now I just have a quick question about how does the camel runtime detect the dependencies of camel route? With the endpoint URI we could use the camel-catalog do this kind of work, with the endpoint-dsl we need to figure out another way to do it.
Willem Jiang Twitter: willemjiang Weibo: 姜宁willem On Wed, Jun 12, 2019 at 5:37 AM Guillaume Nodet <gno...@apache.org> wrote: > > Le mar. 11 juin 2019 à 20:45, Alex Dettinger <aldettin...@gmail.com> a > écrit : > > > Hey Guillaume, nice feature indeed. > > Just a detail when reading the example, I think one could be surprised to > > have x2 from/to at first glance, I mean: > > from(fromFile(... and to(toFile(... > > > > > I do agree. My original idea was to only use file(xxx), but one constraint > is to have a different type for consumers and producers because they have > different options, so we can't use the same method name. So the current > design is a fallback because I haven't found anything better, but I'm open > to suggestions ... > > > > > My 2 cents, > > Alex > > > > > > > > On Tue, Jun 11, 2019 at 7:39 PM Guillaume Nodet <gno...@apache.org> wrote: > > > > > I think I'm done with a first usable pass at the endpoint DSL. > > > I've removed the getters/setters, added 2 flavors of fluent methods (one > > > with the real java type, another one with a String to allow references > > and > > > property placeholder processing), renamed the generated classes to > > > XxxEndpointBuilder and cleaned things a bit. > > > In order to access this API, one would create an EndpointRouteBuilder > > > anonymous class instead of the usual RouteBuilder (see below). The only > > > difference is that it gives immediate access to the fromXxx() and toXxx() > > > methods that are generated as default methods on the interface, so > > there's > > > no need to import anything else. > > > Please have a look and let me know what you think or if we see anything > > to > > > improve. > > > > > > Cheers, > > > Guillaume > > > > > > protected RouteBuilder createRouteBuilder() throws Exception { > > > return new EndpointRouteBuilder() { > > > @Override > > > public void configure() throws Exception { > > > from(fromFile(start).initialDelay(0).delay(10).move(done + > > > "/${file:name}")) > > > .to(toMock("result")); > > > } > > > }; > > > } > > > > > > > > > Le mer. 5 juin 2019 à 23:23, Guillaume Nodet <gno...@apache.org> a > > écrit : > > > > > > > I just pushed a branch called "endpoint-dsl". > > > > > > > > My goal is to experiment with an auto-generated DSL for endpoints, > > mainly > > > > to have a complete and type-safe java DSL for endpoints instead of > > using > > > > URI containing all the parameters. Right now, it compiles but isn't > > > really > > > > usable at a DSL. > > > > I'll get back as soon as I have something which can actually be used so > > > > that we can discuss further various options. > > > > My rough goal is to be able to write something like: > > > > > > > > from(file("target/data/foo").delay(4000).backoffMultiplier(4 > > > > ).backoffIdleThreshold(2).backoffErrorThreshold(3)) > > > > .to(mock("result")) > > > > > > > > instead of > > > > > > > > from( > > > > > > > > > "file://target/data/foo?delay=4000&backoffMultiplier=4&backoffIdleThreshold=2&backoffErrorThreshold=3" > > > > ) > > > > .to("mock:result") > > > > > > > > Stay tuned ! > > > > > > > > -- > > > > ------------------------ > > > > Guillaume Nodet > > > > > > > > > > > > > > -- > > > ------------------------ > > > Guillaume Nodet > > > > > > > > -- > ------------------------ > Guillaume Nodet